blob: b46d179a6a715b79fcb58bbc4dd8a0df4d7dbe9f [file] [log] [blame]
Jiyong Park7fb4b182019-12-20 14:35:43 +09001// Copyright (C) 2019 The Android Open Source Project
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7// http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// How stubs are generated:
16//
17// raw source files --(metalava)--> stub source files --(javac)--> stub jar files
18//
19// The metalava conversion is done by droidstub modules *-api-stubs-docs.
20// The javac compilation is done by java_library modules android_*_stubs_current.
21// The metalava conversion is also responsible for creating API signature files
22// and comparing them against the last API signature in api/*-current.txt files
23// and also against the latest frozen API signature in prebuilts/sdk/*/*/api/android.txt
24// files.
25
26/////////////////////////////////////////////////////////////////////
27// Common metalava configs
28/////////////////////////////////////////////////////////////////////
29
30packages_to_document = [
31 "android",
32 "dalvik",
33 "java",
34 "javax",
35 "junit",
36 "org.apache.http",
37 "org.json",
38 "org.w3c.dom",
39 "org.xml.sax",
40 "org.xmlpull",
41]
42
43stubs_defaults {
Anton Hansson822cdb32020-03-06 17:16:06 +000044 name: "metalava-base-api-stubs-default",
Jiyong Park7fb4b182019-12-20 14:35:43 +090045 srcs: [
46 ":framework-non-updatable-sources",
Jiyong Park7fb4b182019-12-20 14:35:43 +090047 "core/java/**/*.logtags",
48 ":opt-telephony-srcs",
49 ":opt-net-voip-srcs",
Paul Duffin404b26a2020-09-16 14:26:47 +010050 ":art.module.public.api{.public.stubs.source}",
Paul Duffin5c89e702020-03-26 15:33:48 +000051 ":android_icu4j_public_api_files",
Ramy Medhataaa83862020-05-04 05:54:30 -040052 "**/package.html",
Jiyong Park7fb4b182019-12-20 14:35:43 +090053 ],
Ytai Ben-Tsvida7c21e2020-09-16 13:04:31 -070054 // TODO(b/147699819, b/169090544): remove below aidl includes.
Chen Xu546ce5e2020-01-10 08:38:31 -080055 aidl: {
Ytai Ben-Tsvida7c21e2020-09-16 13:04:31 -070056 local_include_dirs: [
57 "telephony/java",
58 "media/aidl",
59 ],
Ytai Ben-Tsvic3cd3cd2020-10-30 12:34:51 -070060 include_dirs: ["frameworks/av/aidl"],
Chen Xu546ce5e2020-01-10 08:38:31 -080061 },
Jiyong Parkc0f8a282020-09-29 13:43:00 +090062 // These are libs from framework-internal-utils that are required (i.e. being referenced)
63 // from framework-non-updatable-sources. Add more here when there's a need.
64 // DO NOT add the entire framework-internal-utils. It might cause unnecessary circular
65 // dependencies gets bigger.
66 libs: [
67 "android.hardware.cas-V1.2-java",
68 "android.hardware.health-V1.0-java-constants",
69 "android.hardware.radio-V1.5-java",
70 "android.hardware.thermal-V1.0-java-constants",
71 "android.hardware.thermal-V2.0-java",
72 "android.hardware.tv.input-V1.0-java-constants",
73 "android.hardware.tv.tuner-V1.0-java-constants",
Amy Zhang782aa902020-10-12 13:55:52 -070074 "android.hardware.tv.tuner-V1.1-java-constants",
Jiyong Parkc0f8a282020-09-29 13:43:00 +090075 "android.hardware.usb-V1.0-java-constants",
76 "android.hardware.usb-V1.1-java-constants",
77 "android.hardware.usb.gadget-V1.0-java",
78 "android.hardware.vibrator-V1.3-java",
79 "framework-protos",
80 ],
Anton Hansson35146892020-10-26 10:27:57 +000081 high_mem: true, // Lots of sources => high memory use, see b/170701554
Jiyong Park7fb4b182019-12-20 14:35:43 +090082 installable: false,
83 annotations_enabled: true,
Anton Hansson48ee95e2020-05-02 17:49:26 +010084 previous_api: ":android.api.public.latest",
Jiyong Park7fb4b182019-12-20 14:35:43 +090085 merge_annotations_dirs: [
86 "metalava-manual",
87 ],
Aurimas Liutikas94bac9c2020-03-12 17:06:12 -070088 api_levels_annotations_enabled: false,
Jiyong Park7fb4b182019-12-20 14:35:43 +090089 filter_packages: packages_to_document,
90}
91
Jiyong Parke3095162019-12-20 15:30:28 +090092stubs_defaults {
Anton Hansson822cdb32020-03-06 17:16:06 +000093 name: "metalava-full-api-stubs-default",
94 defaults: ["metalava-base-api-stubs-default"],
Anton Hanssone89d37d2020-05-07 12:06:00 +010095 srcs: [
Paul Duffine55d4e32020-05-14 17:55:46 +010096 ":conscrypt.module.public.api{.public.stubs.source}",
Anton Hanssone89d37d2020-05-07 12:06:00 +010097 ":framework-updatable-sources",
98 ],
Jiyong Parke3095162019-12-20 15:30:28 +090099 sdk_version: "core_platform",
100}
101
Anton Hansson822cdb32020-03-06 17:16:06 +0000102stubs_defaults {
103 name: "metalava-non-updatable-api-stubs-default",
104 defaults: ["metalava-base-api-stubs-default"],
Anton Hansson92d79fd2020-03-20 09:12:52 +0000105 sdk_version: "core_platform",
Anton Hansson394febc2020-04-14 16:35:36 +0100106 // There are a few classes from modules used as type arguments that
107 // need to be resolved by metalava. For now, we can use a previously
108 // finalized stub library to resolve them. If a new class gets added,
109 // this may be need to be revisited to use a manually maintained stub
110 // library with empty classes in order to resolve those references.
Anton Hansson76d3db42020-04-09 14:16:37 +0100111 libs: ["sdk_system_30_android"],
Anton Hansson92d79fd2020-03-20 09:12:52 +0000112 aidl: {
Anton Hansson394febc2020-04-14 16:35:36 +0100113 local_include_dirs: ["apex/media/aidl/stable"],
Anton Hansson92d79fd2020-03-20 09:12:52 +0000114 },
Anton Hansson822cdb32020-03-06 17:16:06 +0000115}
116
Jiyong Park7fb4b182019-12-20 14:35:43 +0900117/////////////////////////////////////////////////////////////////////
Anton Hansson51861e72020-11-13 09:55:29 +0000118// These modules provide source files for the stub libraries
Jiyong Park7fb4b182019-12-20 14:35:43 +0900119/////////////////////////////////////////////////////////////////////
120
Anton Hansson76d3db42020-04-09 14:16:37 +0100121droidstubs {
122 name: "api-stubs-docs-non-updatable",
123 defaults: ["metalava-non-updatable-api-stubs-default"],
124 arg_files: ["core/res/AndroidManifest.xml"],
125 args: metalava_framework_docs_args,
126 check_api: {
127 current: {
Anton Hansson6cbaff22020-10-29 15:28:19 +0000128 api_file: "core/api/current.txt",
129 removed_api_file: "core/api/removed.txt",
Anton Hansson76d3db42020-04-09 14:16:37 +0100130 },
Anton Hansson37e102e2020-10-05 16:42:40 +0100131 last_released: {
132 api_file: ":android-non-updatable.api.public.latest",
133 removed_api_file: ":android-non-updatable-removed.api.public.latest",
134 baseline_file: ":public-api-incompatibilities-with-last-released",
135 },
Anton Hansson76d3db42020-04-09 14:16:37 +0100136 api_lint: {
137 enabled: true,
138 new_since: ":android-non-updatable.api.public.latest",
139 },
140 },
141}
142
Anton Hansson81969c22020-02-03 20:45:56 +0000143priv_apps = " " +
144 "--show-annotation android.annotation.SystemApi\\(" +
145 "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" +
146 "\\) "
147
148module_libs = " " +
149 " --show-annotation android.annotation.SystemApi\\(" +
150 "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES" +
Makoto Onuki41ccbfb2020-07-10 12:05:21 -0700151 "\\)" +
152 " --show-for-stub-purposes-annotation android.annotation.SystemApi\\(" +
153 "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" +
Anton Hansson81969c22020-02-03 20:45:56 +0000154 "\\) "
155
Jiyong Park7fb4b182019-12-20 14:35:43 +0900156droidstubs {
Anton Hansson76d3db42020-04-09 14:16:37 +0100157 name: "system-api-stubs-docs-non-updatable",
158 defaults: ["metalava-non-updatable-api-stubs-default"],
159 arg_files: ["core/res/AndroidManifest.xml"],
160 args: metalava_framework_docs_args + priv_apps,
161 check_api: {
162 current: {
Anton Hansson6cbaff22020-10-29 15:28:19 +0000163 api_file: "core/api/system-current.txt",
164 removed_api_file: "core/api/system-removed.txt",
Anton Hansson76d3db42020-04-09 14:16:37 +0100165 },
Anton Hansson37e102e2020-10-05 16:42:40 +0100166 last_released: {
167 api_file: ":android-non-updatable.api.system.latest",
168 removed_api_file: ":android-non-updatable-removed.api.system.latest",
169 baseline_file: ":system-api-incompatibilities-with-last-released"
170 },
Anton Hansson76d3db42020-04-09 14:16:37 +0100171 api_lint: {
172 enabled: true,
173 new_since: ":android-non-updatable.api.system.latest",
Anton Hansson6cbaff22020-10-29 15:28:19 +0000174 baseline_file: "core/api/system-lint-baseline.txt",
Anton Hansson76d3db42020-04-09 14:16:37 +0100175 },
176 },
177}
178
179droidstubs {
Anton Hansson022aac52020-11-05 10:45:13 +0000180 name: "test-api-stubs-docs-non-updatable",
Anton Hansson7ce31c12020-10-15 18:38:49 +0100181 defaults: ["metalava-non-updatable-api-stubs-default"],
Jiyong Park7fb4b182019-12-20 14:35:43 +0900182 arg_files: [
183 "core/res/AndroidManifest.xml",
184 ],
Anton Hanssona2b34972020-10-09 10:13:51 +0100185 args: metalava_framework_docs_args
186 + " --show-annotation android.annotation.TestApi"
187 + " --show-for-stub-purposes-annotation android.annotation.SystemApi\\("
188 + "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS"
189 + "\\)",
Jiyong Park7fb4b182019-12-20 14:35:43 +0900190 check_api: {
191 current: {
Anton Hansson022aac52020-11-05 10:45:13 +0000192 api_file: "core/api/test-current.txt",
193 removed_api_file: "core/api/test-removed.txt",
Jiyong Park7fb4b182019-12-20 14:35:43 +0900194 },
195 api_lint: {
196 enabled: true,
Anton Hansson022aac52020-11-05 10:45:13 +0000197 baseline_file: "core/api/test-lint-baseline.txt",
Jiyong Park7fb4b182019-12-20 14:35:43 +0900198 },
199 },
Anton Hanssond9a3fee2020-03-23 18:08:55 +0000200 dist: {
201 targets: ["sdk", "win_sdk"],
202 dir: "apistubs/android/test/api",
203 dest: "android.txt",
204 },
Jiyong Park7fb4b182019-12-20 14:35:43 +0900205}
206
207/////////////////////////////////////////////////////////////////////
Anton Hansson43cc8bf2020-10-29 18:56:10 +0000208// Following droidstub module for extra APIs for modules,
Makoto Onuki41ccbfb2020-07-10 12:05:21 -0700209// namely @SystemApi(client=MODULE_LIBRARIES) APIs.
Jiyong Parke3095162019-12-20 15:30:28 +0900210/////////////////////////////////////////////////////////////////////
211
Jiyong Parke3095162019-12-20 15:30:28 +0900212droidstubs {
Anton Hansson76d3db42020-04-09 14:16:37 +0100213 name: "module-lib-api-stubs-docs-non-updatable",
214 defaults: ["metalava-non-updatable-api-stubs-default"],
215 arg_files: ["core/res/AndroidManifest.xml"],
Makoto Onukif4a486e2020-07-15 10:38:04 -0700216 args: metalava_framework_docs_args + priv_apps + module_libs,
Anton Hansson76d3db42020-04-09 14:16:37 +0100217 check_api: {
218 current: {
Anton Hansson6cbaff22020-10-29 15:28:19 +0000219 api_file: "core/api/module-lib-current.txt",
220 removed_api_file: "core/api/module-lib-removed.txt",
Anton Hansson76d3db42020-04-09 14:16:37 +0100221 },
Anton Hanssonc3ef1f562020-10-07 14:55:36 +0100222 last_released: {
223 api_file: ":android-non-updatable.api.module-lib.latest",
224 removed_api_file: ":android-non-updatable-removed.api.module-lib.latest",
225 },
Anton Hansson76d3db42020-04-09 14:16:37 +0100226 api_lint: {
227 enabled: true,
228 new_since: ":android-non-updatable.api.module-lib.latest",
229 },
230 },
231}
Anton Hansson81969c22020-02-03 20:45:56 +0000232
Jiyong Parke3095162019-12-20 15:30:28 +0900233/////////////////////////////////////////////////////////////////////
Jiyong Park7fb4b182019-12-20 14:35:43 +0900234// android_*_stubs_current modules are the stubs libraries compiled
235// from *-api-stubs-docs
236/////////////////////////////////////////////////////////////////////
237
238java_defaults {
Anton Hanssonfbd32f32020-04-09 14:16:37 +0100239 name: "android_defaults_stubs_current",
Anton Hansson08b48bb2020-02-08 20:43:19 +0000240 libs: [ "stub-annotations" ],
Paul Duffina281e922020-03-25 10:13:33 +0000241 static_libs: [
Paul Duffina281e922020-03-25 10:13:33 +0000242 // License notices from art module
243 "art-notices-for-framework-stubs-jar",
Anton Hanssoncf42e982020-08-13 19:40:13 +0100244 "framework-res-package-jar", // Export package of framework-res
Paul Duffina281e922020-03-25 10:13:33 +0000245 ],
Jiyong Park7fb4b182019-12-20 14:35:43 +0900246 errorprone: {
247 javacflags: [
248 "-XepDisableAllChecks",
249 ],
250 },
Anton Hanssonfbd32f32020-04-09 14:16:37 +0100251 sdk_version: "none",
Jiyong Park7fb4b182019-12-20 14:35:43 +0900252 system_modules: "none",
253 java_version: "1.8",
254 compile_dex: true,
255}
256
Anton Hansson53cf0ba2020-08-18 12:35:31 +0000257java_defaults {
258 name: "android_stubs_dists_default",
259 dist: {
260 targets: ["sdk", "win_sdk"],
261 tag: ".jar",
262 dest: "android.jar",
263 },
264}
265
Jiyong Park7fb4b182019-12-20 14:35:43 +0900266java_library_static {
Anton Hansson65aa6ea2020-11-03 19:35:56 +0000267 name: "android_stubs_current",
Anton Hansson76d3db42020-04-09 14:16:37 +0100268 srcs: [ ":api-stubs-docs-non-updatable" ],
269 static_libs: [
270 "conscrypt.module.public.api.stubs",
Anton Hanssond74139e2020-10-08 14:59:17 +0100271 "framework-appsearch.stubs",
Paul Duffin4e006622020-05-31 16:55:13 +0100272 "framework-graphics.stubs",
Paul Duffin8b864fb2020-05-31 11:35:50 +0100273 "framework-media.stubs",
274 "framework-mediaprovider.stubs",
275 "framework-permission.stubs",
276 "framework-sdkextensions.stubs",
277 "framework-statsd.stubs",
278 "framework-tethering.stubs",
279 "framework-wifi.stubs",
Anton Hanssonbf63f942020-05-20 12:06:23 +0100280 "private-stub-annotations-jar",
Anton Hansson76d3db42020-04-09 14:16:37 +0100281 ],
Anton Hansson53cf0ba2020-08-18 12:35:31 +0000282 defaults: [
283 "android_defaults_stubs_current",
284 "android_stubs_dists_default",
285 ],
286 dist: {
287 dir: "apistubs/android/system",
288 },
289 dists: [
290 {
291 // Legacy dist path
292 targets: ["sdk", "win_sdk"],
293 tag: ".jar",
294 dest: "android_system.jar",
295 },
296 ],
Jiyong Park7fb4b182019-12-20 14:35:43 +0900297}
298
299java_library_static {
Anton Hansson65aa6ea2020-11-03 19:35:56 +0000300 name: "android_system_stubs_current",
Anton Hansson76d3db42020-04-09 14:16:37 +0100301 srcs: [ ":system-api-stubs-docs-non-updatable" ],
302 static_libs: [
303 "conscrypt.module.public.api.stubs",
Anton Hansson25a0a2b2020-10-08 13:43:48 +0100304 "framework-appsearch.stubs.system",
Paul Duffin4e006622020-05-31 16:55:13 +0100305 "framework-graphics.stubs.system",
Paul Duffin8b864fb2020-05-31 11:35:50 +0100306 "framework-media.stubs.system",
307 "framework-mediaprovider.stubs.system",
308 "framework-permission.stubs.system",
309 "framework-sdkextensions.stubs.system",
310 "framework-statsd.stubs.system",
311 "framework-tethering.stubs.system",
312 "framework-wifi.stubs.system",
Anton Hanssonbf63f942020-05-20 12:06:23 +0100313 "private-stub-annotations-jar",
Anton Hansson76d3db42020-04-09 14:16:37 +0100314 ],
315 defaults: ["android_defaults_stubs_current"],
316}
317
318java_library_static {
Jiyong Park7fb4b182019-12-20 14:35:43 +0900319 name: "android_test_stubs_current",
Anton Hansson022aac52020-11-05 10:45:13 +0000320 srcs: [ ":test-api-stubs-docs-non-updatable" ],
Anton Hansson7ce31c12020-10-15 18:38:49 +0100321 static_libs: [
322 // Modules do not have test APIs, but we want to include their SystemApis, like we include
323 // the SystemApi of framework-non-updatable-sources.
324 "conscrypt.module.public.api.stubs",
325 "framework-appsearch.stubs.system",
326 "framework-graphics.stubs.system",
327 "framework-media.stubs.system",
328 "framework-mediaprovider.stubs.system",
329 "framework-permission.stubs.system",
330 "framework-sdkextensions.stubs.system",
331 "framework-statsd.stubs.system",
332 "framework-tethering.stubs.system",
333 "framework-wifi.stubs.system",
334 "private-stub-annotations-jar",
335 ],
Anton Hansson53cf0ba2020-08-18 12:35:31 +0000336 defaults: [
337 "android_defaults_stubs_current",
338 "android_stubs_dists_default",
339 ],
340 dist: {
341 dir: "apistubs/android/test",
342 },
343 dists: [
344 {
345 // Legacy dist path
346 targets: ["sdk", "win_sdk"],
347 tag: ".jar",
348 dest: "android_test.jar",
349 },
350 ],
Jiyong Parke3095162019-12-20 15:30:28 +0900351}
352
353java_library_static {
Anton Hansson1b9cf092020-01-30 12:09:02 +0000354 name: "android_module_lib_stubs_current",
Makoto Onukif4a486e2020-07-15 10:38:04 -0700355 srcs: [ ":module-lib-api-stubs-docs-non-updatable" ],
Anton Hansson53cf0ba2020-08-18 12:35:31 +0000356 defaults: [
357 "android_defaults_stubs_current",
358 "android_stubs_dists_default",
359 ],
Anton Hansson394febc2020-04-14 16:35:36 +0100360 libs: ["sdk_system_29_android"],
Anton Hansson53cf0ba2020-08-18 12:35:31 +0000361 dist: {
362 dir: "apistubs/android/module-lib",
363 },
Jiyong Park7fb4b182019-12-20 14:35:43 +0900364}
365
Anton Hansson76d3db42020-04-09 14:16:37 +0100366java_library_static {
367 name: "android_non_updatable_stubs_current",
368 srcs: [":api-stubs-docs-non-updatable"],
369 defaults: ["android_defaults_stubs_current"],
370 libs: ["sdk_system_29_android"],
371}
372
373java_library_static {
374 name: "android_system_non_updatable_stubs_current",
375 srcs: [":system-api-stubs-docs-non-updatable"],
376 defaults: ["android_defaults_stubs_current"],
377 libs: ["sdk_system_29_android"],
378}
379
Jiyong Park7fb4b182019-12-20 14:35:43 +0900380/////////////////////////////////////////////////////////////////////
381// hwbinder.stubs provides APIs required for building HIDL Java
382// libraries.
383/////////////////////////////////////////////////////////////////////
384
385droidstubs {
386 name: "hwbinder-stubs-docs",
387 srcs: [
388 "core/java/android/os/HidlSupport.java",
389 "core/java/android/annotation/IntDef.java",
390 "core/java/android/annotation/IntRange.java",
391 "core/java/android/annotation/NonNull.java",
392 "core/java/android/annotation/SystemApi.java",
393 "core/java/android/os/HidlMemory.java",
394 "core/java/android/os/HwBinder.java",
395 "core/java/android/os/HwBlob.java",
396 "core/java/android/os/HwParcel.java",
397 "core/java/android/os/IHwBinder.java",
398 "core/java/android/os/IHwInterface.java",
399 "core/java/android/os/DeadObjectException.java",
400 "core/java/android/os/DeadSystemException.java",
401 "core/java/android/os/NativeHandle.java",
402 "core/java/android/os/RemoteException.java",
403 "core/java/android/util/AndroidException.java",
404 ],
405 installable: false,
406 sdk_version: "core_platform",
407 annotations_enabled: true,
Anton Hansson48ee95e2020-05-02 17:49:26 +0100408 previous_api: ":android.api.public.latest",
Jiyong Park7fb4b182019-12-20 14:35:43 +0900409 merge_annotations_dirs: [
410 "metalava-manual",
411 ],
Anton Hansson81969c22020-02-03 20:45:56 +0000412 args: priv_apps,
Jiyong Park7fb4b182019-12-20 14:35:43 +0900413}
414
415java_library_static {
416 name: "hwbinder.stubs",
417 sdk_version: "core_current",
418 srcs: [
419 ":hwbinder-stubs-docs",
420 ],
421}