xref: /aosp_15_r20/art/libartservice/service/Android.bp (revision 795d594fd825385562da6b089ea9b2033f3abf5a)
1*795d594fSAndroid Build Coastguard Worker// Copyright (C) 2021 The Android Open Source Project
2*795d594fSAndroid Build Coastguard Worker//
3*795d594fSAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*795d594fSAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*795d594fSAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*795d594fSAndroid Build Coastguard Worker//
7*795d594fSAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*795d594fSAndroid Build Coastguard Worker//
9*795d594fSAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*795d594fSAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*795d594fSAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*795d594fSAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*795d594fSAndroid Build Coastguard Worker// limitations under the License.
14*795d594fSAndroid Build Coastguard Worker
15*795d594fSAndroid Build Coastguard Workerpackage {
16*795d594fSAndroid Build Coastguard Worker    // See: http://go/android-license-faq
17*795d594fSAndroid Build Coastguard Worker    // A large-scale-change added 'default_applicable_licenses' to import
18*795d594fSAndroid Build Coastguard Worker    // all of the 'license_kinds' from "art_license"
19*795d594fSAndroid Build Coastguard Worker    // to get the below license kinds:
20*795d594fSAndroid Build Coastguard Worker    //   SPDX-license-identifier-Apache-2.0
21*795d594fSAndroid Build Coastguard Worker    default_applicable_licenses: ["art_license"],
22*795d594fSAndroid Build Coastguard Worker}
23*795d594fSAndroid Build Coastguard Worker
24*795d594fSAndroid Build Coastguard Worker// This native library contains JNI support code for the ART Service Java
25*795d594fSAndroid Build Coastguard Worker// Language library.
26*795d594fSAndroid Build Coastguard Workercc_defaults {
27*795d594fSAndroid Build Coastguard Worker    name: "libartservice_defaults",
28*795d594fSAndroid Build Coastguard Worker    defaults: ["art_defaults"],
29*795d594fSAndroid Build Coastguard Worker    host_supported: true,
30*795d594fSAndroid Build Coastguard Worker    srcs: [
31*795d594fSAndroid Build Coastguard Worker        "native/service.cc",
32*795d594fSAndroid Build Coastguard Worker    ],
33*795d594fSAndroid Build Coastguard Worker    export_include_dirs: ["native"],
34*795d594fSAndroid Build Coastguard Worker    shared_libs: [
35*795d594fSAndroid Build Coastguard Worker        "liblog", // Used by "JNIHelp.h".
36*795d594fSAndroid Build Coastguard Worker        "libnativehelper",
37*795d594fSAndroid Build Coastguard Worker    ],
38*795d594fSAndroid Build Coastguard Worker    target: {
39*795d594fSAndroid Build Coastguard Worker        android: {
40*795d594fSAndroid Build Coastguard Worker            compile_multilib: "first",
41*795d594fSAndroid Build Coastguard Worker        },
42*795d594fSAndroid Build Coastguard Worker    },
43*795d594fSAndroid Build Coastguard Worker}
44*795d594fSAndroid Build Coastguard Worker
45*795d594fSAndroid Build Coastguard Workercc_library {
46*795d594fSAndroid Build Coastguard Worker    name: "libartservice",
47*795d594fSAndroid Build Coastguard Worker    defaults: ["libartservice_defaults"],
48*795d594fSAndroid Build Coastguard Worker    apex_available: [
49*795d594fSAndroid Build Coastguard Worker        "com.android.art",
50*795d594fSAndroid Build Coastguard Worker        "com.android.art.debug",
51*795d594fSAndroid Build Coastguard Worker    ],
52*795d594fSAndroid Build Coastguard Worker    shared_libs: [
53*795d594fSAndroid Build Coastguard Worker        "libart",
54*795d594fSAndroid Build Coastguard Worker        "libartbase",
55*795d594fSAndroid Build Coastguard Worker        "libarttools",
56*795d594fSAndroid Build Coastguard Worker        "libbase",
57*795d594fSAndroid Build Coastguard Worker    ],
58*795d594fSAndroid Build Coastguard Worker}
59*795d594fSAndroid Build Coastguard Worker
60*795d594fSAndroid Build Coastguard Workercc_library {
61*795d594fSAndroid Build Coastguard Worker    name: "libartserviced",
62*795d594fSAndroid Build Coastguard Worker    defaults: [
63*795d594fSAndroid Build Coastguard Worker        "libartservice_defaults",
64*795d594fSAndroid Build Coastguard Worker        "art_debug_defaults",
65*795d594fSAndroid Build Coastguard Worker    ],
66*795d594fSAndroid Build Coastguard Worker    apex_available: [
67*795d594fSAndroid Build Coastguard Worker        "com.android.art",
68*795d594fSAndroid Build Coastguard Worker        "com.android.art.debug",
69*795d594fSAndroid Build Coastguard Worker    ],
70*795d594fSAndroid Build Coastguard Worker    shared_libs: [
71*795d594fSAndroid Build Coastguard Worker        "libartd",
72*795d594fSAndroid Build Coastguard Worker        "libartbased",
73*795d594fSAndroid Build Coastguard Worker        "libarttools",
74*795d594fSAndroid Build Coastguard Worker        "libbase",
75*795d594fSAndroid Build Coastguard Worker    ],
76*795d594fSAndroid Build Coastguard Worker}
77*795d594fSAndroid Build Coastguard Worker
78*795d594fSAndroid Build Coastguard Workerjava_defaults {
79*795d594fSAndroid Build Coastguard Worker    name: "service-art-defaults",
80*795d594fSAndroid Build Coastguard Worker    defaults: [
81*795d594fSAndroid Build Coastguard Worker        "framework-system-server-module-defaults",
82*795d594fSAndroid Build Coastguard Worker    ],
83*795d594fSAndroid Build Coastguard Worker    sdk_version: "system_server_current",
84*795d594fSAndroid Build Coastguard Worker    min_sdk_version: "31",
85*795d594fSAndroid Build Coastguard Worker    srcs: [
86*795d594fSAndroid Build Coastguard Worker        "java/**/*.java",
87*795d594fSAndroid Build Coastguard Worker    ],
88*795d594fSAndroid Build Coastguard Worker    libs: [
89*795d594fSAndroid Build Coastguard Worker        "androidx.annotation_annotation",
90*795d594fSAndroid Build Coastguard Worker        "aconfig-annotations-lib",
91*795d594fSAndroid Build Coastguard Worker        "art-aconfig-flags-java-lib",
92*795d594fSAndroid Build Coastguard Worker        "auto_value_annotations",
93*795d594fSAndroid Build Coastguard Worker        "sdk_module-lib_current_framework-configinfrastructure",
94*795d594fSAndroid Build Coastguard Worker        "sdk_module-lib_current_framework-permission-s",
95*795d594fSAndroid Build Coastguard Worker        // TODO(b/256866172): Transitive dependency, for r8 only.
96*795d594fSAndroid Build Coastguard Worker        "framework-statsd.stubs.module_lib",
97*795d594fSAndroid Build Coastguard Worker        // TODO(b/256866172): Transitive dependency, for r8 only. This module
98*795d594fSAndroid Build Coastguard Worker        // always refers to the jar in prebuilts/sdk. We can't use
99*795d594fSAndroid Build Coastguard Worker        // "framework-connectivity.stubs.module_lib" here because it's not
100*795d594fSAndroid Build Coastguard Worker        // available on master-art.
101*795d594fSAndroid Build Coastguard Worker        "sdk_module-lib_current_framework-connectivity",
102*795d594fSAndroid Build Coastguard Worker    ],
103*795d594fSAndroid Build Coastguard Worker    static_libs: [
104*795d594fSAndroid Build Coastguard Worker        "android.content.pm.flags-aconfig-java-export",
105*795d594fSAndroid Build Coastguard Worker        "art-statslog-art-java",
106*795d594fSAndroid Build Coastguard Worker        "artd-aidl-java",
107*795d594fSAndroid Build Coastguard Worker        "dexopt_chroot_setup-aidl-java",
108*795d594fSAndroid Build Coastguard Worker        "modules-utils-build",
109*795d594fSAndroid Build Coastguard Worker        "modules-utils-package-state",
110*795d594fSAndroid Build Coastguard Worker        "modules-utils-shell-command-handler",
111*795d594fSAndroid Build Coastguard Worker        "service-art-proto-java",
112*795d594fSAndroid Build Coastguard Worker    ],
113*795d594fSAndroid Build Coastguard Worker    plugins: [
114*795d594fSAndroid Build Coastguard Worker        "auto_value_plugin",
115*795d594fSAndroid Build Coastguard Worker    ],
116*795d594fSAndroid Build Coastguard Worker}
117*795d594fSAndroid Build Coastguard Worker
118*795d594fSAndroid Build Coastguard Worker// Used by tests to allow tests to mock the right classes.
119*795d594fSAndroid Build Coastguard Workerjava_library {
120*795d594fSAndroid Build Coastguard Worker    name: "service-art-pre-jarjar",
121*795d594fSAndroid Build Coastguard Worker    defaults: ["service-art-defaults"],
122*795d594fSAndroid Build Coastguard Worker    installable: false,
123*795d594fSAndroid Build Coastguard Worker    visibility: [
124*795d594fSAndroid Build Coastguard Worker        "//visibility:override",
125*795d594fSAndroid Build Coastguard Worker        "//visibility:private",
126*795d594fSAndroid Build Coastguard Worker    ],
127*795d594fSAndroid Build Coastguard Worker}
128*795d594fSAndroid Build Coastguard Worker
129*795d594fSAndroid Build Coastguard Worker// Provides the API and implementation of the ART Service class that will be
130*795d594fSAndroid Build Coastguard Worker// loaded by the System Server.
131*795d594fSAndroid Build Coastguard Workerjava_sdk_library {
132*795d594fSAndroid Build Coastguard Worker    // This target is named 'service-art' to conform to the naming conventions
133*795d594fSAndroid Build Coastguard Worker    // for JAR files in the System Server.
134*795d594fSAndroid Build Coastguard Worker    name: "service-art",
135*795d594fSAndroid Build Coastguard Worker    defaults: [
136*795d594fSAndroid Build Coastguard Worker        "service-art-defaults",
137*795d594fSAndroid Build Coastguard Worker        "framework-system-server-module-optimize-defaults",
138*795d594fSAndroid Build Coastguard Worker    ],
139*795d594fSAndroid Build Coastguard Worker    permitted_packages: [
140*795d594fSAndroid Build Coastguard Worker        "com.android.server.art",
141*795d594fSAndroid Build Coastguard Worker    ],
142*795d594fSAndroid Build Coastguard Worker    dex_preopt: {
143*795d594fSAndroid Build Coastguard Worker        profile: "art-profile",
144*795d594fSAndroid Build Coastguard Worker    },
145*795d594fSAndroid Build Coastguard Worker    visibility: [
146*795d594fSAndroid Build Coastguard Worker        "//art:__subpackages__",
147*795d594fSAndroid Build Coastguard Worker        "//frameworks/base/services/core",
148*795d594fSAndroid Build Coastguard Worker    ],
149*795d594fSAndroid Build Coastguard Worker    apex_available: [
150*795d594fSAndroid Build Coastguard Worker        "com.android.art",
151*795d594fSAndroid Build Coastguard Worker        "com.android.art.debug",
152*795d594fSAndroid Build Coastguard Worker    ],
153*795d594fSAndroid Build Coastguard Worker    jarjar_rules: "jarjar-rules.txt",
154*795d594fSAndroid Build Coastguard Worker    optimize: {
155*795d594fSAndroid Build Coastguard Worker        proguard_flags_files: ["proguard.flags"],
156*795d594fSAndroid Build Coastguard Worker    },
157*795d594fSAndroid Build Coastguard Worker    aconfig_declarations: [
158*795d594fSAndroid Build Coastguard Worker        "art-aconfig-flags",
159*795d594fSAndroid Build Coastguard Worker    ],
160*795d594fSAndroid Build Coastguard Worker}
161*795d594fSAndroid Build Coastguard Worker
162*795d594fSAndroid Build Coastguard Workerjava_library {
163*795d594fSAndroid Build Coastguard Worker    name: "service-art-proto-java",
164*795d594fSAndroid Build Coastguard Worker    proto: {
165*795d594fSAndroid Build Coastguard Worker        type: "lite",
166*795d594fSAndroid Build Coastguard Worker    },
167*795d594fSAndroid Build Coastguard Worker    srcs: [
168*795d594fSAndroid Build Coastguard Worker        "proto/**/*.proto",
169*795d594fSAndroid Build Coastguard Worker    ],
170*795d594fSAndroid Build Coastguard Worker    sdk_version: "system_server_current",
171*795d594fSAndroid Build Coastguard Worker    min_sdk_version: "31",
172*795d594fSAndroid Build Coastguard Worker    apex_available: [
173*795d594fSAndroid Build Coastguard Worker        "com.android.art",
174*795d594fSAndroid Build Coastguard Worker        "com.android.art.debug",
175*795d594fSAndroid Build Coastguard Worker    ],
176*795d594fSAndroid Build Coastguard Worker}
177*795d594fSAndroid Build Coastguard Worker
178*795d594fSAndroid Build Coastguard Workerjava_library {
179*795d594fSAndroid Build Coastguard Worker    name: "art-statslog-art-java",
180*795d594fSAndroid Build Coastguard Worker    srcs: [
181*795d594fSAndroid Build Coastguard Worker        ":art-statslog-art-java-gen",
182*795d594fSAndroid Build Coastguard Worker    ],
183*795d594fSAndroid Build Coastguard Worker    libs: [
184*795d594fSAndroid Build Coastguard Worker        "framework-statsd.stubs.module_lib",
185*795d594fSAndroid Build Coastguard Worker    ],
186*795d594fSAndroid Build Coastguard Worker    sdk_version: "system_server_current",
187*795d594fSAndroid Build Coastguard Worker    min_sdk_version: "31",
188*795d594fSAndroid Build Coastguard Worker    apex_available: [
189*795d594fSAndroid Build Coastguard Worker        "com.android.art",
190*795d594fSAndroid Build Coastguard Worker        "com.android.art.debug",
191*795d594fSAndroid Build Coastguard Worker    ],
192*795d594fSAndroid Build Coastguard Worker}
193*795d594fSAndroid Build Coastguard Worker
194*795d594fSAndroid Build Coastguard Workergenrule {
195*795d594fSAndroid Build Coastguard Worker    name: "art-statslog-art-java-gen",
196*795d594fSAndroid Build Coastguard Worker    tools: ["stats-log-api-gen"],
197*795d594fSAndroid Build Coastguard Worker    cmd: "$(location stats-log-api-gen) --java $(out) --module art --javaPackage com.android.server.art --javaClass ArtStatsLog",
198*795d594fSAndroid Build Coastguard Worker    out: ["java/com/android/server/art/ArtStatsLog.java"],
199*795d594fSAndroid Build Coastguard Worker}
200*795d594fSAndroid Build Coastguard Worker
201*795d594fSAndroid Build Coastguard Workerart_cc_defaults {
202*795d594fSAndroid Build Coastguard Worker    name: "art_libartservice_tests_defaults",
203*795d594fSAndroid Build Coastguard Worker    defaults: ["libartservice_defaults"],
204*795d594fSAndroid Build Coastguard Worker    srcs: [
205*795d594fSAndroid Build Coastguard Worker        "native/service_test.cc",
206*795d594fSAndroid Build Coastguard Worker    ],
207*795d594fSAndroid Build Coastguard Worker    static_libs: [
208*795d594fSAndroid Build Coastguard Worker        "libgmock",
209*795d594fSAndroid Build Coastguard Worker    ],
210*795d594fSAndroid Build Coastguard Worker}
211*795d594fSAndroid Build Coastguard Worker
212*795d594fSAndroid Build Coastguard Worker// Version of ART gtest `art_libartservice_tests` for host.
213*795d594fSAndroid Build Coastguard Worker// TODO(b/192274705): Remove this module when the migration to standalone ART gtests is complete.
214*795d594fSAndroid Build Coastguard Workerart_cc_test {
215*795d594fSAndroid Build Coastguard Worker    name: "art_libartservice_tests",
216*795d594fSAndroid Build Coastguard Worker    device_supported: false,
217*795d594fSAndroid Build Coastguard Worker    defaults: [
218*795d594fSAndroid Build Coastguard Worker        "art_gtest_defaults",
219*795d594fSAndroid Build Coastguard Worker        "art_libartservice_tests_defaults",
220*795d594fSAndroid Build Coastguard Worker    ],
221*795d594fSAndroid Build Coastguard Worker    shared_libs: [
222*795d594fSAndroid Build Coastguard Worker        "libarttools",
223*795d594fSAndroid Build Coastguard Worker        "libbase",
224*795d594fSAndroid Build Coastguard Worker    ],
225*795d594fSAndroid Build Coastguard Worker}
226*795d594fSAndroid Build Coastguard Worker
227*795d594fSAndroid Build Coastguard Worker// Standalone version of ART gtest `art_libartservice_tests`, not bundled with the ART APEX on
228*795d594fSAndroid Build Coastguard Worker// target.
229*795d594fSAndroid Build Coastguard Workerart_cc_test {
230*795d594fSAndroid Build Coastguard Worker    name: "art_standalone_libartservice_tests",
231*795d594fSAndroid Build Coastguard Worker    defaults: [
232*795d594fSAndroid Build Coastguard Worker        "art_standalone_gtest_defaults",
233*795d594fSAndroid Build Coastguard Worker        "art_libartservice_tests_defaults",
234*795d594fSAndroid Build Coastguard Worker    ],
235*795d594fSAndroid Build Coastguard Worker    static_libs: [
236*795d594fSAndroid Build Coastguard Worker        "libarttools",
237*795d594fSAndroid Build Coastguard Worker        "libbase",
238*795d594fSAndroid Build Coastguard Worker    ],
239*795d594fSAndroid Build Coastguard Worker    test_config_template: ":art-gtests-target-standalone-non-multilib-template",
240*795d594fSAndroid Build Coastguard Worker}
241*795d594fSAndroid Build Coastguard Worker
242*795d594fSAndroid Build Coastguard Workerandroid_test {
243*795d594fSAndroid Build Coastguard Worker    name: "ArtServiceTests",
244*795d594fSAndroid Build Coastguard Worker
245*795d594fSAndroid Build Coastguard Worker    // Include all test java files.
246*795d594fSAndroid Build Coastguard Worker    srcs: [
247*795d594fSAndroid Build Coastguard Worker        "javatests/**/*.java",
248*795d594fSAndroid Build Coastguard Worker    ],
249*795d594fSAndroid Build Coastguard Worker
250*795d594fSAndroid Build Coastguard Worker    libs: [
251*795d594fSAndroid Build Coastguard Worker        "sdk_module-lib_current_framework-configinfrastructure",
252*795d594fSAndroid Build Coastguard Worker    ],
253*795d594fSAndroid Build Coastguard Worker
254*795d594fSAndroid Build Coastguard Worker    static_libs: [
255*795d594fSAndroid Build Coastguard Worker        "androidx.test.ext.junit",
256*795d594fSAndroid Build Coastguard Worker        "androidx.test.ext.truth",
257*795d594fSAndroid Build Coastguard Worker        "androidx.test.runner",
258*795d594fSAndroid Build Coastguard Worker        "artd-aidl-java",
259*795d594fSAndroid Build Coastguard Worker        "framework-annotations-lib",
260*795d594fSAndroid Build Coastguard Worker        // We need ExtendedMockito to mock static methods.
261*795d594fSAndroid Build Coastguard Worker        "mockito-target-extended-minus-junit4",
262*795d594fSAndroid Build Coastguard Worker        "modules-utils-package-state",
263*795d594fSAndroid Build Coastguard Worker        "service-art-pre-jarjar",
264*795d594fSAndroid Build Coastguard Worker        // Statically link against system server to allow us to mock system
265*795d594fSAndroid Build Coastguard Worker        // server APIs. This won't work on master-art, but it's fine because we
266*795d594fSAndroid Build Coastguard Worker        // don't run this test on master-art.
267*795d594fSAndroid Build Coastguard Worker        "services.core",
268*795d594fSAndroid Build Coastguard Worker    ],
269*795d594fSAndroid Build Coastguard Worker
270*795d594fSAndroid Build Coastguard Worker    jni_libs: [
271*795d594fSAndroid Build Coastguard Worker        "libartservice",
272*795d594fSAndroid Build Coastguard Worker        // The two libraries below are required by ExtendedMockito.
273*795d594fSAndroid Build Coastguard Worker        "libdexmakerjvmtiagent",
274*795d594fSAndroid Build Coastguard Worker        "libstaticjvmtiagent",
275*795d594fSAndroid Build Coastguard Worker    ],
276*795d594fSAndroid Build Coastguard Worker    compile_multilib: "first",
277*795d594fSAndroid Build Coastguard Worker
278*795d594fSAndroid Build Coastguard Worker    // TODO: This module should move to sdk_version: "system_server_current" when possible,
279*795d594fSAndroid Build Coastguard Worker    //   as this will restrict the APIs available to just that expected system API. For now,
280*795d594fSAndroid Build Coastguard Worker    //   a compileOnly / runtimeOnly split for dependencies doesn't exist in the build system
281*795d594fSAndroid Build Coastguard Worker    //   and so it's not possible to enforce.
282*795d594fSAndroid Build Coastguard Worker    min_sdk_version: "31",
283*795d594fSAndroid Build Coastguard Worker
284*795d594fSAndroid Build Coastguard Worker    test_suites: ["general-tests"],
285*795d594fSAndroid Build Coastguard Worker    test_config: "ArtServiceTests.xml",
286*795d594fSAndroid Build Coastguard Worker}
287*795d594fSAndroid Build Coastguard Worker
288*795d594fSAndroid Build Coastguard Workerfilegroup {
289*795d594fSAndroid Build Coastguard Worker    name: "libartservice_protos",
290*795d594fSAndroid Build Coastguard Worker    srcs: [
291*795d594fSAndroid Build Coastguard Worker        "proto/**/*.proto",
292*795d594fSAndroid Build Coastguard Worker    ],
293*795d594fSAndroid Build Coastguard Worker    visibility: [
294*795d594fSAndroid Build Coastguard Worker        "//cts/hostsidetests/compilation",
295*795d594fSAndroid Build Coastguard Worker    ],
296*795d594fSAndroid Build Coastguard Worker}
297