Parse APK manifest to extract version etc
Add libapkmanifest to encapsulate the parsing, with a small C++
library on top of libandroidfw.
Extract the zip-handling code from libapkverify into a separate
libapkzip, and fix up a bunch of tests tests, to keep the build happy.
We don't do anything with the manifest information except log it; more
to come in another CL.
Bug: 299591171
Test: atest libapkzip.test libapkverify.integration_test
libapkverify.test
Test: Manual - run VM, inspect logs.
Change-Id: I56d3bb7309d43ecb598a33320705d31948710f83
diff --git a/libs/apkmanifest/Android.bp b/libs/apkmanifest/Android.bp
new file mode 100644
index 0000000..e6fcbef
--- /dev/null
+++ b/libs/apkmanifest/Android.bp
@@ -0,0 +1,46 @@
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_library_shared {
+ name: "libapkmanifest_native",
+ srcs: ["native/*.cpp"],
+ shared_libs: [
+ "libandroidfw",
+ "libbase",
+ "liblog",
+ "libutils",
+ ],
+}
+
+rust_bindgen {
+ name: "libapkmanifest_bindgen",
+ defaults: ["avf_build_flags_rust"],
+ edition: "2021",
+ wrapper_src: "native/apkmanifest.hpp",
+ crate_name: "apkmanifest_bindgen",
+ source_stem: "bindings",
+ bindgen_flags: [
+ "--default-enum-style rust",
+ ],
+}
+
+rust_library {
+ name: "libapkmanifest",
+ crate_name: "apkmanifest",
+ defaults: ["avf_build_flags_rust"],
+ edition: "2021",
+ srcs: ["src/apkmanifest.rs"],
+ rustlibs: [
+ "libanyhow",
+ "libapkzip",
+ "libapkmanifest_bindgen",
+ "libscopeguard",
+ ],
+ shared_libs: ["libapkmanifest_native"],
+ multilib: {
+ lib32: {
+ enabled: false,
+ },
+ },
+}