1package { 2 default_applicable_licenses: ["Android-Apache-2.0"], 3} 4 5android_app_certificate { 6 name: "MicrodroidTestAppCert", 7 8 // The default app cert is the same as the default platform cert 9 // (on a test-keys build), which means we end up getting assigned 10 // the permissions via signature and can't reliably disclaim 11 // them. So instead we use our own custom cert. See b/290582742. 12 // Created via: development/tools/make_key microdroid_test_app '/CN=microdroid_test_app' 13 certificate: "microdroid_test_app", 14} 15 16java_defaults { 17 name: "MicrodroidTestAppsDefaults", 18 test_suites: [ 19 "cts", 20 "vts", 21 "general-tests", 22 ], 23 static_libs: [ 24 "com.android.microdroid.testservice-java", 25 "com.android.microdroid.test.vmshare_service-java", 26 "com.android.virt.vm_attestation.testservice-java", 27 ], 28 certificate: ":MicrodroidTestAppCert", 29 sdk_version: "test_current", 30 jni_uses_platform_apis: true, 31 use_embedded_native_libs: true, 32 // We only support 64-bit ABI, but CTS demands all APKs to be multi-ABI. 33 compile_multilib: "both", 34} 35 36java_defaults { 37 name: "MicrodroidVersionsTestAppDefaults", 38 srcs: ["src/java/**/*.java"], 39 defaults: ["MicrodroidTestAppsDefaults"], 40 static_libs: [ 41 "MicrodroidDeviceTestHelper", 42 "VmAttestationTestUtil", 43 "androidx.test.runner", 44 "androidx.test.ext.junit", 45 "authfs_test_apk_assets", 46 "cbor-java", 47 "truth", 48 "compatibility-common-util-devicesidelib", 49 "measure_io_as_jar", 50 ], 51 jni_libs: [ 52 "MicrodroidTestNativeLib", 53 "MicrodroidIdleNativeLib", 54 "MicrodroidEmptyNativeLib", 55 "MicrodroidExitNativeLib", 56 "MicrodroidPrivateLinkingNativeLib", 57 "MicrodroidCrashNativeLib", 58 "libmicrodroid_testlib_rust", 59 "libvm_attestation_test_payload", 60 61 // Non-VM payload libraries 62 "libhwtrust_jni", 63 ], 64 min_sdk_version: "33", 65} 66 67android_test { 68 name: "MicrodroidTestApp", 69 defaults: ["MicrodroidVersionsTestAppDefaults"], 70 manifest: "AndroidManifestV5.xml", 71 // Defined in ../vmshareapp/Android.bp 72 data: [ 73 ":MicrodroidTestAppUpdated", 74 ":MicrodroidVmShareApp", 75 ":test_microdroid_vendor_image", 76 ":test_microdroid_vendor_image_unsigned", 77 ], 78} 79 80android_test_helper_app { 81 name: "MicrodroidTestAppUpdated", 82 defaults: ["MicrodroidVersionsTestAppDefaults"], 83 manifest: "AndroidManifestV6.xml", 84} 85 86// Defaults shared between MicrodroidTestNativeLib and MicrodroidPayloadInOtherAppNativeLib shared 87// libs. They are expected to share everything apart from the name, so that one app 88// (MicrodroidTestApp) can start a payload defined in the another app (MicrodroidVmShareApp). 89cc_defaults { 90 name: "MicrodroidTestNativeLibDefaults", 91 defaults: ["avf_build_flags_cc"], 92 srcs: ["src/native/testbinary.cpp"], 93 stl: "libc++_static", 94 header_libs: ["vm_payload_restricted_headers"], 95 shared_libs: [ 96 "libbinder_ndk", 97 "libcap", 98 "MicrodroidTestNativeLibSub", 99 "libvm_payload#current", 100 ], 101 static_libs: [ 102 "com.android.microdroid.testservice-ndk", 103 "libbase", 104 "libfstab", 105 "libfsverity_digests_proto_cc", 106 "liblog", 107 "libprotobuf-cpp-lite-ndk", 108 ], 109} 110 111cc_library_shared { 112 name: "MicrodroidPayloadInOtherAppNativeLib", 113 defaults: ["MicrodroidTestNativeLibDefaults"], 114} 115 116cc_library_shared { 117 name: "MicrodroidTestNativeLib", 118 defaults: ["MicrodroidTestNativeLibDefaults"], 119} 120 121cc_library_shared { 122 name: "MicrodroidTestNativeLibSub", 123 defaults: ["avf_build_flags_cc"], 124 srcs: ["src/native/testlib.cpp"], 125 stl: "libc++_static", 126} 127 128cc_library_shared { 129 name: "MicrodroidIdleNativeLib", 130 defaults: ["avf_build_flags_cc"], 131 srcs: ["src/native/idlebinary.cpp"], 132 header_libs: ["vm_payload_headers"], 133 stl: "libc++_static", 134} 135 136// An empty payload missing AVmPayload_main 137cc_library_shared { 138 name: "MicrodroidEmptyNativeLib", 139 defaults: ["avf_build_flags_cc"], 140 srcs: ["src/native/emptybinary.cpp"], 141 stl: "none", 142} 143 144// A payload that exits immediately on start 145cc_library_shared { 146 name: "MicrodroidExitNativeLib", 147 defaults: ["avf_build_flags_cc"], 148 srcs: ["src/native/exitbinary.cpp"], 149 header_libs: ["vm_payload_headers"], 150 stl: "libc++_static", 151} 152 153// A payload which tries to link against libselinux, one of private libraries 154cc_library_shared { 155 name: "MicrodroidPrivateLinkingNativeLib", 156 defaults: ["avf_build_flags_cc"], 157 srcs: ["src/native/idlebinary.cpp"], 158 header_libs: ["vm_payload_headers"], 159 // HACK: linking against "libselinux" will embed libselinux.so into the apk 160 // link against a stub to prevent libselinux.so from being embedded 161 shared_libs: ["libselinux#latest"], 162 stl: "libc++_static", 163} 164 165// A payload that crashes immediately on start 166cc_library_shared { 167 name: "MicrodroidCrashNativeLib", 168 defaults: ["avf_build_flags_cc"], 169 srcs: ["src/native/crashbinary.cpp"], 170 header_libs: ["vm_payload_headers"], 171 stl: "libc++_static", 172} 173 174// A payload written in Rust, using the Rust wrapper for the VM payload API. 175rust_ffi_shared { 176 name: "libmicrodroid_testlib_rust", 177 crate_name: "microdroid_testlib_rust", 178 defaults: ["avf_build_flags_rust"], 179 prefer_rlib: true, 180 srcs: ["src/native/testbinary.rs"], 181 compile_multilib: "both", 182 rustlibs: [ 183 "com.android.microdroid.testservice-rust", 184 "libandroid_logger", 185 "libanyhow", 186 "libavflog", 187 "libcstr", 188 "liblog_rust", 189 "libvm_payload_rs", 190 ], 191} 192 193rust_ffi_shared { 194 name: "libhwtrust_jni", 195 crate_name: "hwtrust_jni", 196 srcs: ["src/native/hwtrust_jni.rs"], 197 prefer_rlib: true, 198 rustlibs: [ 199 "libandroid_logger", 200 "libanyhow", 201 "liblog_rust", 202 "libhwtrust", 203 "libjni", 204 ], 205 shared_libs: [ 206 "libcrypto", 207 ], 208} 209