use creator_tools::{
commands::{android, gen_minimal_project},
tools::{AndroidNdk, AndroidSdk},
types::*,
};
#[test]
fn test_android_full() {
let tempdir = tempfile::tempdir().unwrap();
let dir = tempdir.path();
let package_name = gen_minimal_project(&dir).unwrap();
let sdk = AndroidSdk::from_env().unwrap();
let ndk = AndroidNdk::from_env(Some(sdk.sdk_path())).unwrap();
let target_sdk_version = 29;
let profile = Profile::Release;
let build_target = AndroidTarget::Aarch64LinuxAndroid;
android::compile_rust_for_android(
&ndk,
Target::Lib,
build_target,
&dir,
profile,
vec![],
false,
false,
target_sdk_version,
)
.unwrap();
let out_dir = dir
.join("target")
.join(build_target.rust_triple())
.join(profile.as_ref());
let compiled_lib = out_dir.join(format!("lib{}.so", package_name));
assert!(compiled_lib.exists());
let target_dir = dir.join("target");
let manifest = android::gen_minimal_android_manifest(
None,
&package_name,
None,
"0.0.1".to_string(),
None,
None,
target_sdk_version,
None,
None,
true,
);
let apk_build_dir = target_dir.join(&profile).join("apk");
let manifest_path = android::save_android_manifest(&apk_build_dir, &manifest).unwrap();
assert!(manifest_path.exists());
let unaligned_apk_path = android::gen_unaligned_apk(
&sdk,
&dir,
&apk_build_dir,
&manifest_path,
None,
None,
manifest.application.label.unwrap().to_string(),
manifest.uses_sdk.unwrap().target_sdk_version.unwrap(),
)
.unwrap();
assert!(unaligned_apk_path.exists());
android::add_libs_into_apk(
&sdk,
&ndk,
&unaligned_apk_path,
&compiled_lib,
build_target,
profile,
29,
&apk_build_dir,
&target_dir,
)
.unwrap();
let aligned_apk_path =
android::align_apk(&sdk, &unaligned_apk_path, &manifest.package, &apk_build_dir).unwrap();
assert!(aligned_apk_path.exists());
let key = android::gen_debug_key().unwrap();
println!("{:?}", key);
android::sign_apk(&sdk, &aligned_apk_path, key).unwrap();
}