blob: cc0015dfbdc09ca696598b299d8363a6aabb4237 [file] [log] [blame]
Jiyong Parka7266ac2021-05-17 21:57:24 +09001package {
2 default_applicable_licenses: ["Android-Apache-2.0"],
3}
4
Alan Stokesfe6df522023-08-18 15:31:57 +01005android_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
Nikita Ioffe7ffb0142023-02-01 22:22:23 +000016java_defaults {
17 name: "MicrodroidTestAppsDefaults",
Nikita Ioffebac2bcf2023-02-10 00:09:20 +000018 static_libs: [
Jaewan Kim899f85e2024-12-12 18:29:55 -080019 "avf_aconfig_flags_java",
Nikita Ioffebac2bcf2023-02-10 00:09:20 +000020 "com.android.microdroid.testservice-java",
21 "com.android.microdroid.test.vmshare_service-java",
Alice Wang0362f7f2024-03-21 08:16:26 +000022 "com.android.virt.vm_attestation.testservice-java",
Jaewan Kim899f85e2024-12-12 18:29:55 -080023 "platform-test-annotations",
Nikita Ioffebac2bcf2023-02-10 00:09:20 +000024 ],
Alan Stokesfe6df522023-08-18 15:31:57 +010025 certificate: ":MicrodroidTestAppCert",
Nikita Ioffe7ffb0142023-02-01 22:22:23 +000026 sdk_version: "test_current",
27 jni_uses_platform_apis: true,
28 use_embedded_native_libs: true,
29 // We only support 64-bit ABI, but CTS demands all APKs to be multi-ABI.
30 compile_multilib: "both",
Jiyong Park254895d2025-02-18 12:35:49 +090031 lint: {
32 error_checks: ["NewApi"],
33 },
Nikita Ioffe7ffb0142023-02-01 22:22:23 +000034}
35
Shikha Panwar979b9df2024-03-20 19:48:19 +000036java_defaults {
37 name: "MicrodroidVersionsTestAppDefaults",
Jiyong Parka7266ac2021-05-17 21:57:24 +090038 srcs: ["src/java/**/*.java"],
Shikha Panwar979b9df2024-03-20 19:48:19 +000039 defaults: ["MicrodroidTestAppsDefaults"],
Jiyong Parkbda1e212021-10-29 20:13:37 +090040 static_libs: [
Alice Wang7e0843d2022-09-01 11:30:21 +000041 "MicrodroidDeviceTestHelper",
Alice Wanga78d8942024-03-21 12:55:41 +000042 "VmAttestationTestUtil",
Jiyong Parkbda1e212021-10-29 20:13:37 +090043 "androidx.test.runner",
44 "androidx.test.ext.junit",
Andrew Scull6ad64402022-07-04 13:12:53 +000045 "authfs_test_apk_assets",
Andrew Scull61892082022-02-21 00:07:25 +000046 "cbor-java",
Krzysztof KosiƄski9cf23c62023-10-07 00:48:09 +000047 "truth",
Jiyong Park5517b102022-07-11 16:09:19 +090048 "compatibility-common-util-devicesidelib",
Nikita Ioffea7cb3672023-02-24 23:10:34 +000049 "measure_io_as_jar",
Jiyong Parkbda1e212021-10-29 20:13:37 +090050 ],
Alan Stokes38d00f82022-10-03 17:43:45 +010051 jni_libs: [
52 "MicrodroidTestNativeLib",
David Brazdilf88c3152022-11-08 15:36:16 +000053 "MicrodroidIdleNativeLib",
Inseob Kim24358c62022-12-09 15:49:22 +090054 "MicrodroidEmptyNativeLib",
Alan Stokes4a66deb2023-01-27 12:12:00 +000055 "MicrodroidExitNativeLib",
Inseob Kim24358c62022-12-09 15:49:22 +090056 "MicrodroidPrivateLinkingNativeLib",
Inseob Kimab1037d2023-02-08 17:03:31 +090057 "MicrodroidCrashNativeLib",
Alan Stokesc874cd22024-06-11 16:23:18 +010058 "libmicrodroid_testlib_rust",
Alice Wang0362f7f2024-03-21 08:16:26 +000059 "libvm_attestation_test_payload",
Alice Wang56f22392024-07-09 07:53:22 +000060
61 // Non-VM payload libraries
62 "libhwtrust_jni",
Alan Stokes38d00f82022-10-03 17:43:45 +010063 ],
Nikita Ioffe13c401d2025-02-06 00:03:38 +000064 // AVF java APIs were introduced in Android U.
65 min_sdk_version: "34",
Shikha Panwar979b9df2024-03-20 19:48:19 +000066}
67
Jiyong Park57de2552024-12-06 17:18:34 +090068DATA = [
69 ":MicrodroidTestAppUpdated",
Nikita Ioffe2cb8e732025-02-04 00:41:51 +000070 ":MicrodroidTestHelperAppRelaxedRollbackProtection_V5",
71 ":MicrodroidTestHelperAppRelaxedRollbackProtection_V6",
72 ":MicrodroidTestHelperAppRelaxedRollbackProtection_V7_inc_rollback_version",
Nikita Ioffea73451a2025-01-28 17:09:22 +000073 ":MicrodroidTestHelperAppRelaxedRollbackProtection_no_permission",
74 ":MicrodroidTestHelperAppRelaxedRollbackProtection_no_rollback_index",
Jiyong Park57de2552024-12-06 17:18:34 +090075 ":MicrodroidVmShareApp",
76 ":test_microdroid_vendor_image",
77 ":test_microdroid_vendor_image_unsigned",
78]
79
Nikita Ioffe1d0ee112025-01-29 01:44:43 +000080android_test_helper_app {
Nikita Ioffe2cb8e732025-02-04 00:41:51 +000081 name: "MicrodroidTestHelperAppRelaxedRollbackProtection_V5",
Nikita Ioffe1d0ee112025-01-29 01:44:43 +000082 defaults: ["MicrodroidTestAppsDefaults"],
83 manifest: "AndroidManifestV5_relaxed_rollback_protection.xml",
84 jni_libs: [
Nikita Ioffea73451a2025-01-28 17:09:22 +000085 "MicrodroidTestNativeLib",
86 "MicrodroidTestNativeLibWithLibIcu",
87 ],
88 min_sdk_version: "33",
89}
90
91android_test_helper_app {
Nikita Ioffe2cb8e732025-02-04 00:41:51 +000092 name: "MicrodroidTestHelperAppRelaxedRollbackProtection_V6",
93 defaults: ["MicrodroidTestAppsDefaults"],
94 manifest: "AndroidManifestV6_relaxed_rollback_protection.xml",
95 jni_libs: [
96 "MicrodroidTestNativeLib",
97 "MicrodroidTestNativeLibWithLibIcu",
98 ],
99 min_sdk_version: "33",
100}
101
102android_test_helper_app {
103 name: "MicrodroidTestHelperAppRelaxedRollbackProtection_V7_inc_rollback_version",
104 defaults: ["MicrodroidTestAppsDefaults"],
105 manifest: "AndroidManifestV7_relaxed_rollback_protection_inc_rollback_version.xml",
106 jni_libs: [
107 "MicrodroidTestNativeLib",
108 "MicrodroidTestNativeLibWithLibIcu",
109 ],
110 min_sdk_version: "33",
111}
112
113android_test_helper_app {
Nikita Ioffea73451a2025-01-28 17:09:22 +0000114 name: "MicrodroidTestHelperAppRelaxedRollbackProtection_no_rollback_index",
115 defaults: ["MicrodroidTestAppsDefaults"],
116 manifest: "AndroidManifestV5_relaxed_rollback_protection_no_rollback_index.xml",
117 jni_libs: [
118 "MicrodroidTestNativeLib",
119 "MicrodroidTestNativeLibWithLibIcu",
120 ],
121 min_sdk_version: "33",
122}
123
124android_test_helper_app {
125 name: "MicrodroidTestHelperAppRelaxedRollbackProtection_no_permission",
126 defaults: ["MicrodroidTestAppsDefaults"],
127 manifest: "AndroidManifestV5_relaxed_rollback_protection_no_permission.xml",
128 jni_libs: [
129 "MicrodroidTestNativeLib",
Nikita Ioffe1d0ee112025-01-29 01:44:43 +0000130 "MicrodroidTestNativeLibWithLibIcu",
131 ],
132 min_sdk_version: "33",
133}
134
Shikha Panwar979b9df2024-03-20 19:48:19 +0000135android_test {
136 name: "MicrodroidTestApp",
137 defaults: ["MicrodroidVersionsTestAppDefaults"],
138 manifest: "AndroidManifestV5.xml",
Jiyong Park57de2552024-12-06 17:18:34 +0900139 test_suites: ["general-tests"],
Jiyong Park1a3b5a42024-12-27 17:42:36 +0900140 test_config_template: "AndroidTestTemplate.xml",
141 auto_gen_config: true,
Jiyong Park57de2552024-12-06 17:18:34 +0900142 data: DATA,
143}
144
145android_test {
146 name: "MicrodroidTestApp.CTS",
147 defaults: ["MicrodroidVersionsTestAppDefaults"],
148 manifest: "AndroidManifestV5.xml",
Jiyong Park1a3b5a42024-12-27 17:42:36 +0900149 test_config_template: "AndroidTestTemplate.xml",
Jiyong Park57de2552024-12-06 17:18:34 +0900150 test_suites: ["cts"],
Jiyong Park1a3b5a42024-12-27 17:42:36 +0900151 auto_gen_config: true,
152 test_options: {
153 tradefed_options: [
154 {
155 name: "include-annotation",
156 value: "com.android.compatibility.common.util.CddTest",
157 },
158 {
159 name: "test-suite-tag",
160 value: "cts",
161 },
162 ],
163 },
Jiyong Park57de2552024-12-06 17:18:34 +0900164 data: DATA,
165}
166
167android_test {
168 name: "MicrodroidTestApp.VTS",
169 defaults: ["MicrodroidVersionsTestAppDefaults"],
170 manifest: "AndroidManifestV5.xml",
Jiyong Park1a3b5a42024-12-27 17:42:36 +0900171 test_config_template: "AndroidTestTemplate.xml",
Jiyong Park57de2552024-12-06 17:18:34 +0900172 test_suites: ["vts"],
Jiyong Park1a3b5a42024-12-27 17:42:36 +0900173 auto_gen_config: true,
174 test_options: {
175 tradefed_options: [
176 {
177 name: "include-annotation",
178 value: "com.android.compatibility.common.util.VsrTest",
179 },
180 {
181 name: "test-suite-tag",
182 value: "vts",
183 },
184 ],
185 },
Jiyong Park57de2552024-12-06 17:18:34 +0900186 data: DATA,
187}
188
Jiyong Park1a3b5a42024-12-27 17:42:36 +0900189android_test {
190 name: "MicrodroidTestApp.GTS",
191 defaults: ["MicrodroidVersionsTestAppDefaults"],
192 manifest: "AndroidManifestV5.xml",
193 test_config_template: "AndroidTestTemplate.xml",
194 test_suites: ["gts"],
195 auto_gen_config: true,
196 test_options: {
197 tradefed_options: [
198 {
199 name: "include-annotation",
200 value: "com.android.compatibility.common.util.GmsTest",
201 },
202 {
203 name: "test-suite-tag",
204 value: "gts",
205 },
206 ],
207 },
208 data: DATA,
Jiyong Parka7266ac2021-05-17 21:57:24 +0900209}
210
Shikha Panwar979b9df2024-03-20 19:48:19 +0000211android_test_helper_app {
212 name: "MicrodroidTestAppUpdated",
213 defaults: ["MicrodroidVersionsTestAppDefaults"],
214 manifest: "AndroidManifestV6.xml",
215}
216
Nikita Ioffe7ffb0142023-02-01 22:22:23 +0000217// Defaults shared between MicrodroidTestNativeLib and MicrodroidPayloadInOtherAppNativeLib shared
218// libs. They are expected to share everything apart from the name, so that one app
219// (MicrodroidTestApp) can start a payload defined in the another app (MicrodroidVmShareApp).
220cc_defaults {
221 name: "MicrodroidTestNativeLibDefaults",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000222 defaults: ["avf_build_flags_cc"],
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900223 srcs: ["src/native/testbinary.cpp"],
Alan Stokes4bff0d62022-10-28 14:29:59 +0100224 stl: "libc++_static",
Alan Stokesd4ea5a82022-11-10 12:17:42 +0000225 header_libs: ["vm_payload_restricted_headers"],
Andrew Scull66616612021-06-17 16:41:03 +0000226 shared_libs: [
Andrew Scull66616612021-06-17 16:41:03 +0000227 "libbinder_ndk",
Nikita Ioffe3452ee22022-12-15 00:31:56 +0000228 "libcap",
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900229 "MicrodroidTestNativeLibSub",
Alan Stokesbcc2ec22022-10-31 17:02:50 +0000230 "libvm_payload#current",
Andrew Scull66616612021-06-17 16:41:03 +0000231 ],
Inseob Kimdb319702022-01-20 13:12:43 +0900232 static_libs: [
Alan Stokes18986452022-10-28 11:11:11 +0100233 "com.android.microdroid.testservice-ndk",
Alan Stokes4bff0d62022-10-28 14:29:59 +0100234 "libbase",
Nikita Ioffe29e15c82023-02-25 02:31:51 +0000235 "libfstab",
Inseob Kimdb319702022-01-20 13:12:43 +0900236 "libfsverity_digests_proto_cc",
237 "liblog",
238 "libprotobuf-cpp-lite-ndk",
239 ],
Nikita Ioffe3e3fdf02025-01-15 14:20:27 +0000240 // We've added support for updatable payloads in Android U.
241 min_sdk_version: "UpsideDownCake",
Jiyong Parka7266ac2021-05-17 21:57:24 +0900242}
Jiyong Park6de08572021-06-14 21:13:32 +0900243
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900244cc_library_shared {
Nikita Ioffe7ffb0142023-02-01 22:22:23 +0000245 name: "MicrodroidPayloadInOtherAppNativeLib",
246 defaults: ["MicrodroidTestNativeLibDefaults"],
247}
248
249cc_library_shared {
250 name: "MicrodroidTestNativeLib",
251 defaults: ["MicrodroidTestNativeLibDefaults"],
252}
253
254cc_library_shared {
Nikita Ioffeaa9f6032025-01-21 18:06:46 +0000255 name: "MicrodroidTestNativeLibWithLibIcu",
256 defaults: ["MicrodroidTestNativeLibDefaults"],
257 shared_libs: [
258 "libicu",
259 ],
260 cflags: [
261 "-D__MICRODROID_TEST_PAYLOAD_USES_LIBICU__",
262 ],
263}
264
265cc_library_shared {
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900266 name: "MicrodroidTestNativeLibSub",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000267 defaults: ["avf_build_flags_cc"],
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900268 srcs: ["src/native/testlib.cpp"],
Alan Stokes4bff0d62022-10-28 14:29:59 +0100269 stl: "libc++_static",
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900270}
Alan Stokes08c421a2022-11-15 16:06:26 +0000271
272cc_library_shared {
273 name: "MicrodroidIdleNativeLib",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000274 defaults: ["avf_build_flags_cc"],
Alan Stokes08c421a2022-11-15 16:06:26 +0000275 srcs: ["src/native/idlebinary.cpp"],
276 header_libs: ["vm_payload_headers"],
277 stl: "libc++_static",
278}
Inseob Kim24358c62022-12-09 15:49:22 +0900279
280// An empty payload missing AVmPayload_main
281cc_library_shared {
282 name: "MicrodroidEmptyNativeLib",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000283 defaults: ["avf_build_flags_cc"],
Inseob Kim24358c62022-12-09 15:49:22 +0900284 srcs: ["src/native/emptybinary.cpp"],
285 stl: "none",
286}
287
Alan Stokes4a66deb2023-01-27 12:12:00 +0000288// A payload that exits immediately on start
289cc_library_shared {
290 name: "MicrodroidExitNativeLib",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000291 defaults: ["avf_build_flags_cc"],
Alan Stokes4a66deb2023-01-27 12:12:00 +0000292 srcs: ["src/native/exitbinary.cpp"],
293 header_libs: ["vm_payload_headers"],
294 stl: "libc++_static",
295}
296
Inseob Kim24358c62022-12-09 15:49:22 +0900297// A payload which tries to link against libselinux, one of private libraries
298cc_library_shared {
299 name: "MicrodroidPrivateLinkingNativeLib",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000300 defaults: ["avf_build_flags_cc"],
Inseob Kim24358c62022-12-09 15:49:22 +0900301 srcs: ["src/native/idlebinary.cpp"],
302 header_libs: ["vm_payload_headers"],
303 // HACK: linking against "libselinux" will embed libselinux.so into the apk
304 // link against a stub to prevent libselinux.so from being embedded
305 shared_libs: ["libselinux#latest"],
306 stl: "libc++_static",
307}
Inseob Kimab1037d2023-02-08 17:03:31 +0900308
309// A payload that crashes immediately on start
310cc_library_shared {
311 name: "MicrodroidCrashNativeLib",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000312 defaults: ["avf_build_flags_cc"],
Inseob Kimab1037d2023-02-08 17:03:31 +0900313 srcs: ["src/native/crashbinary.cpp"],
314 header_libs: ["vm_payload_headers"],
315 stl: "libc++_static",
316}
Alan Stokesc874cd22024-06-11 16:23:18 +0100317
318// A payload written in Rust, using the Rust wrapper for the VM payload API.
319rust_ffi_shared {
320 name: "libmicrodroid_testlib_rust",
321 crate_name: "microdroid_testlib_rust",
322 defaults: ["avf_build_flags_rust"],
323 prefer_rlib: true,
324 srcs: ["src/native/testbinary.rs"],
325 compile_multilib: "both",
326 rustlibs: [
327 "com.android.microdroid.testservice-rust",
328 "libandroid_logger",
329 "libanyhow",
330 "libavflog",
Alan Stokesc874cd22024-06-11 16:23:18 +0100331 "liblog_rust",
332 "libvm_payload_rs",
333 ],
334}
Alice Wang56f22392024-07-09 07:53:22 +0000335
336rust_ffi_shared {
337 name: "libhwtrust_jni",
338 crate_name: "hwtrust_jni",
339 srcs: ["src/native/hwtrust_jni.rs"],
340 prefer_rlib: true,
341 rustlibs: [
342 "libandroid_logger",
343 "libanyhow",
344 "liblog_rust",
345 "libhwtrust",
346 "libjni",
347 ],
348 shared_libs: [
349 "libcrypto",
350 ],
351}