| package { |
| default_applicable_licenses: ["Android-Apache-2.0"], |
| } |
| |
| android_app_certificate { |
| name: "MicrodroidTestAppCert", |
| |
| // The default app cert is the same as the default platform cert |
| // (on a test-keys build), which means we end up getting assigned |
| // the permissions via signature and can't reliably disclaim |
| // them. So instead we use our own custom cert. See b/290582742. |
| // Created via: development/tools/make_key microdroid_test_app '/CN=microdroid_test_app' |
| certificate: "microdroid_test_app", |
| } |
| |
| java_defaults { |
| name: "MicrodroidTestAppsDefaults", |
| static_libs: [ |
| "avf_aconfig_flags_java", |
| "com.android.microdroid.testservice-java", |
| "com.android.microdroid.test.vmshare_service-java", |
| "com.android.virt.vm_attestation.testservice-java", |
| "platform-test-annotations", |
| ], |
| certificate: ":MicrodroidTestAppCert", |
| sdk_version: "test_current", |
| jni_uses_platform_apis: true, |
| use_embedded_native_libs: true, |
| // We only support 64-bit ABI, but CTS demands all APKs to be multi-ABI. |
| compile_multilib: "both", |
| } |
| |
| java_defaults { |
| name: "MicrodroidVersionsTestAppDefaults", |
| srcs: ["src/java/**/*.java"], |
| defaults: ["MicrodroidTestAppsDefaults"], |
| static_libs: [ |
| "MicrodroidDeviceTestHelper", |
| "VmAttestationTestUtil", |
| "androidx.test.runner", |
| "androidx.test.ext.junit", |
| "authfs_test_apk_assets", |
| "cbor-java", |
| "truth", |
| "compatibility-common-util-devicesidelib", |
| "measure_io_as_jar", |
| ], |
| jni_libs: [ |
| "MicrodroidTestNativeLib", |
| "MicrodroidIdleNativeLib", |
| "MicrodroidEmptyNativeLib", |
| "MicrodroidExitNativeLib", |
| "MicrodroidPrivateLinkingNativeLib", |
| "MicrodroidCrashNativeLib", |
| "libmicrodroid_testlib_rust", |
| "libvm_attestation_test_payload", |
| |
| // Non-VM payload libraries |
| "libhwtrust_jni", |
| ], |
| min_sdk_version: "33", |
| } |
| |
| DATA = [ |
| ":MicrodroidTestAppUpdated", |
| ":MicrodroidVmShareApp", |
| ":test_microdroid_vendor_image", |
| ":test_microdroid_vendor_image_unsigned", |
| ] |
| |
| android_test { |
| name: "MicrodroidTestApp", |
| defaults: ["MicrodroidVersionsTestAppDefaults"], |
| manifest: "AndroidManifestV5.xml", |
| test_suites: ["general-tests"], |
| test_config_template: "AndroidTestTemplate.xml", |
| auto_gen_config: true, |
| data: DATA, |
| } |
| |
| android_test { |
| name: "MicrodroidTestApp.CTS", |
| defaults: ["MicrodroidVersionsTestAppDefaults"], |
| manifest: "AndroidManifestV5.xml", |
| test_config_template: "AndroidTestTemplate.xml", |
| test_suites: ["cts"], |
| auto_gen_config: true, |
| test_options: { |
| tradefed_options: [ |
| { |
| name: "include-annotation", |
| value: "com.android.compatibility.common.util.CddTest", |
| }, |
| { |
| name: "test-suite-tag", |
| value: "cts", |
| }, |
| ], |
| }, |
| data: DATA, |
| } |
| |
| android_test { |
| name: "MicrodroidTestApp.VTS", |
| defaults: ["MicrodroidVersionsTestAppDefaults"], |
| manifest: "AndroidManifestV5.xml", |
| test_config_template: "AndroidTestTemplate.xml", |
| test_suites: ["vts"], |
| auto_gen_config: true, |
| test_options: { |
| tradefed_options: [ |
| { |
| name: "include-annotation", |
| value: "com.android.compatibility.common.util.VsrTest", |
| }, |
| { |
| name: "test-suite-tag", |
| value: "vts", |
| }, |
| ], |
| }, |
| data: DATA, |
| } |
| |
| android_test { |
| name: "MicrodroidTestApp.GTS", |
| defaults: ["MicrodroidVersionsTestAppDefaults"], |
| manifest: "AndroidManifestV5.xml", |
| test_config_template: "AndroidTestTemplate.xml", |
| test_suites: ["gts"], |
| auto_gen_config: true, |
| test_options: { |
| tradefed_options: [ |
| { |
| name: "include-annotation", |
| value: "com.android.compatibility.common.util.GmsTest", |
| }, |
| { |
| name: "test-suite-tag", |
| value: "gts", |
| }, |
| ], |
| }, |
| data: DATA, |
| } |
| |
| android_test_helper_app { |
| name: "MicrodroidTestAppUpdated", |
| defaults: ["MicrodroidVersionsTestAppDefaults"], |
| manifest: "AndroidManifestV6.xml", |
| } |
| |
| // Defaults shared between MicrodroidTestNativeLib and MicrodroidPayloadInOtherAppNativeLib shared |
| // libs. They are expected to share everything apart from the name, so that one app |
| // (MicrodroidTestApp) can start a payload defined in the another app (MicrodroidVmShareApp). |
| cc_defaults { |
| name: "MicrodroidTestNativeLibDefaults", |
| defaults: ["avf_build_flags_cc"], |
| srcs: ["src/native/testbinary.cpp"], |
| stl: "libc++_static", |
| header_libs: ["vm_payload_restricted_headers"], |
| shared_libs: [ |
| "libbinder_ndk", |
| "libcap", |
| "MicrodroidTestNativeLibSub", |
| "libvm_payload#current", |
| ], |
| static_libs: [ |
| "com.android.microdroid.testservice-ndk", |
| "libbase", |
| "libfstab", |
| "libfsverity_digests_proto_cc", |
| "liblog", |
| "libprotobuf-cpp-lite-ndk", |
| ], |
| } |
| |
| cc_library_shared { |
| name: "MicrodroidPayloadInOtherAppNativeLib", |
| defaults: ["MicrodroidTestNativeLibDefaults"], |
| } |
| |
| cc_library_shared { |
| name: "MicrodroidTestNativeLib", |
| defaults: ["MicrodroidTestNativeLibDefaults"], |
| } |
| |
| cc_library_shared { |
| name: "MicrodroidTestNativeLibSub", |
| defaults: ["avf_build_flags_cc"], |
| srcs: ["src/native/testlib.cpp"], |
| stl: "libc++_static", |
| } |
| |
| cc_library_shared { |
| name: "MicrodroidIdleNativeLib", |
| defaults: ["avf_build_flags_cc"], |
| srcs: ["src/native/idlebinary.cpp"], |
| header_libs: ["vm_payload_headers"], |
| stl: "libc++_static", |
| } |
| |
| // An empty payload missing AVmPayload_main |
| cc_library_shared { |
| name: "MicrodroidEmptyNativeLib", |
| defaults: ["avf_build_flags_cc"], |
| srcs: ["src/native/emptybinary.cpp"], |
| stl: "none", |
| } |
| |
| // A payload that exits immediately on start |
| cc_library_shared { |
| name: "MicrodroidExitNativeLib", |
| defaults: ["avf_build_flags_cc"], |
| srcs: ["src/native/exitbinary.cpp"], |
| header_libs: ["vm_payload_headers"], |
| stl: "libc++_static", |
| } |
| |
| // A payload which tries to link against libselinux, one of private libraries |
| cc_library_shared { |
| name: "MicrodroidPrivateLinkingNativeLib", |
| defaults: ["avf_build_flags_cc"], |
| srcs: ["src/native/idlebinary.cpp"], |
| header_libs: ["vm_payload_headers"], |
| // HACK: linking against "libselinux" will embed libselinux.so into the apk |
| // link against a stub to prevent libselinux.so from being embedded |
| shared_libs: ["libselinux#latest"], |
| stl: "libc++_static", |
| } |
| |
| // A payload that crashes immediately on start |
| cc_library_shared { |
| name: "MicrodroidCrashNativeLib", |
| defaults: ["avf_build_flags_cc"], |
| srcs: ["src/native/crashbinary.cpp"], |
| header_libs: ["vm_payload_headers"], |
| stl: "libc++_static", |
| } |
| |
| // A payload written in Rust, using the Rust wrapper for the VM payload API. |
| rust_ffi_shared { |
| name: "libmicrodroid_testlib_rust", |
| crate_name: "microdroid_testlib_rust", |
| defaults: ["avf_build_flags_rust"], |
| prefer_rlib: true, |
| srcs: ["src/native/testbinary.rs"], |
| compile_multilib: "both", |
| rustlibs: [ |
| "com.android.microdroid.testservice-rust", |
| "libandroid_logger", |
| "libanyhow", |
| "libavflog", |
| "liblog_rust", |
| "libvm_payload_rs", |
| ], |
| } |
| |
| rust_ffi_shared { |
| name: "libhwtrust_jni", |
| crate_name: "hwtrust_jni", |
| srcs: ["src/native/hwtrust_jni.rs"], |
| prefer_rlib: true, |
| rustlibs: [ |
| "libandroid_logger", |
| "libanyhow", |
| "liblog_rust", |
| "libhwtrust", |
| "libjni", |
| ], |
| shared_libs: [ |
| "libcrypto", |
| ], |
| } |