use android_tools::{aapt2::Aapt2, sdk_path_from_env};
#[test]
fn test_link_files_with_aapt2_to_generate_apk() {
let tempfile = tempfile::tempdir().unwrap();
let tempdir = tempfile.path().to_path_buf();
let user_dirs = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR"));
let res_path = user_dirs
.join("tests")
.join("resources")
.join("res")
.join("android")
.join("mipmap-hdpi");
let compiled_res_path = tempdir.join("compiled_res");
if !compiled_res_path.exists() {
std::fs::create_dir_all(&compiled_res_path).unwrap();
}
let aapt2_compile = Aapt2.compile_incremental(
dunce::simplified(&res_path),
dunce::simplified(&compiled_res_path),
);
let compiled_res = aapt2_compile.run().unwrap();
let manifest_path = user_dirs
.join("tests")
.join("resources")
.join("manifest")
.join("AndroidManifest.xml");
assert!(manifest_path.exists());
let target_sdk_version = 30;
let apk_path = tempdir.join("test.apk");
let sdk_path = sdk_path_from_env().unwrap();
let platforms_path = sdk_path.join("platforms");
let platform_dir = platforms_path.join(format!("android-{}", target_sdk_version));
if !platform_dir.exists() {
panic!("Platform not found");
}
let android_jar = platform_dir.join("android.jar");
if !android_jar.exists() {
panic!("Android.jar not found");
}
let mut aapt2_link = Aapt2.link_compiled_res(Some(compiled_res), &apk_path, &manifest_path);
aapt2_link.android_jar(android_jar).verbose(true);
aapt2_link.run().unwrap();
}