From 369bafac969a8f0f92eeee459d48bc979339cb58 Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Wed, 8 Apr 2020 16:37:10 +0100 Subject: [PATCH 1/5] Use module_current to build module stubs module_current is always built from sources, whereas the other SDK jars are being transitioned to be composed of a set of stubs. This avoids the dependency cycle of module stubs depending on themselves. Bug: 144149403 Test: m Change-Id: I31c6d0fa958aa502131352716a9f950828b7829c Merged-In: I31c6d0fa958aa502131352716a9f950828b7829c (cherry picked from commit eb34cbee12039167dadcc6ae02ba1aad7b9a08b7) --- apex/Android.bp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apex/Android.bp b/apex/Android.bp index 79ab3e4e7be96..1d147742b9933 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -136,7 +136,7 @@ stubs_defaults { name: "framework-module-stubs-defaults-publicapi", args: mainline_framework_stubs_args, installable: false, - sdk_version: "current", + sdk_version: "module_current", filter_packages: framework_packages_to_document, check_api: { current: { @@ -151,7 +151,7 @@ stubs_defaults { args: mainline_framework_stubs_args + priv_apps, libs: ["framework-annotations-lib"], installable: false, - sdk_version: "system_current", + sdk_version: "module_current", filter_packages: framework_packages_to_document, check_api: { current: { From 6f646a5f13addb01126978c49e75d70f7a7c70dc Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Wed, 25 Mar 2020 13:30:03 +0000 Subject: [PATCH 2/5] Dist module stub libraries for in sdk builds Makes the stub libraries accessible to update_prebuilts.py, so they can be finalized together with their txt files (already dist'd). Bug: 149293194 Test: m dist sdk && find out/dist -name 'framework-*.jar' Change-Id: Id4070113bf786bf79573d7b29cd98fcd86e20851 Merged-In: Id4070113bf786bf79573d7b29cd98fcd86e20851 (cherry picked from commit 5259a14d53a51871aef4636aef19b00ae41193b8) --- apex/Android.bp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/apex/Android.bp b/apex/Android.bp index 1d147742b9933..5e0e57696933e 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -165,18 +165,30 @@ java_defaults { name: "framework-module-stubs-lib-defaults-publicapi", installable: false, sdk_version: "module_current", + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/public", + }, } java_defaults { name: "framework-module-stubs-lib-defaults-systemapi", installable: false, sdk_version: "module_current", + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/system", + }, } java_defaults { name: "framework-module-stubs-lib-defaults-module_libs_api", installable: false, sdk_version: "module_current", + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/module-lib", + }, } // The defaults for module_libs comes in two parts - defaults for API checks @@ -229,4 +241,8 @@ stubs_defaults { // module java_library system_server stub libs. java_defaults { name: "service-module-stubs-defaults", + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/system-server", + }, } From 8e4f83b9eb6174e9ee001308b6f2a9366a2b955e Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Wed, 20 May 2020 11:51:22 +0100 Subject: [PATCH 3/5] Include annotations in module metalava runs Without this, we don't get nullability annotations in the stub sources, nor the stubs themselves, which is a requirement for good interop with kotlin. Bug: 157010342 Test: m Test: javap -c -v out/soong/.intermediates/frameworks/base/apex/media/\ framework/framework-media-stubs-publicapi/android_common/javac/classes/\ android/media/MediaSession2.class | grep Null && echo success || echo fail Change-Id: I60c82e0fd495d379d7107e43542b846ca50b1e96 Merged-In: I60c82e0fd495d379d7107e43542b846ca50b1e96 --- apex/Android.bp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/apex/Android.bp b/apex/Android.bp index 5e0e57696933e..f28c090562cb6 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -137,6 +137,10 @@ stubs_defaults { args: mainline_framework_stubs_args, installable: false, sdk_version: "module_current", + annotations_enabled: true, + merge_annotations_dirs: [ + "metalava-manual", + ], filter_packages: framework_packages_to_document, check_api: { current: { @@ -152,6 +156,10 @@ stubs_defaults { libs: ["framework-annotations-lib"], installable: false, sdk_version: "module_current", + annotations_enabled: true, + merge_annotations_dirs: [ + "metalava-manual", + ], filter_packages: framework_packages_to_document, check_api: { current: { @@ -165,6 +173,7 @@ java_defaults { name: "framework-module-stubs-lib-defaults-publicapi", installable: false, sdk_version: "module_current", + libs: [ "stub-annotations" ], dist: { targets: ["sdk", "win_sdk"], dir: "apistubs/android/public", @@ -175,6 +184,7 @@ java_defaults { name: "framework-module-stubs-lib-defaults-systemapi", installable: false, sdk_version: "module_current", + libs: [ "stub-annotations" ], dist: { targets: ["sdk", "win_sdk"], dir: "apistubs/android/system", @@ -185,6 +195,7 @@ java_defaults { name: "framework-module-stubs-lib-defaults-module_libs_api", installable: false, sdk_version: "module_current", + libs: [ "stub-annotations" ], dist: { targets: ["sdk", "win_sdk"], dir: "apistubs/android/module-lib", @@ -202,6 +213,10 @@ stubs_defaults { libs: ["framework-annotations-lib"], installable: false, sdk_version: "module_current", + annotations_enabled: true, + merge_annotations_dirs: [ + "metalava-manual", + ], filter_packages: framework_packages_to_document, // Do not generate stubs as they are not needed @@ -221,6 +236,10 @@ stubs_defaults { libs: ["framework-annotations-lib"], installable: false, sdk_version: "module_current", + annotations_enabled: true, + merge_annotations_dirs: [ + "metalava-manual", + ], filter_packages: framework_packages_to_document, } @@ -228,6 +247,10 @@ stubs_defaults { name: "service-module-stubs-srcs-defaults", args: mainline_service_stubs_args, installable: false, + annotations_enabled: true, + merge_annotations_dirs: [ + "metalava-manual", + ], filter_packages: ["com.android."], check_api: { current: { From db43d8f3ab407202af8e657ecd0cbbd4f73716c4 Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Mon, 23 Mar 2020 17:04:23 +0000 Subject: [PATCH 4/5] Make module apis dist their output Only populate the targets and dir attributes. The output name will be autopopulated to the filename, which differs by module. Bug: 149293194 Test: m dist sdk && find out/dist/apistubs -name 'framework-*.txt' Change-Id: I8502eb90a10d8b1ca998c2eba5646c662638ce3f Merged-In: I8502eb90a10d8b1ca998c2eba5646c662638ce3f (cherry picked from commit a92a23bc69adc6ef61d2052433cea6dab41b91c2) --- apex/Android.bp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/apex/Android.bp b/apex/Android.bp index f28c090562cb6..388b24a4d5f59 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -148,6 +148,10 @@ stubs_defaults { removed_api_file: "api/removed.txt", }, }, + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/public/api", + }, } stubs_defaults { @@ -167,6 +171,10 @@ stubs_defaults { removed_api_file: "api/system-removed.txt", }, }, + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/system/api", + }, } java_defaults { @@ -228,6 +236,10 @@ stubs_defaults { removed_api_file: "api/module-lib-removed.txt", }, }, + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/module-lib/api", + }, } stubs_defaults { @@ -258,6 +270,10 @@ stubs_defaults { removed_api_file: "api/removed.txt", }, }, + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/system-server/api", + }, } // Empty for now, but a convenient place to add rules for all From 0a6553cc6fa8b8ef433106fd1c3bfcbfbd6d02cd Mon Sep 17 00:00:00 2001 From: Paul Duffin Date: Tue, 2 Jun 2020 17:48:57 +0100 Subject: [PATCH 5/5] Switch service-permissions to java_sdk_library (partial cherry-pick) Previously, the droidstubs generated the system-server API into the current.txt and removed.txt files which are usually associated with the public API surface. This change moves that specification into the system-server....txt files and verifies that no public APIs are leaking into the stubs. Bug: 155164730 Test: m java Merged-In: I907533c36dcb6c0ef679b0098d497d88476d8b95 Change-Id: I907533c36dcb6c0ef679b0098d497d88476d8b95 --- apex/Android.bp | 38 ++++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/apex/Android.bp b/apex/Android.bp index 388b24a4d5f59..6eaf89c589654 100644 --- a/apex/Android.bp +++ b/apex/Android.bp @@ -66,9 +66,9 @@ mainline_service_stubs_args = "--hide-annotation android.annotation.Hide " + "--hide InternalClasses " // com.android.* classes are okay in this interface -// Defaults for mainline module provided java_sdk_library instances. +// Defaults common to all mainline module java_sdk_library instances. java_defaults { - name: "framework-module-defaults", + name: "framework-module-common-defaults", // Additional annotations used for compiling both the implementation and the // stubs libraries. @@ -95,14 +95,6 @@ java_defaults { enabled: true, sdk_version: "module_current", }, - system: { - enabled: true, - sdk_version: "module_current", - }, - module_lib: { - enabled: true, - sdk_version: "module_current", - }, // Configure framework module specific metalava options. droiddoc_options: [mainline_stubs_args], @@ -132,6 +124,32 @@ java_defaults { sdk_version: "module_current", } +// Defaults for mainline module provided java_sdk_library instances. +java_defaults { + name: "framework-module-defaults", + defaults: ["framework-module-common-defaults"], + + system: { + enabled: true, + sdk_version: "module_current", + }, + module_lib: { + enabled: true, + sdk_version: "module_current", + }, +} + +// Defaults for mainline module system server provided java_sdk_library instances. +java_defaults { + name: "framework-system-server-module-defaults", + defaults: ["framework-module-common-defaults"], + + system_server: { + enabled: true, + sdk_version: "module_current", + }, +} + stubs_defaults { name: "framework-module-stubs-defaults-publicapi", args: mainline_framework_stubs_args,