cargo_flutter/package/
apk.rs1use crate::cargo::Cargo;
2use crate::package::Package;
3use cargo::core::manifest::TargetKind;
4use failure::Error;
5use lib_cargo_apk::{AndroidConfig, BuildTarget, SharedLibraries, SharedLibrary};
6use serde::Deserialize;
7
8#[derive(Debug, Default, Clone, Deserialize)]
9pub struct TomlApk {}
10
11pub struct Apk {
12 toml: AndroidConfig,
13}
14
15impl Apk {
16 pub fn new(toml: AndroidConfig) -> Self {
17 Self { toml }
18 }
19
20 pub fn build(&self, cargo: &Cargo, package: &Package, _sign: bool) -> Result<(), Error> {
21 let mut config = self.toml.clone();
22 config.default_target_config.assets =
23 Some(package.assets()[0].path().to_str().unwrap().to_string());
24 let mut libs = SharedLibraries {
25 shared_libraries: Default::default(),
26 };
27 let target = BuildTarget::new(package.name().to_string(), TargetKind::Bin);
28 for lib in package.libs() {
29 libs.shared_libraries.insert(
30 target.clone(),
31 SharedLibrary {
32 abi: self.toml.build_targets[0],
33 path: lib.path().to_owned(),
34 filename: lib.name().to_owned(),
35 },
36 );
37 }
38
39 lib_cargo_apk::build_apks(&config, &cargo.build_dir(), libs)?;
40 Ok(())
41 }
42}