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", lint: { error_checks: ["NewApi"], }, } 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", ], // AVF java APIs were introduced in Android U. min_sdk_version: "34", } DATA = [ ":MicrodroidTestAppUpdated", ":MicrodroidTestHelperAppRelaxedRollbackProtection_V5", ":MicrodroidTestHelperAppRelaxedRollbackProtection_V6", ":MicrodroidTestHelperAppRelaxedRollbackProtection_V7_inc_rollback_version", ":MicrodroidTestHelperAppRelaxedRollbackProtection_no_permission", ":MicrodroidTestHelperAppRelaxedRollbackProtection_no_rollback_index", ":MicrodroidVmShareApp", ":test_microdroid_vendor_image", ":test_microdroid_vendor_image_unsigned", ] android_test_helper_app { name: "MicrodroidTestHelperAppRelaxedRollbackProtection_V5", defaults: ["MicrodroidTestAppsDefaults"], manifest: "AndroidManifestV5_relaxed_rollback_protection.xml", jni_libs: [ "MicrodroidTestNativeLib", "MicrodroidTestNativeLibWithLibIcu", ], min_sdk_version: "33", } android_test_helper_app { name: "MicrodroidTestHelperAppRelaxedRollbackProtection_V6", defaults: ["MicrodroidTestAppsDefaults"], manifest: "AndroidManifestV6_relaxed_rollback_protection.xml", jni_libs: [ "MicrodroidTestNativeLib", "MicrodroidTestNativeLibWithLibIcu", ], min_sdk_version: "33", } android_test_helper_app { name: "MicrodroidTestHelperAppRelaxedRollbackProtection_V7_inc_rollback_version", defaults: ["MicrodroidTestAppsDefaults"], manifest: "AndroidManifestV7_relaxed_rollback_protection_inc_rollback_version.xml", jni_libs: [ "MicrodroidTestNativeLib", "MicrodroidTestNativeLibWithLibIcu", ], min_sdk_version: "33", } android_test_helper_app { name: "MicrodroidTestHelperAppRelaxedRollbackProtection_no_rollback_index", defaults: ["MicrodroidTestAppsDefaults"], manifest: "AndroidManifestV5_relaxed_rollback_protection_no_rollback_index.xml", jni_libs: [ "MicrodroidTestNativeLib", "MicrodroidTestNativeLibWithLibIcu", ], min_sdk_version: "33", } android_test_helper_app { name: "MicrodroidTestHelperAppRelaxedRollbackProtection_no_permission", defaults: ["MicrodroidTestAppsDefaults"], manifest: "AndroidManifestV5_relaxed_rollback_protection_no_permission.xml", jni_libs: [ "MicrodroidTestNativeLib", "MicrodroidTestNativeLibWithLibIcu", ], min_sdk_version: "33", } 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", ], // We've added support for updatable payloads in Android U. min_sdk_version: "UpsideDownCake", } cc_library_shared { name: "MicrodroidPayloadInOtherAppNativeLib", defaults: ["MicrodroidTestNativeLibDefaults"], } cc_library_shared { name: "MicrodroidTestNativeLib", defaults: ["MicrodroidTestNativeLibDefaults"], } cc_library_shared { name: "MicrodroidTestNativeLibWithLibIcu", defaults: ["MicrodroidTestNativeLibDefaults"], shared_libs: [ "libicu", ], cflags: [ "-D__MICRODROID_TEST_PAYLOAD_USES_LIBICU__", ], } 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", ], }