xref: /aosp_15_r20/frameworks/base/api/Android.bp (revision d57664e9bc4670b3ecf6748a746a57c557b6bc9e)
1*d57664e9SAndroid Build Coastguard Worker// Copyright (C) 2020 The Android Open Source Project
2*d57664e9SAndroid Build Coastguard Worker//
3*d57664e9SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d57664e9SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d57664e9SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d57664e9SAndroid Build Coastguard Worker//
7*d57664e9SAndroid Build Coastguard Worker//      http://www.apache.org/licenses/LICENSE-2.0
8*d57664e9SAndroid Build Coastguard Worker//
9*d57664e9SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d57664e9SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d57664e9SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d57664e9SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d57664e9SAndroid Build Coastguard Worker// limitations under the License.
14*d57664e9SAndroid Build Coastguard Worker
15*d57664e9SAndroid Build Coastguard Workerpackage {
16*d57664e9SAndroid Build Coastguard Worker    default_visibility: ["//visibility:private"],
17*d57664e9SAndroid Build Coastguard Worker    // See: http://go/android-license-faq
18*d57664e9SAndroid Build Coastguard Worker    // A large-scale-change added 'default_applicable_licenses' to import
19*d57664e9SAndroid Build Coastguard Worker    // all of the 'license_kinds' from "frameworks_base_license"
20*d57664e9SAndroid Build Coastguard Worker    // to get the below license kinds:
21*d57664e9SAndroid Build Coastguard Worker    //   SPDX-license-identifier-Apache-2.0
22*d57664e9SAndroid Build Coastguard Worker    //   SPDX-license-identifier-MIT
23*d57664e9SAndroid Build Coastguard Worker    //   SPDX-license-identifier-Unicode-DFS
24*d57664e9SAndroid Build Coastguard Worker    default_applicable_licenses: ["frameworks_base_license"],
25*d57664e9SAndroid Build Coastguard Worker}
26*d57664e9SAndroid Build Coastguard Worker
27*d57664e9SAndroid Build Coastguard Workerbootstrap_go_package {
28*d57664e9SAndroid Build Coastguard Worker    name: "soong-api",
29*d57664e9SAndroid Build Coastguard Worker    pkgPath: "android/soong/api",
30*d57664e9SAndroid Build Coastguard Worker    deps: [
31*d57664e9SAndroid Build Coastguard Worker        "blueprint",
32*d57664e9SAndroid Build Coastguard Worker        "blueprint-proptools",
33*d57664e9SAndroid Build Coastguard Worker        "soong",
34*d57664e9SAndroid Build Coastguard Worker        "soong-android",
35*d57664e9SAndroid Build Coastguard Worker        "soong-genrule",
36*d57664e9SAndroid Build Coastguard Worker        "soong-java",
37*d57664e9SAndroid Build Coastguard Worker    ],
38*d57664e9SAndroid Build Coastguard Worker    srcs: ["api.go"],
39*d57664e9SAndroid Build Coastguard Worker    testSrcs: ["api_test.go"],
40*d57664e9SAndroid Build Coastguard Worker    pluginFor: ["soong_build"],
41*d57664e9SAndroid Build Coastguard Worker}
42*d57664e9SAndroid Build Coastguard Worker
43*d57664e9SAndroid Build Coastguard Workerpython_binary_host {
44*d57664e9SAndroid Build Coastguard Worker    name: "merge_annotation_zips",
45*d57664e9SAndroid Build Coastguard Worker    srcs: ["merge_annotation_zips.py"],
46*d57664e9SAndroid Build Coastguard Worker}
47*d57664e9SAndroid Build Coastguard Worker
48*d57664e9SAndroid Build Coastguard Workerpython_test_host {
49*d57664e9SAndroid Build Coastguard Worker    name: "merge_annotation_zips_test",
50*d57664e9SAndroid Build Coastguard Worker    main: "merge_annotation_zips_test.py",
51*d57664e9SAndroid Build Coastguard Worker    srcs: [
52*d57664e9SAndroid Build Coastguard Worker        "merge_annotation_zips.py",
53*d57664e9SAndroid Build Coastguard Worker        "merge_annotation_zips_test.py",
54*d57664e9SAndroid Build Coastguard Worker    ],
55*d57664e9SAndroid Build Coastguard Worker    test_options: {
56*d57664e9SAndroid Build Coastguard Worker        unit_test: true,
57*d57664e9SAndroid Build Coastguard Worker    },
58*d57664e9SAndroid Build Coastguard Worker}
59*d57664e9SAndroid Build Coastguard Worker
60*d57664e9SAndroid Build Coastguard Workermetalava_cmd = "$(location metalava)"
61*d57664e9SAndroid Build Coastguard Worker// Silence reflection warnings. See b/168689341
62*d57664e9SAndroid Build Coastguard Workermetalava_cmd += " -J--add-opens=java.base/java.util=ALL-UNNAMED "
63*d57664e9SAndroid Build Coastguard Workermetalava_cmd += " --quiet "
64*d57664e9SAndroid Build Coastguard Worker
65*d57664e9SAndroid Build Coastguard Workercombined_apis {
66*d57664e9SAndroid Build Coastguard Worker    name: "frameworks-base-api",
67*d57664e9SAndroid Build Coastguard Worker    bootclasspath: [
68*d57664e9SAndroid Build Coastguard Worker        "android.net.ipsec.ike",
69*d57664e9SAndroid Build Coastguard Worker        "art.module.public.api",
70*d57664e9SAndroid Build Coastguard Worker        "conscrypt.module.public.api",
71*d57664e9SAndroid Build Coastguard Worker        "framework-adservices",
72*d57664e9SAndroid Build Coastguard Worker        "framework-appsearch",
73*d57664e9SAndroid Build Coastguard Worker        "framework-bluetooth",
74*d57664e9SAndroid Build Coastguard Worker        "framework-configinfrastructure",
75*d57664e9SAndroid Build Coastguard Worker        "framework-connectivity",
76*d57664e9SAndroid Build Coastguard Worker        "framework-connectivity-b",
77*d57664e9SAndroid Build Coastguard Worker        "framework-connectivity-t",
78*d57664e9SAndroid Build Coastguard Worker        "framework-devicelock",
79*d57664e9SAndroid Build Coastguard Worker        "framework-graphics",
80*d57664e9SAndroid Build Coastguard Worker        "framework-healthfitness",
81*d57664e9SAndroid Build Coastguard Worker        "framework-location",
82*d57664e9SAndroid Build Coastguard Worker        "framework-media",
83*d57664e9SAndroid Build Coastguard Worker        "framework-mediaprovider",
84*d57664e9SAndroid Build Coastguard Worker        "framework-nfc",
85*d57664e9SAndroid Build Coastguard Worker        "framework-ondevicepersonalization",
86*d57664e9SAndroid Build Coastguard Worker        "framework-pdf",
87*d57664e9SAndroid Build Coastguard Worker        "framework-pdf-v",
88*d57664e9SAndroid Build Coastguard Worker        "framework-permission",
89*d57664e9SAndroid Build Coastguard Worker        "framework-permission-s",
90*d57664e9SAndroid Build Coastguard Worker        "framework-profiling",
91*d57664e9SAndroid Build Coastguard Worker        "framework-photopicker",
92*d57664e9SAndroid Build Coastguard Worker        "framework-scheduling",
93*d57664e9SAndroid Build Coastguard Worker        "framework-sdkextensions",
94*d57664e9SAndroid Build Coastguard Worker        "framework-statsd",
95*d57664e9SAndroid Build Coastguard Worker        "framework-sdksandbox",
96*d57664e9SAndroid Build Coastguard Worker        "framework-tethering",
97*d57664e9SAndroid Build Coastguard Worker        "framework-uwb",
98*d57664e9SAndroid Build Coastguard Worker        "framework-virtualization",
99*d57664e9SAndroid Build Coastguard Worker        "framework-wifi",
100*d57664e9SAndroid Build Coastguard Worker        "i18n.module.public.api",
101*d57664e9SAndroid Build Coastguard Worker    ] + select(soong_config_variable("ANDROID", "release_crashrecovery_module"), {
102*d57664e9SAndroid Build Coastguard Worker        "true": [
103*d57664e9SAndroid Build Coastguard Worker            "framework-crashrecovery",
104*d57664e9SAndroid Build Coastguard Worker        ],
105*d57664e9SAndroid Build Coastguard Worker        default: [
106*d57664e9SAndroid Build Coastguard Worker            "framework-platformcrashrecovery",
107*d57664e9SAndroid Build Coastguard Worker        ],
108*d57664e9SAndroid Build Coastguard Worker    }) + select(release_flag("RELEASE_ONDEVICE_INTELLIGENCE_MODULE"), {
109*d57664e9SAndroid Build Coastguard Worker        true: [
110*d57664e9SAndroid Build Coastguard Worker            "framework-ondeviceintelligence",
111*d57664e9SAndroid Build Coastguard Worker        ],
112*d57664e9SAndroid Build Coastguard Worker        default: [
113*d57664e9SAndroid Build Coastguard Worker            "framework-ondeviceintelligence-platform",
114*d57664e9SAndroid Build Coastguard Worker        ],
115*d57664e9SAndroid Build Coastguard Worker    }) + select(release_flag("RELEASE_RANGING_STACK"), {
116*d57664e9SAndroid Build Coastguard Worker        true: [
117*d57664e9SAndroid Build Coastguard Worker            "framework-ranging",
118*d57664e9SAndroid Build Coastguard Worker        ],
119*d57664e9SAndroid Build Coastguard Worker        default: [],
120*d57664e9SAndroid Build Coastguard Worker    }),
121*d57664e9SAndroid Build Coastguard Worker    system_server_classpath: [
122*d57664e9SAndroid Build Coastguard Worker        "service-art",
123*d57664e9SAndroid Build Coastguard Worker        "service-configinfrastructure",
124*d57664e9SAndroid Build Coastguard Worker        "service-healthfitness",
125*d57664e9SAndroid Build Coastguard Worker        "service-media-s",
126*d57664e9SAndroid Build Coastguard Worker        "service-permission",
127*d57664e9SAndroid Build Coastguard Worker        "service-rkp",
128*d57664e9SAndroid Build Coastguard Worker        "service-sdksandbox",
129*d57664e9SAndroid Build Coastguard Worker    ] + select(release_flag("RELEASE_ONDEVICE_INTELLIGENCE_MODULE"), {
130*d57664e9SAndroid Build Coastguard Worker        true: [
131*d57664e9SAndroid Build Coastguard Worker            "service-ondeviceintelligence",
132*d57664e9SAndroid Build Coastguard Worker        ],
133*d57664e9SAndroid Build Coastguard Worker        default: [],
134*d57664e9SAndroid Build Coastguard Worker    }) + select(soong_config_variable("ANDROID", "release_crashrecovery_module"), {
135*d57664e9SAndroid Build Coastguard Worker        "true": [
136*d57664e9SAndroid Build Coastguard Worker            "service-crashrecovery",
137*d57664e9SAndroid Build Coastguard Worker        ],
138*d57664e9SAndroid Build Coastguard Worker        default: [],
139*d57664e9SAndroid Build Coastguard Worker    }),
140*d57664e9SAndroid Build Coastguard Worker}
141*d57664e9SAndroid Build Coastguard Worker
142*d57664e9SAndroid Build Coastguard Worker// Create a single file containing the latest released version of the whole
143*d57664e9SAndroid Build Coastguard Worker// Android public API.
144*d57664e9SAndroid Build Coastguard Workerjava_genrule {
145*d57664e9SAndroid Build Coastguard Worker    name: "android.api.merged.public.latest",
146*d57664e9SAndroid Build Coastguard Worker    srcs: [
147*d57664e9SAndroid Build Coastguard Worker        ":android.api.combined.public.latest",
148*d57664e9SAndroid Build Coastguard Worker    ],
149*d57664e9SAndroid Build Coastguard Worker    out: ["public-latest.txt"],
150*d57664e9SAndroid Build Coastguard Worker    tools: ["metalava"],
151*d57664e9SAndroid Build Coastguard Worker    cmd: metalava_cmd + " merge-signatures --format=2.0 $(in) --out $(out)",
152*d57664e9SAndroid Build Coastguard Worker}
153*d57664e9SAndroid Build Coastguard Worker
154*d57664e9SAndroid Build Coastguard Worker// Make sure that the Android public API is compatible with the
155*d57664e9SAndroid Build Coastguard Worker// previously released public API.
156*d57664e9SAndroid Build Coastguard Workerjava_genrule {
157*d57664e9SAndroid Build Coastguard Worker    name: "frameworks-base-api-current-compat",
158*d57664e9SAndroid Build Coastguard Worker    srcs: [
159*d57664e9SAndroid Build Coastguard Worker        ":android.api.merged.public.latest",
160*d57664e9SAndroid Build Coastguard Worker        ":android-incompatibilities.api.public.latest",
161*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-current.txt",
162*d57664e9SAndroid Build Coastguard Worker    ],
163*d57664e9SAndroid Build Coastguard Worker    out: ["updated-baseline.txt"],
164*d57664e9SAndroid Build Coastguard Worker    tools: ["metalava"],
165*d57664e9SAndroid Build Coastguard Worker    cmd: metalava_cmd +
166*d57664e9SAndroid Build Coastguard Worker        "--check-compatibility:api:released $(location :android.api.merged.public.latest) " +
167*d57664e9SAndroid Build Coastguard Worker        "--baseline:compatibility:released $(location :android-incompatibilities.api.public.latest) " +
168*d57664e9SAndroid Build Coastguard Worker        "--update-baseline:compatibility:released $(genDir)/updated-baseline.txt " +
169*d57664e9SAndroid Build Coastguard Worker        "$(location :frameworks-base-api-current.txt)",
170*d57664e9SAndroid Build Coastguard Worker}
171*d57664e9SAndroid Build Coastguard Worker
172*d57664e9SAndroid Build Coastguard Worker// Create a single file containing the latest released version of the whole
173*d57664e9SAndroid Build Coastguard Worker// Android system API.
174*d57664e9SAndroid Build Coastguard Workerjava_genrule {
175*d57664e9SAndroid Build Coastguard Worker    name: "android.api.merged.system.latest",
176*d57664e9SAndroid Build Coastguard Worker    srcs: [
177*d57664e9SAndroid Build Coastguard Worker        ":android.api.combined.system.latest",
178*d57664e9SAndroid Build Coastguard Worker    ],
179*d57664e9SAndroid Build Coastguard Worker    out: ["system-latest.txt"],
180*d57664e9SAndroid Build Coastguard Worker    tools: ["metalava"],
181*d57664e9SAndroid Build Coastguard Worker    cmd: metalava_cmd + " merge-signatures --format=2.0 $(in) --out $(out)",
182*d57664e9SAndroid Build Coastguard Worker}
183*d57664e9SAndroid Build Coastguard Worker
184*d57664e9SAndroid Build Coastguard Worker// Make sure that the Android system API is compatible with the
185*d57664e9SAndroid Build Coastguard Worker// previously released system API.
186*d57664e9SAndroid Build Coastguard Workerjava_genrule {
187*d57664e9SAndroid Build Coastguard Worker    name: "frameworks-base-api-system-current-compat",
188*d57664e9SAndroid Build Coastguard Worker    srcs: [
189*d57664e9SAndroid Build Coastguard Worker        ":android.api.merged.system.latest",
190*d57664e9SAndroid Build Coastguard Worker        ":android-incompatibilities.api.system.latest",
191*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-current.txt",
192*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-system-current.txt",
193*d57664e9SAndroid Build Coastguard Worker    ],
194*d57664e9SAndroid Build Coastguard Worker    out: ["updated-baseline.txt"],
195*d57664e9SAndroid Build Coastguard Worker    tools: ["metalava"],
196*d57664e9SAndroid Build Coastguard Worker    cmd: metalava_cmd +
197*d57664e9SAndroid Build Coastguard Worker        "--check-compatibility:api:released $(location :android.api.merged.system.latest) " +
198*d57664e9SAndroid Build Coastguard Worker        "--baseline:compatibility:released $(location :android-incompatibilities.api.system.latest) " +
199*d57664e9SAndroid Build Coastguard Worker        "--update-baseline:compatibility:released $(genDir)/updated-baseline.txt " +
200*d57664e9SAndroid Build Coastguard Worker        "$(location :frameworks-base-api-current.txt) " +
201*d57664e9SAndroid Build Coastguard Worker        "$(location :frameworks-base-api-system-current.txt)",
202*d57664e9SAndroid Build Coastguard Worker}
203*d57664e9SAndroid Build Coastguard Worker
204*d57664e9SAndroid Build Coastguard Worker// Create a single file containing the latest released version of the whole
205*d57664e9SAndroid Build Coastguard Worker// Android module-lib API.
206*d57664e9SAndroid Build Coastguard Workerjava_genrule {
207*d57664e9SAndroid Build Coastguard Worker    name: "android.api.merged.module-lib.latest",
208*d57664e9SAndroid Build Coastguard Worker    srcs: [
209*d57664e9SAndroid Build Coastguard Worker        ":android.api.combined.module-lib.latest",
210*d57664e9SAndroid Build Coastguard Worker    ],
211*d57664e9SAndroid Build Coastguard Worker    out: ["module-lib-latest.txt"],
212*d57664e9SAndroid Build Coastguard Worker    tools: ["metalava"],
213*d57664e9SAndroid Build Coastguard Worker    cmd: metalava_cmd + " merge-signatures --format=2.0 $(in) --out $(out)",
214*d57664e9SAndroid Build Coastguard Worker}
215*d57664e9SAndroid Build Coastguard Worker
216*d57664e9SAndroid Build Coastguard Worker// Make sure that the Android module-lib API is compatible with the
217*d57664e9SAndroid Build Coastguard Worker// previously released module-lib API.
218*d57664e9SAndroid Build Coastguard Workerjava_genrule {
219*d57664e9SAndroid Build Coastguard Worker    name: "frameworks-base-api-module-lib-current-compat",
220*d57664e9SAndroid Build Coastguard Worker    srcs: [
221*d57664e9SAndroid Build Coastguard Worker        ":android.api.merged.module-lib.latest",
222*d57664e9SAndroid Build Coastguard Worker        ":android-incompatibilities.api.module-lib.latest",
223*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-current.txt",
224*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-system-current.txt",
225*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-module-lib-current.txt",
226*d57664e9SAndroid Build Coastguard Worker    ],
227*d57664e9SAndroid Build Coastguard Worker    out: ["updated-baseline.txt"],
228*d57664e9SAndroid Build Coastguard Worker    tools: ["metalava"],
229*d57664e9SAndroid Build Coastguard Worker    cmd: metalava_cmd +
230*d57664e9SAndroid Build Coastguard Worker        "--check-compatibility:api:released $(location :android.api.merged.module-lib.latest) " +
231*d57664e9SAndroid Build Coastguard Worker        "--baseline:compatibility:released $(location :android-incompatibilities.api.module-lib.latest) " +
232*d57664e9SAndroid Build Coastguard Worker        "--update-baseline:compatibility:released $(genDir)/updated-baseline.txt " +
233*d57664e9SAndroid Build Coastguard Worker        "$(location :frameworks-base-api-current.txt) " +
234*d57664e9SAndroid Build Coastguard Worker        "$(location :frameworks-base-api-system-current.txt) " +
235*d57664e9SAndroid Build Coastguard Worker        "$(location :frameworks-base-api-module-lib-current.txt)",
236*d57664e9SAndroid Build Coastguard Worker}
237*d57664e9SAndroid Build Coastguard Worker
238*d57664e9SAndroid Build Coastguard Workerjava_genrule {
239*d57664e9SAndroid Build Coastguard Worker    name: "frameworks-base-api-current.srcjar",
240*d57664e9SAndroid Build Coastguard Worker    tools: ["merge_zips"],
241*d57664e9SAndroid Build Coastguard Worker    out: ["current.srcjar"],
242*d57664e9SAndroid Build Coastguard Worker    cmd: "$(location merge_zips) $(out) $(in)",
243*d57664e9SAndroid Build Coastguard Worker    srcs: [
244*d57664e9SAndroid Build Coastguard Worker        ":api-stubs-docs-non-updatable{.exportable}",
245*d57664e9SAndroid Build Coastguard Worker        ":all-modules-public-stubs-source-exportable",
246*d57664e9SAndroid Build Coastguard Worker    ],
247*d57664e9SAndroid Build Coastguard Worker    visibility: ["//visibility:private"], // Used by make module in //development, mind
248*d57664e9SAndroid Build Coastguard Worker}
249*d57664e9SAndroid Build Coastguard Worker
250*d57664e9SAndroid Build Coastguard Worker// This produces the same annotations.zip as framework-doc-stubs, but by using
251*d57664e9SAndroid Build Coastguard Worker// outputs from individual modules instead of all the source code.
252*d57664e9SAndroid Build Coastguard Workergenrule_defaults {
253*d57664e9SAndroid Build Coastguard Worker    name: "sdk-annotations-defaults",
254*d57664e9SAndroid Build Coastguard Worker    out: ["annotations.zip"],
255*d57664e9SAndroid Build Coastguard Worker    tools: [
256*d57664e9SAndroid Build Coastguard Worker        "merge_annotation_zips",
257*d57664e9SAndroid Build Coastguard Worker        "soong_zip",
258*d57664e9SAndroid Build Coastguard Worker    ],
259*d57664e9SAndroid Build Coastguard Worker    cmd: "$(location merge_annotation_zips) $(genDir)/out $(in) && " +
260*d57664e9SAndroid Build Coastguard Worker        "$(location soong_zip) -o $(out) -C $(genDir)/out -D $(genDir)/out",
261*d57664e9SAndroid Build Coastguard Worker}
262*d57664e9SAndroid Build Coastguard Worker
263*d57664e9SAndroid Build Coastguard Workerjava_genrule {
264*d57664e9SAndroid Build Coastguard Worker    name: "sdk-annotations.zip",
265*d57664e9SAndroid Build Coastguard Worker    defaults: ["sdk-annotations-defaults"],
266*d57664e9SAndroid Build Coastguard Worker    srcs: [
267*d57664e9SAndroid Build Coastguard Worker        ":android-non-updatable-doc-stubs{.exportable.annotations.zip}",
268*d57664e9SAndroid Build Coastguard Worker        ":all-modules-public-annotations",
269*d57664e9SAndroid Build Coastguard Worker    ],
270*d57664e9SAndroid Build Coastguard Worker}
271*d57664e9SAndroid Build Coastguard Worker
272*d57664e9SAndroid Build Coastguard Workerjava_genrule {
273*d57664e9SAndroid Build Coastguard Worker    name: "sdk-annotations-system.zip",
274*d57664e9SAndroid Build Coastguard Worker    defaults: ["sdk-annotations-defaults"],
275*d57664e9SAndroid Build Coastguard Worker    srcs: [
276*d57664e9SAndroid Build Coastguard Worker        ":android-non-updatable-doc-stubs-system{.exportable.annotations.zip}",
277*d57664e9SAndroid Build Coastguard Worker        ":all-modules-system-annotations",
278*d57664e9SAndroid Build Coastguard Worker    ],
279*d57664e9SAndroid Build Coastguard Worker}
280*d57664e9SAndroid Build Coastguard Worker
281*d57664e9SAndroid Build Coastguard Workerjava_genrule {
282*d57664e9SAndroid Build Coastguard Worker    name: "sdk-annotations-module-lib.zip",
283*d57664e9SAndroid Build Coastguard Worker    defaults: ["sdk-annotations-defaults"],
284*d57664e9SAndroid Build Coastguard Worker    srcs: [
285*d57664e9SAndroid Build Coastguard Worker        ":android-non-updatable-doc-stubs-module-lib{.exportable.annotations.zip}",
286*d57664e9SAndroid Build Coastguard Worker        ":all-modules-module-lib-annotations",
287*d57664e9SAndroid Build Coastguard Worker    ],
288*d57664e9SAndroid Build Coastguard Worker}
289*d57664e9SAndroid Build Coastguard Worker
290*d57664e9SAndroid Build Coastguard Workerjava_genrule {
291*d57664e9SAndroid Build Coastguard Worker    name: "sdk-annotations-system-server.zip",
292*d57664e9SAndroid Build Coastguard Worker    defaults: ["sdk-annotations-defaults"],
293*d57664e9SAndroid Build Coastguard Worker    srcs: [
294*d57664e9SAndroid Build Coastguard Worker        ":android-non-updatable-doc-stubs-system-server{.exportable.annotations.zip}",
295*d57664e9SAndroid Build Coastguard Worker        ":all-modules-system-server-annotations",
296*d57664e9SAndroid Build Coastguard Worker    ],
297*d57664e9SAndroid Build Coastguard Worker}
298*d57664e9SAndroid Build Coastguard Worker
299*d57664e9SAndroid Build Coastguard Workerjava_genrule {
300*d57664e9SAndroid Build Coastguard Worker    name: "combined-removed-dex",
301*d57664e9SAndroid Build Coastguard Worker    visibility: [
302*d57664e9SAndroid Build Coastguard Worker        "//frameworks/base/boot",
303*d57664e9SAndroid Build Coastguard Worker    ],
304*d57664e9SAndroid Build Coastguard Worker    srcs: [
305*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-removed.txt",
306*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-system-removed.txt",
307*d57664e9SAndroid Build Coastguard Worker        ":android.car-stubs-docs{.removed-api.txt}",
308*d57664e9SAndroid Build Coastguard Worker        ":android.car-system-stubs-docs{.removed-api.txt}",
309*d57664e9SAndroid Build Coastguard Worker    ],
310*d57664e9SAndroid Build Coastguard Worker    tool_files: ["gen_combined_removed_dex.sh"],
311*d57664e9SAndroid Build Coastguard Worker    tools: ["metalava"],
312*d57664e9SAndroid Build Coastguard Worker    out: ["combined-removed-dex.txt"],
313*d57664e9SAndroid Build Coastguard Worker    cmd: "$(location gen_combined_removed_dex.sh) $(location metalava) $(genDir) $(in) > $(out)",
314*d57664e9SAndroid Build Coastguard Worker}
315*d57664e9SAndroid Build Coastguard Worker
316*d57664e9SAndroid Build Coastguard Workerjava_genrule {
317*d57664e9SAndroid Build Coastguard Worker    name: "api_fingerprint",
318*d57664e9SAndroid Build Coastguard Worker    srcs: [
319*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-current.txt",
320*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-system-current.txt",
321*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-module-lib-current.txt",
322*d57664e9SAndroid Build Coastguard Worker        ":frameworks-base-api-system-server-current.txt",
323*d57664e9SAndroid Build Coastguard Worker    ],
324*d57664e9SAndroid Build Coastguard Worker    out: ["api_fingerprint.txt"],
325*d57664e9SAndroid Build Coastguard Worker    cmd: "cat $(in) | md5sum | cut -d' ' -f1 > $(out)",
326*d57664e9SAndroid Build Coastguard Worker}
327*d57664e9SAndroid Build Coastguard Worker
328*d57664e9SAndroid Build Coastguard Workerpackages_to_document = [
329*d57664e9SAndroid Build Coastguard Worker    "android",
330*d57664e9SAndroid Build Coastguard Worker    "dalvik",
331*d57664e9SAndroid Build Coastguard Worker    "java",
332*d57664e9SAndroid Build Coastguard Worker    "javax",
333*d57664e9SAndroid Build Coastguard Worker    "junit",
334*d57664e9SAndroid Build Coastguard Worker    "org.apache.http",
335*d57664e9SAndroid Build Coastguard Worker    "org.json",
336*d57664e9SAndroid Build Coastguard Worker    "org.w3c.dom",
337*d57664e9SAndroid Build Coastguard Worker    "org.xml.sax",
338*d57664e9SAndroid Build Coastguard Worker    "org.xmlpull",
339*d57664e9SAndroid Build Coastguard Worker]
340*d57664e9SAndroid Build Coastguard Worker
341*d57664e9SAndroid Build Coastguard Worker// These are libs from framework-internal-utils that are required (i.e. being referenced)
342*d57664e9SAndroid Build Coastguard Worker// from framework-non-updatable-sources. Add more here when there's a need.
343*d57664e9SAndroid Build Coastguard Worker// DO NOT add the entire framework-internal-utils. It might cause unnecessary circular
344*d57664e9SAndroid Build Coastguard Worker// dependencies when the list gets bigger.
345*d57664e9SAndroid Build Coastguard Workerandroid_non_updatable_stubs_libs = [
346*d57664e9SAndroid Build Coastguard Worker    "android.hardware.cas-V1.2-java",
347*d57664e9SAndroid Build Coastguard Worker    "android.hardware.health-V1.0-java-constants",
348*d57664e9SAndroid Build Coastguard Worker    "android.hardware.thermal-V1.0-java-constants",
349*d57664e9SAndroid Build Coastguard Worker    "android.hardware.thermal-V2.0-java",
350*d57664e9SAndroid Build Coastguard Worker    "android.hardware.tv.input-V1.0-java-constants",
351*d57664e9SAndroid Build Coastguard Worker    "android.hardware.usb-V1.0-java-constants",
352*d57664e9SAndroid Build Coastguard Worker    "android.hardware.usb-V1.1-java-constants",
353*d57664e9SAndroid Build Coastguard Worker    "android.hardware.usb.gadget-V1.0-java",
354*d57664e9SAndroid Build Coastguard Worker    "android.hardware.vibrator-V1.3-java",
355*d57664e9SAndroid Build Coastguard Worker    "framework-protos",
356*d57664e9SAndroid Build Coastguard Worker]
357*d57664e9SAndroid Build Coastguard Worker
358*d57664e9SAndroid Build Coastguard Workerjava_defaults {
359*d57664e9SAndroid Build Coastguard Worker    name: "android-non-updatable-stubs-libs-defaults",
360*d57664e9SAndroid Build Coastguard Worker    libs: android_non_updatable_stubs_libs,
361*d57664e9SAndroid Build Coastguard Worker}
362*d57664e9SAndroid Build Coastguard Worker
363*d57664e9SAndroid Build Coastguard Worker// Defaults for all stubs that include the non-updatable framework. These defaults do not include
364*d57664e9SAndroid Build Coastguard Worker// module symbols, so will not compile correctly on their own. Users must add module APIs to the
365*d57664e9SAndroid Build Coastguard Worker// classpath (or sources) somehow.
366*d57664e9SAndroid Build Coastguard Workerstubs_defaults {
367*d57664e9SAndroid Build Coastguard Worker    name: "android-non-updatable-stubs-defaults",
368*d57664e9SAndroid Build Coastguard Worker    aconfig_declarations: ["framework-minus-apex-aconfig-declarations"],
369*d57664e9SAndroid Build Coastguard Worker    srcs: [":android-non-updatable-stub-sources"],
370*d57664e9SAndroid Build Coastguard Worker    sdk_version: "none",
371*d57664e9SAndroid Build Coastguard Worker    system_modules: "none",
372*d57664e9SAndroid Build Coastguard Worker    java_version: "1.8",
373*d57664e9SAndroid Build Coastguard Worker    arg_files: [":frameworks-base-core-AndroidManifest.xml"],
374*d57664e9SAndroid Build Coastguard Worker    aidl: {
375*d57664e9SAndroid Build Coastguard Worker        include_dirs: [
376*d57664e9SAndroid Build Coastguard Worker            "frameworks/av/aidl",
377*d57664e9SAndroid Build Coastguard Worker            "frameworks/base/media/aidl",
378*d57664e9SAndroid Build Coastguard Worker            "frameworks/base/telephony/java",
379*d57664e9SAndroid Build Coastguard Worker            "frameworks/native/libs/permission/aidl",
380*d57664e9SAndroid Build Coastguard Worker            "packages/modules/Bluetooth/framework/aidl-export",
381*d57664e9SAndroid Build Coastguard Worker            "packages/modules/Connectivity/framework/aidl-export",
382*d57664e9SAndroid Build Coastguard Worker            "packages/modules/Media/apex/aidl/stable",
383*d57664e9SAndroid Build Coastguard Worker            "hardware/interfaces/biometrics/common/aidl",
384*d57664e9SAndroid Build Coastguard Worker            "hardware/interfaces/biometrics/fingerprint/aidl",
385*d57664e9SAndroid Build Coastguard Worker            "hardware/interfaces/common/aidl",
386*d57664e9SAndroid Build Coastguard Worker            "hardware/interfaces/common/fmq/aidl",
387*d57664e9SAndroid Build Coastguard Worker            "hardware/interfaces/graphics/common/aidl",
388*d57664e9SAndroid Build Coastguard Worker            "hardware/interfaces/keymaster/aidl",
389*d57664e9SAndroid Build Coastguard Worker            "hardware/interfaces/power/aidl",
390*d57664e9SAndroid Build Coastguard Worker            "system/hardware/interfaces/media/aidl",
391*d57664e9SAndroid Build Coastguard Worker        ],
392*d57664e9SAndroid Build Coastguard Worker    },
393*d57664e9SAndroid Build Coastguard Worker    // These are libs from framework-internal-utils that are required (i.e. being referenced)
394*d57664e9SAndroid Build Coastguard Worker    // from framework-non-updatable-sources. Add more here when there's a need.
395*d57664e9SAndroid Build Coastguard Worker    // DO NOT add the entire framework-internal-utils. It might cause unnecessary circular
396*d57664e9SAndroid Build Coastguard Worker    // dependencies gets bigger.
397*d57664e9SAndroid Build Coastguard Worker    libs: android_non_updatable_stubs_libs,
398*d57664e9SAndroid Build Coastguard Worker    flags: [
399*d57664e9SAndroid Build Coastguard Worker        "--error NoSettingsProvider",
400*d57664e9SAndroid Build Coastguard Worker        "--error UnhiddenSystemApi",
401*d57664e9SAndroid Build Coastguard Worker        "--error UnflaggedApi",
402*d57664e9SAndroid Build Coastguard Worker        "--error FlaggedApiLiteral",
403*d57664e9SAndroid Build Coastguard Worker        "--force-convert-to-warning-nullability-annotations +*:-android.*:+android.icu.*:-dalvik.*",
404*d57664e9SAndroid Build Coastguard Worker        // Disable CallbackInterface, as Java 8 default interface methods avoid the extensibility
405*d57664e9SAndroid Build Coastguard Worker        // issue interfaces had previously.
406*d57664e9SAndroid Build Coastguard Worker        "--hide CallbackInterface",
407*d57664e9SAndroid Build Coastguard Worker        // Disable HiddenSuperclass, as Metalava handles this fine (it should be hidden by default)
408*d57664e9SAndroid Build Coastguard Worker        "--hide HiddenSuperclass",
409*d57664e9SAndroid Build Coastguard Worker        "--manifest $(location :frameworks-base-core-AndroidManifest.xml)",
410*d57664e9SAndroid Build Coastguard Worker    ],
411*d57664e9SAndroid Build Coastguard Worker    filter_packages: packages_to_document,
412*d57664e9SAndroid Build Coastguard Worker    high_mem: true, // Lots of sources => high memory use, see b/170701554
413*d57664e9SAndroid Build Coastguard Worker    installable: false,
414*d57664e9SAndroid Build Coastguard Worker    annotations_enabled: true,
415*d57664e9SAndroid Build Coastguard Worker    merge_annotations_dirs: ["metalava-manual"],
416*d57664e9SAndroid Build Coastguard Worker    defaults_visibility: ["//frameworks/base/api"],
417*d57664e9SAndroid Build Coastguard Worker    visibility: [
418*d57664e9SAndroid Build Coastguard Worker        "//frameworks/base/api",
419*d57664e9SAndroid Build Coastguard Worker        "//frameworks/base/core/api",
420*d57664e9SAndroid Build Coastguard Worker    ],
421*d57664e9SAndroid Build Coastguard Worker}
422*d57664e9SAndroid Build Coastguard Worker
423*d57664e9SAndroid Build Coastguard Workersoong_config_module_type {
424*d57664e9SAndroid Build Coastguard Worker    name: "non_updatable_exportable_droidstubs",
425*d57664e9SAndroid Build Coastguard Worker    module_type: "droidstubs",
426*d57664e9SAndroid Build Coastguard Worker    config_namespace: "ANDROID",
427*d57664e9SAndroid Build Coastguard Worker    bool_variables: [
428*d57664e9SAndroid Build Coastguard Worker        "release_hidden_api_exportable_stubs",
429*d57664e9SAndroid Build Coastguard Worker    ],
430*d57664e9SAndroid Build Coastguard Worker    properties: [
431*d57664e9SAndroid Build Coastguard Worker        "dists",
432*d57664e9SAndroid Build Coastguard Worker    ],
433*d57664e9SAndroid Build Coastguard Worker}
434*d57664e9SAndroid Build Coastguard Worker
435*d57664e9SAndroid Build Coastguard Worker// We resolve dependencies on APIs in modules by depending on a prebuilt of the whole
436*d57664e9SAndroid Build Coastguard Worker// platform (sdk_system_current_android). That prebuilt does not include module-lib APIs,
437*d57664e9SAndroid Build Coastguard Worker// so use the prebuilt module-lib stubs for modules that export module-lib stubs that the
438*d57664e9SAndroid Build Coastguard Worker// non-updatable part depends on.
439*d57664e9SAndroid Build Coastguard Workernon_updatable_api_deps_on_modules = [
440*d57664e9SAndroid Build Coastguard Worker    "sdk_module-lib_current_framework-tethering",
441*d57664e9SAndroid Build Coastguard Worker    "sdk_module-lib_current_framework-connectivity-t",
442*d57664e9SAndroid Build Coastguard Worker    "sdk_system_current_android",
443*d57664e9SAndroid Build Coastguard Worker]
444*d57664e9SAndroid Build Coastguard Worker
445*d57664e9SAndroid Build Coastguard Workerjava_defaults {
446*d57664e9SAndroid Build Coastguard Worker    name: "module-classpath-java-defaults",
447*d57664e9SAndroid Build Coastguard Worker    libs: non_updatable_api_deps_on_modules,
448*d57664e9SAndroid Build Coastguard Worker}
449*d57664e9SAndroid Build Coastguard Worker
450*d57664e9SAndroid Build Coastguard Worker// Defaults with module APIs in the classpath (mostly from prebuilts).
451*d57664e9SAndroid Build Coastguard Worker// Suitable for compiling android-non-updatable.
452*d57664e9SAndroid Build Coastguard Workerstubs_defaults {
453*d57664e9SAndroid Build Coastguard Worker    name: "module-classpath-stubs-defaults",
454*d57664e9SAndroid Build Coastguard Worker    aidl: {
455*d57664e9SAndroid Build Coastguard Worker        include_dirs: [
456*d57664e9SAndroid Build Coastguard Worker            "packages/modules/Bluetooth/framework/aidl-export",
457*d57664e9SAndroid Build Coastguard Worker            "packages/modules/Connectivity/framework/aidl-export",
458*d57664e9SAndroid Build Coastguard Worker            "packages/modules/Media/apex/aidl/stable",
459*d57664e9SAndroid Build Coastguard Worker        ],
460*d57664e9SAndroid Build Coastguard Worker    },
461*d57664e9SAndroid Build Coastguard Worker    libs: non_updatable_api_deps_on_modules,
462*d57664e9SAndroid Build Coastguard Worker}
463*d57664e9SAndroid Build Coastguard Worker
464*d57664e9SAndroid Build Coastguard Worker// Defaults for the java_sdk_libraries of unbundled jars from framework.
465*d57664e9SAndroid Build Coastguard Worker// java_sdk_libraries using these defaults should also add themselves to the
466*d57664e9SAndroid Build Coastguard Worker// non_updatable_modules list in frameworks/base/api/api.go
467*d57664e9SAndroid Build Coastguard Workerjava_defaults {
468*d57664e9SAndroid Build Coastguard Worker    name: "framework-non-updatable-unbundled-defaults",
469*d57664e9SAndroid Build Coastguard Worker    defaults: [
470*d57664e9SAndroid Build Coastguard Worker        "framework-non-updatable-lint-defaults",
471*d57664e9SAndroid Build Coastguard Worker        "non-updatable-framework-module-defaults",
472*d57664e9SAndroid Build Coastguard Worker    ],
473*d57664e9SAndroid Build Coastguard Worker    public: {
474*d57664e9SAndroid Build Coastguard Worker        libs: ["android_module_lib_stubs_current"],
475*d57664e9SAndroid Build Coastguard Worker    },
476*d57664e9SAndroid Build Coastguard Worker    system: {
477*d57664e9SAndroid Build Coastguard Worker        libs: ["android_module_lib_stubs_current"],
478*d57664e9SAndroid Build Coastguard Worker    },
479*d57664e9SAndroid Build Coastguard Worker    module_lib: {
480*d57664e9SAndroid Build Coastguard Worker        libs: ["android_module_lib_stubs_current"],
481*d57664e9SAndroid Build Coastguard Worker    },
482*d57664e9SAndroid Build Coastguard Worker    test: {
483*d57664e9SAndroid Build Coastguard Worker        libs: ["android_test_frameworks_core_stubs_current"],
484*d57664e9SAndroid Build Coastguard Worker    },
485*d57664e9SAndroid Build Coastguard Worker    sdk_version: "core_platform",
486*d57664e9SAndroid Build Coastguard Worker    stub_only_libs: ["framework-protos"],
487*d57664e9SAndroid Build Coastguard Worker    impl_only_libs: ["framework-minus-apex-headers"], // the framework, including hidden API
488*d57664e9SAndroid Build Coastguard Worker    impl_library_visibility: ["//frameworks/base"],
489*d57664e9SAndroid Build Coastguard Worker    defaults_visibility: [
490*d57664e9SAndroid Build Coastguard Worker        "//frameworks/base/location",
491*d57664e9SAndroid Build Coastguard Worker        "//frameworks/base/packages/CrashRecovery/framework",
492*d57664e9SAndroid Build Coastguard Worker        "//frameworks/base/nfc",
493*d57664e9SAndroid Build Coastguard Worker        "//packages/modules/NeuralNetworks:__subpackages__",
494*d57664e9SAndroid Build Coastguard Worker    ],
495*d57664e9SAndroid Build Coastguard Worker    plugins: ["error_prone_android_framework"],
496*d57664e9SAndroid Build Coastguard Worker    errorprone: {
497*d57664e9SAndroid Build Coastguard Worker        javacflags: [
498*d57664e9SAndroid Build Coastguard Worker            "-Xep:AndroidFrameworkCompatChange:ERROR",
499*d57664e9SAndroid Build Coastguard Worker            "-Xep:AndroidFrameworkUid:ERROR",
500*d57664e9SAndroid Build Coastguard Worker        ],
501*d57664e9SAndroid Build Coastguard Worker    },
502*d57664e9SAndroid Build Coastguard Worker    // Include manual annotations in API txt files
503*d57664e9SAndroid Build Coastguard Worker    merge_annotations_dirs: ["metalava-manual"],
504*d57664e9SAndroid Build Coastguard Worker}
505*d57664e9SAndroid Build Coastguard Worker
506*d57664e9SAndroid Build Coastguard Workerbuild = [
507*d57664e9SAndroid Build Coastguard Worker    "ApiDocs.bp",
508*d57664e9SAndroid Build Coastguard Worker    "StubLibraries.bp",
509*d57664e9SAndroid Build Coastguard Worker]
510*d57664e9SAndroid Build Coastguard Worker
511*d57664e9SAndroid Build Coastguard Workergenrule_defaults {
512*d57664e9SAndroid Build Coastguard Worker    name: "flag-api-mapping-generation-defaults",
513*d57664e9SAndroid Build Coastguard Worker    cmd: "$(location extract-flagged-apis) $(in) $(out)",
514*d57664e9SAndroid Build Coastguard Worker    tools: ["extract-flagged-apis"],
515*d57664e9SAndroid Build Coastguard Worker}
516*d57664e9SAndroid Build Coastguard Worker
517*d57664e9SAndroid Build Coastguard Workerjava_genrule {
518*d57664e9SAndroid Build Coastguard Worker    name: "flag-api-mapping-PublicApi",
519*d57664e9SAndroid Build Coastguard Worker    defaults: ["flag-api-mapping-generation-defaults"],
520*d57664e9SAndroid Build Coastguard Worker    srcs: [":frameworks-base-api-current.txt"],
521*d57664e9SAndroid Build Coastguard Worker    out: ["flag_api_map.textproto"],
522*d57664e9SAndroid Build Coastguard Worker    dist: {
523*d57664e9SAndroid Build Coastguard Worker        targets: ["droid"],
524*d57664e9SAndroid Build Coastguard Worker    },
525*d57664e9SAndroid Build Coastguard Worker}
526*d57664e9SAndroid Build Coastguard Worker
527*d57664e9SAndroid Build Coastguard Workerjava_genrule {
528*d57664e9SAndroid Build Coastguard Worker    name: "flag-api-mapping-SystemApi",
529*d57664e9SAndroid Build Coastguard Worker    defaults: ["flag-api-mapping-generation-defaults"],
530*d57664e9SAndroid Build Coastguard Worker    srcs: [":frameworks-base-api-system-current.txt"],
531*d57664e9SAndroid Build Coastguard Worker    out: ["system_flag_api_map.textproto"],
532*d57664e9SAndroid Build Coastguard Worker    dist: {
533*d57664e9SAndroid Build Coastguard Worker        targets: ["droid"],
534*d57664e9SAndroid Build Coastguard Worker    },
535*d57664e9SAndroid Build Coastguard Worker}
536*d57664e9SAndroid Build Coastguard Worker
537*d57664e9SAndroid Build Coastguard Workerjava_genrule {
538*d57664e9SAndroid Build Coastguard Worker    name: "flag-api-mapping-ModuleLibApi",
539*d57664e9SAndroid Build Coastguard Worker    defaults: ["flag-api-mapping-generation-defaults"],
540*d57664e9SAndroid Build Coastguard Worker    srcs: [":frameworks-base-api-module-lib-current.txt"],
541*d57664e9SAndroid Build Coastguard Worker    out: ["module_lib_flag_api_map.textproto"],
542*d57664e9SAndroid Build Coastguard Worker    dist: {
543*d57664e9SAndroid Build Coastguard Worker        targets: ["droid"],
544*d57664e9SAndroid Build Coastguard Worker    },
545*d57664e9SAndroid Build Coastguard Worker}
546*d57664e9SAndroid Build Coastguard Worker
547*d57664e9SAndroid Build Coastguard Workerjava_genrule {
548*d57664e9SAndroid Build Coastguard Worker    name: "flag-api-mapping-SystemServerApi",
549*d57664e9SAndroid Build Coastguard Worker    defaults: ["flag-api-mapping-generation-defaults"],
550*d57664e9SAndroid Build Coastguard Worker    srcs: [":frameworks-base-api-system-server-current.txt"],
551*d57664e9SAndroid Build Coastguard Worker    out: ["system_server_flag_api_map.textproto"],
552*d57664e9SAndroid Build Coastguard Worker    dist: {
553*d57664e9SAndroid Build Coastguard Worker        targets: ["droid"],
554*d57664e9SAndroid Build Coastguard Worker    },
555*d57664e9SAndroid Build Coastguard Worker}
556*d57664e9SAndroid Build Coastguard Worker
557*d57664e9SAndroid Build Coastguard Workerphony_rule {
558*d57664e9SAndroid Build Coastguard Worker    name: "checkapi",
559*d57664e9SAndroid Build Coastguard Worker    phony_deps: [
560*d57664e9SAndroid Build Coastguard Worker        "frameworks-base-api-current-compat",
561*d57664e9SAndroid Build Coastguard Worker        "frameworks-base-api-system-current-compat",
562*d57664e9SAndroid Build Coastguard Worker        "frameworks-base-api-module-lib-current-compat",
563*d57664e9SAndroid Build Coastguard Worker    ],
564*d57664e9SAndroid Build Coastguard Worker}
565