blob: cb374a55e184970a59c80b573e334d0eef3cd36a [file] [log] [blame]
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: "AndroidTest.xml",
data: DATA,
}
android_test {
name: "MicrodroidTestApp.CTS",
defaults: ["MicrodroidVersionsTestAppDefaults"],
manifest: "AndroidManifestV5.xml",
test_suites: ["cts"],
test_config: ":MicrodroidTestApp.CTS.config",
data: DATA,
}
android_test {
name: "MicrodroidTestApp.VTS",
defaults: ["MicrodroidVersionsTestAppDefaults"],
manifest: "AndroidManifestV5.xml",
test_suites: ["vts"],
test_config: ":MicrodroidTestApp.VTS.config",
data: DATA,
}
genrule {
name: "MicrodroidTestApp.CTS.config",
srcs: ["AndroidTest.xml"],
out: ["out.xml"],
cmd: "sed " +
"-e 's/<!-- PLACEHOLDER_FOR_ANNOTATION -->/" +
"<option name=\"include-annotation\" value=\"com.android.compatibility.common.util.CddTest\" \\/>/' " +
"-e 's/MicrodroidTestApp.apk/MicrodroidTestApp.CTS.apk/' " +
"$(in) > $(out)",
}
genrule {
name: "MicrodroidTestApp.VTS.config",
srcs: ["AndroidTest.xml"],
out: ["out.xml"],
cmd: "sed " +
"-e 's/<!-- PLACEHOLDER_FOR_ANNOTATION -->/" +
"<option name=\"include-annotation\" value=\"com.android.compatibility.common.util.VsrTest\" \\/>/' " +
"-e 's/MicrodroidTestApp.apk/MicrodroidTestApp.VTS.apk/' " +
"$(in) > $(out)",
}
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",
"libcstr",
"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",
],
}