package { default_applicable_licenses: ["Android-Apache-2.0"], } java_defaults { name: "MicrodroidTestAppsDefaults", test_suites: [ "cts", "general-tests", ], static_libs: [ "com.android.microdroid.testservice-java", "com.android.microdroid.test.vmshare_service-java", ], 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", } android_test { name: "MicrodroidTestApp", defaults: ["MicrodroidTestAppsDefaults"], srcs: ["src/java/**/*.java"], static_libs: [ "MicrodroidDeviceTestHelper", "androidx.test.runner", "androidx.test.ext.junit", "authfs_test_apk_assets", "cbor-java", "truth-prebuilt", "compatibility-common-util-devicesidelib", "measure_io_as_jar", ], jni_libs: [ "MicrodroidTestNativeLib", "MicrodroidIdleNativeLib", "MicrodroidEmptyNativeLib", "MicrodroidExitNativeLib", "MicrodroidPrivateLinkingNativeLib", "MicrodroidCrashNativeLib", ], min_sdk_version: "33", // Defined in ../vmshareapp/Android.bp data: [":MicrodroidVmShareApp"], } // 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", 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", srcs: ["src/native/testlib.cpp"], stl: "libc++_static", } cc_library_shared { name: "MicrodroidIdleNativeLib", srcs: ["src/native/idlebinary.cpp"], header_libs: ["vm_payload_headers"], stl: "libc++_static", } // An empty payload missing AVmPayload_main cc_library_shared { name: "MicrodroidEmptyNativeLib", srcs: ["src/native/emptybinary.cpp"], stl: "none", } // A payload that exits immediately on start cc_library_shared { name: "MicrodroidExitNativeLib", 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", 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", srcs: ["src/native/crashbinary.cpp"], header_libs: ["vm_payload_headers"], stl: "libc++_static", }