cargo-flutter 0.1.7

Tool for building flutter-rs projects.
Documentation
use crate::cargo::Cargo;
use crate::package::Package;
use cargo::core::manifest::TargetKind;
use lib_cargo_apk::{AndroidConfig, BuildTarget, SharedLibraries, SharedLibrary};
use serde::Deserialize;

#[derive(Debug, Default, Clone, Deserialize)]
pub struct TomlApk {}

pub struct Apk {
    toml: AndroidConfig,
}

impl Apk {
    pub fn new(toml: AndroidConfig) -> Self {
        Self { toml }
    }

    pub fn build(
        &self,
        cargo: &Cargo,
        package: &Package,
        _sign: bool,
    ) -> Result<(), Box<dyn std::error::Error>> {
        let mut config = self.toml.clone();
        config.default_target_config.assets =
            Some(package.assets()[0].path().to_str().unwrap().to_string());
        let mut libs = SharedLibraries {
            shared_libraries: Default::default(),
        };
        let target = BuildTarget::new(package.name().to_string(), TargetKind::Bin);
        for lib in package.libs() {
            libs.shared_libraries.insert(
                target.clone(),
                SharedLibrary {
                    abi: self.toml.build_targets[0],
                    path: lib.path().to_owned(),
                    filename: lib.name().to_owned(),
                },
            );
        }

        lib_cargo_apk::build_apks(&config, &cargo.build_dir(), libs)?;
        Ok(())
    }
}