Move APEX handling to a library
Make a library for APEX handling using the microdroid_manager logic as
the basis. Other components are going to need to be able to extract the
keys from APEXs so make the logic reusable and available to host tools.
Test: atest microdroid_manager_test
Test: atest libapexutil_rust.test
Change-Id: I36abf21b59b67046b1464bf47f7be40186926410
diff --git a/libs/apexutil/Android.bp b/libs/apexutil/Android.bp
new file mode 100644
index 0000000..a1a1ca6
--- /dev/null
+++ b/libs/apexutil/Android.bp
@@ -0,0 +1,40 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+rust_defaults {
+ name: "libapexutil_rust.defaults",
+ crate_name: "apexutil",
+ host_supported: true,
+ srcs: ["src/lib.rs"],
+ prefer_rlib: true,
+ edition: "2018",
+ rustlibs: [
+ "libavb_bindgen",
+ "liblog_rust",
+ "libthiserror",
+ "libzip",
+ ],
+}
+
+rust_library {
+ name: "libapexutil_rust",
+ defaults: ["libapexutil_rust.defaults"],
+}
+
+rust_test {
+ name: "libapexutil_rust.test",
+ defaults: ["libapexutil_rust.defaults"],
+ test_suites: ["general-tests"],
+ data: ["tests/data/*"],
+ target: {
+ host: {
+ // TODO(b/204562227): remove once the build does this automatically
+ data_libs: [
+ "libc++",
+ "libcrypto",
+ "libz",
+ ],
+ },
+ },
+}
diff --git a/microdroid_manager/src/payload/apex.rs b/libs/apexutil/src/lib.rs
similarity index 100%
rename from microdroid_manager/src/payload/apex.rs
rename to libs/apexutil/src/lib.rs
diff --git a/microdroid_manager/tests/data/README.md b/libs/apexutil/tests/data/README.md
similarity index 100%
rename from microdroid_manager/tests/data/README.md
rename to libs/apexutil/tests/data/README.md
diff --git a/microdroid_manager/tests/data/test.apex b/libs/apexutil/tests/data/test.apex
similarity index 100%
rename from microdroid_manager/tests/data/test.apex
rename to libs/apexutil/tests/data/test.apex
Binary files differ
diff --git a/microdroid_manager/Android.bp b/microdroid_manager/Android.bp
index e4827aa..203e889 100644
--- a/microdroid_manager/Android.bp
+++ b/microdroid_manager/Android.bp
@@ -14,8 +14,8 @@
"android.system.virtualizationservice-rust",
"android.system.virtualmachineservice-rust",
"libanyhow",
+ "libapexutil_rust",
"libapkverify",
- "libavb_bindgen",
"libbinder_rpc_unstable_bindgen",
"libbinder_rs",
"libbyteorder",
@@ -40,7 +40,6 @@
"libuuid",
"libvsock",
"librand",
- "libzip",
],
shared_libs: [
"libbinder_rpc_unstable",
@@ -71,5 +70,4 @@
enabled: false,
},
},
- data: ["tests/data/*"],
}
diff --git a/microdroid_manager/src/payload.rs b/microdroid_manager/src/payload.rs
index 48535f3..a553ce4 100644
--- a/microdroid_manager/src/payload.rs
+++ b/microdroid_manager/src/payload.rs
@@ -14,12 +14,10 @@
//! Routines for handling payload
-mod apex;
-
use crate::instance::ApexData;
use crate::ioutil::wait_for_file;
use anyhow::Result;
-use apex::verify;
+use apexutil::verify;
use log::info;
use microdroid_metadata::{read_metadata, ApexPayload, Metadata};
use std::time::Duration;