blob: 01af51c51a14231eb1139cb49f8844727e8a76fa [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: [
19 "com.android.microdroid.testservice-java",
20 "com.android.microdroid.test.vmshare_service-java",
Alice Wang0362f7f2024-03-21 08:16:26 +000021 "com.android.virt.vm_attestation.testservice-java",
Nikita Ioffebac2bcf2023-02-10 00:09:20 +000022 ],
Alan Stokesfe6df522023-08-18 15:31:57 +010023 certificate: ":MicrodroidTestAppCert",
Nikita Ioffe7ffb0142023-02-01 22:22:23 +000024 sdk_version: "test_current",
25 jni_uses_platform_apis: true,
26 use_embedded_native_libs: true,
27 // We only support 64-bit ABI, but CTS demands all APKs to be multi-ABI.
28 compile_multilib: "both",
29}
30
Shikha Panwar979b9df2024-03-20 19:48:19 +000031java_defaults {
32 name: "MicrodroidVersionsTestAppDefaults",
Jiyong Parka7266ac2021-05-17 21:57:24 +090033 srcs: ["src/java/**/*.java"],
Shikha Panwar979b9df2024-03-20 19:48:19 +000034 defaults: ["MicrodroidTestAppsDefaults"],
Jiyong Parkbda1e212021-10-29 20:13:37 +090035 static_libs: [
Alice Wang7e0843d2022-09-01 11:30:21 +000036 "MicrodroidDeviceTestHelper",
Alice Wanga78d8942024-03-21 12:55:41 +000037 "VmAttestationTestUtil",
Jiyong Parkbda1e212021-10-29 20:13:37 +090038 "androidx.test.runner",
39 "androidx.test.ext.junit",
Andrew Scull6ad64402022-07-04 13:12:53 +000040 "authfs_test_apk_assets",
Andrew Scull61892082022-02-21 00:07:25 +000041 "cbor-java",
Krzysztof KosiƄski9cf23c62023-10-07 00:48:09 +000042 "truth",
Jiyong Park5517b102022-07-11 16:09:19 +090043 "compatibility-common-util-devicesidelib",
Nikita Ioffea7cb3672023-02-24 23:10:34 +000044 "measure_io_as_jar",
Jiyong Parkbda1e212021-10-29 20:13:37 +090045 ],
Alan Stokes38d00f82022-10-03 17:43:45 +010046 jni_libs: [
47 "MicrodroidTestNativeLib",
David Brazdilf88c3152022-11-08 15:36:16 +000048 "MicrodroidIdleNativeLib",
Inseob Kim24358c62022-12-09 15:49:22 +090049 "MicrodroidEmptyNativeLib",
Alan Stokes4a66deb2023-01-27 12:12:00 +000050 "MicrodroidExitNativeLib",
Inseob Kim24358c62022-12-09 15:49:22 +090051 "MicrodroidPrivateLinkingNativeLib",
Inseob Kimab1037d2023-02-08 17:03:31 +090052 "MicrodroidCrashNativeLib",
Alan Stokesc874cd22024-06-11 16:23:18 +010053 "libmicrodroid_testlib_rust",
Alice Wang0362f7f2024-03-21 08:16:26 +000054 "libvm_attestation_test_payload",
Alice Wang56f22392024-07-09 07:53:22 +000055
56 // Non-VM payload libraries
57 "libhwtrust_jni",
Alan Stokes38d00f82022-10-03 17:43:45 +010058 ],
Jiyong Park968635d2022-08-22 10:18:17 +090059 min_sdk_version: "33",
Shikha Panwar979b9df2024-03-20 19:48:19 +000060}
61
Jiyong Park57de2552024-12-06 17:18:34 +090062DATA = [
63 ":MicrodroidTestAppUpdated",
64 ":MicrodroidVmShareApp",
65 ":test_microdroid_vendor_image",
66 ":test_microdroid_vendor_image_unsigned",
67]
68
Shikha Panwar979b9df2024-03-20 19:48:19 +000069android_test {
70 name: "MicrodroidTestApp",
71 defaults: ["MicrodroidVersionsTestAppDefaults"],
72 manifest: "AndroidManifestV5.xml",
Jiyong Park57de2552024-12-06 17:18:34 +090073 test_suites: ["general-tests"],
74 test_config: "AndroidTest.xml",
75 data: DATA,
76}
77
78android_test {
79 name: "MicrodroidTestApp.CTS",
80 defaults: ["MicrodroidVersionsTestAppDefaults"],
81 manifest: "AndroidManifestV5.xml",
82 test_suites: ["cts"],
83 test_config: ":MicrodroidTestApp.CTS.config",
84 data: DATA,
85}
86
87android_test {
88 name: "MicrodroidTestApp.VTS",
89 defaults: ["MicrodroidVersionsTestAppDefaults"],
90 manifest: "AndroidManifestV5.xml",
91 test_suites: ["vts"],
92 test_config: ":MicrodroidTestApp.VTS.config",
93 data: DATA,
94}
95
96genrule {
97 name: "MicrodroidTestApp.CTS.config",
98 srcs: ["AndroidTest.xml"],
99 out: ["out.xml"],
100 cmd: "sed " +
101 "-e 's/<!-- PLACEHOLDER_FOR_ANNOTATION -->/" +
102 "<option name=\"include-annotation\" value=\"com.android.compatibility.common.util.CddTest\" \\/>/' " +
103 "-e 's/MicrodroidTestApp.apk/MicrodroidTestApp.CTS.apk/' " +
104 "$(in) > $(out)",
105}
106
107genrule {
108 name: "MicrodroidTestApp.VTS.config",
109 srcs: ["AndroidTest.xml"],
110 out: ["out.xml"],
111 cmd: "sed " +
112 "-e 's/<!-- PLACEHOLDER_FOR_ANNOTATION -->/" +
113 "<option name=\"include-annotation\" value=\"com.android.compatibility.common.util.VsrTest\" \\/>/' " +
114 "-e 's/MicrodroidTestApp.apk/MicrodroidTestApp.VTS.apk/' " +
115 "$(in) > $(out)",
Jiyong Parka7266ac2021-05-17 21:57:24 +0900116}
117
Shikha Panwar979b9df2024-03-20 19:48:19 +0000118android_test_helper_app {
119 name: "MicrodroidTestAppUpdated",
120 defaults: ["MicrodroidVersionsTestAppDefaults"],
121 manifest: "AndroidManifestV6.xml",
122}
123
Nikita Ioffe7ffb0142023-02-01 22:22:23 +0000124// Defaults shared between MicrodroidTestNativeLib and MicrodroidPayloadInOtherAppNativeLib shared
125// libs. They are expected to share everything apart from the name, so that one app
126// (MicrodroidTestApp) can start a payload defined in the another app (MicrodroidVmShareApp).
127cc_defaults {
128 name: "MicrodroidTestNativeLibDefaults",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000129 defaults: ["avf_build_flags_cc"],
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900130 srcs: ["src/native/testbinary.cpp"],
Alan Stokes4bff0d62022-10-28 14:29:59 +0100131 stl: "libc++_static",
Alan Stokesd4ea5a82022-11-10 12:17:42 +0000132 header_libs: ["vm_payload_restricted_headers"],
Andrew Scull66616612021-06-17 16:41:03 +0000133 shared_libs: [
Andrew Scull66616612021-06-17 16:41:03 +0000134 "libbinder_ndk",
Nikita Ioffe3452ee22022-12-15 00:31:56 +0000135 "libcap",
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900136 "MicrodroidTestNativeLibSub",
Alan Stokesbcc2ec22022-10-31 17:02:50 +0000137 "libvm_payload#current",
Andrew Scull66616612021-06-17 16:41:03 +0000138 ],
Inseob Kimdb319702022-01-20 13:12:43 +0900139 static_libs: [
Alan Stokes18986452022-10-28 11:11:11 +0100140 "com.android.microdroid.testservice-ndk",
Alan Stokes4bff0d62022-10-28 14:29:59 +0100141 "libbase",
Nikita Ioffe29e15c82023-02-25 02:31:51 +0000142 "libfstab",
Inseob Kimdb319702022-01-20 13:12:43 +0900143 "libfsverity_digests_proto_cc",
144 "liblog",
145 "libprotobuf-cpp-lite-ndk",
146 ],
Jiyong Parka7266ac2021-05-17 21:57:24 +0900147}
Jiyong Park6de08572021-06-14 21:13:32 +0900148
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900149cc_library_shared {
Nikita Ioffe7ffb0142023-02-01 22:22:23 +0000150 name: "MicrodroidPayloadInOtherAppNativeLib",
151 defaults: ["MicrodroidTestNativeLibDefaults"],
152}
153
154cc_library_shared {
155 name: "MicrodroidTestNativeLib",
156 defaults: ["MicrodroidTestNativeLibDefaults"],
157}
158
159cc_library_shared {
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900160 name: "MicrodroidTestNativeLibSub",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000161 defaults: ["avf_build_flags_cc"],
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900162 srcs: ["src/native/testlib.cpp"],
Alan Stokes4bff0d62022-10-28 14:29:59 +0100163 stl: "libc++_static",
Jiyong Parkfe5b28e2021-06-24 00:19:02 +0900164}
Alan Stokes08c421a2022-11-15 16:06:26 +0000165
166cc_library_shared {
167 name: "MicrodroidIdleNativeLib",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000168 defaults: ["avf_build_flags_cc"],
Alan Stokes08c421a2022-11-15 16:06:26 +0000169 srcs: ["src/native/idlebinary.cpp"],
170 header_libs: ["vm_payload_headers"],
171 stl: "libc++_static",
172}
Inseob Kim24358c62022-12-09 15:49:22 +0900173
174// An empty payload missing AVmPayload_main
175cc_library_shared {
176 name: "MicrodroidEmptyNativeLib",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000177 defaults: ["avf_build_flags_cc"],
Inseob Kim24358c62022-12-09 15:49:22 +0900178 srcs: ["src/native/emptybinary.cpp"],
179 stl: "none",
180}
181
Alan Stokes4a66deb2023-01-27 12:12:00 +0000182// A payload that exits immediately on start
183cc_library_shared {
184 name: "MicrodroidExitNativeLib",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000185 defaults: ["avf_build_flags_cc"],
Alan Stokes4a66deb2023-01-27 12:12:00 +0000186 srcs: ["src/native/exitbinary.cpp"],
187 header_libs: ["vm_payload_headers"],
188 stl: "libc++_static",
189}
190
Inseob Kim24358c62022-12-09 15:49:22 +0900191// A payload which tries to link against libselinux, one of private libraries
192cc_library_shared {
193 name: "MicrodroidPrivateLinkingNativeLib",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000194 defaults: ["avf_build_flags_cc"],
Inseob Kim24358c62022-12-09 15:49:22 +0900195 srcs: ["src/native/idlebinary.cpp"],
196 header_libs: ["vm_payload_headers"],
197 // HACK: linking against "libselinux" will embed libselinux.so into the apk
198 // link against a stub to prevent libselinux.so from being embedded
199 shared_libs: ["libselinux#latest"],
200 stl: "libc++_static",
201}
Inseob Kimab1037d2023-02-08 17:03:31 +0900202
203// A payload that crashes immediately on start
204cc_library_shared {
205 name: "MicrodroidCrashNativeLib",
Nikita Ioffe38b9e712024-02-08 15:55:07 +0000206 defaults: ["avf_build_flags_cc"],
Inseob Kimab1037d2023-02-08 17:03:31 +0900207 srcs: ["src/native/crashbinary.cpp"],
208 header_libs: ["vm_payload_headers"],
209 stl: "libc++_static",
210}
Alan Stokesc874cd22024-06-11 16:23:18 +0100211
212// A payload written in Rust, using the Rust wrapper for the VM payload API.
213rust_ffi_shared {
214 name: "libmicrodroid_testlib_rust",
215 crate_name: "microdroid_testlib_rust",
216 defaults: ["avf_build_flags_rust"],
217 prefer_rlib: true,
218 srcs: ["src/native/testbinary.rs"],
219 compile_multilib: "both",
220 rustlibs: [
221 "com.android.microdroid.testservice-rust",
222 "libandroid_logger",
223 "libanyhow",
224 "libavflog",
225 "libcstr",
226 "liblog_rust",
227 "libvm_payload_rs",
228 ],
229}
Alice Wang56f22392024-07-09 07:53:22 +0000230
231rust_ffi_shared {
232 name: "libhwtrust_jni",
233 crate_name: "hwtrust_jni",
234 srcs: ["src/native/hwtrust_jni.rs"],
235 prefer_rlib: true,
236 rustlibs: [
237 "libandroid_logger",
238 "libanyhow",
239 "liblog_rust",
240 "libhwtrust",
241 "libjni",
242 ],
243 shared_libs: [
244 "libcrypto",
245 ],
246}