1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
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(()) } }