From 9dce832eea8063eafa8442f7bad085ee4f44c6dd Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Mon, 24 Jan 2022 14:14:33 +0000 Subject: [PATCH] Split android-non-updatable-stubs-defaults in two Put the module classpath defaults into a separate defaults module, such that users can choose to add the module symbols in a different way. Update all the current users to apply both defaults. Test: m nothing Change-Id: I22f9518c2e205bfa8ad8d4b630ec976921786b73 --- Android.bp | 42 +++++++++++++++++++++++++++++------------- ApiDocs.bp | 5 ++++- StubLibraries.bp | 20 ++++++++++++++++---- 3 files changed, 49 insertions(+), 18 deletions(-) diff --git a/Android.bp b/Android.bp index 54fedaf9bb0f8..9e65646154b89 100644 --- a/Android.bp +++ b/Android.bp @@ -503,7 +503,9 @@ filegroup { visibility: ["//visibility:private"], } -// These defaults are used for both the jar stubs and the doc stubs. +// Defaults for all stubs that include the non-updatable framework. These defaults do not include +// module symbols, so will not compile correctly on their own. Users must add module APIs to the +// classpath (or sources) somehow. stubs_defaults { name: "android-non-updatable-stubs-defaults", srcs: [":android-non-updatable-stub-sources"], @@ -511,17 +513,14 @@ stubs_defaults { system_modules: "none", java_version: "1.8", arg_files: ["core/res/AndroidManifest.xml"], - // TODO(b/147699819): remove below aidl includes. aidl: { local_include_dirs: [ - "apex/media/aidl/stable", "media/aidl", "telephony/java", ], include_dirs: [ "frameworks/av/aidl", "frameworks/native/libs/permission/aidl", - "packages/modules/Connectivity/framework/aidl-export", ], }, // These are libs from framework-internal-utils that are required (i.e. being referenced) @@ -543,15 +542,6 @@ stubs_defaults { "android.hardware.usb.gadget-V1.0-java", "android.hardware.vibrator-V1.3-java", "framework-protos", - "art.module.public.api", - "sdk_module-lib_current_framework-tethering", - // There are a few classes from modules used by the core that - // need to be resolved by metalava. We use a prebuilt stub of the - // full sdk to ensure we can resolve them. If a new class gets added, - // the prebuilts/sdk/current needs to be updated. - "sdk_system_current_android", - // NOTE: The below can be removed once the prebuilt stub contains IKE. - "sdk_system_current_android.net.ipsec.ike", ], filter_packages: packages_to_document, high_mem: true, // Lots of sources => high memory use, see b/170701554 @@ -563,6 +553,32 @@ stubs_defaults { visibility: ["//frameworks/base/api"], } +// Defaults with module APIs in the classpath (mostly from prebuilts). +// Suitable for compiling android-non-updatable. +stubs_defaults { + name: "module-classpath-stubs-defaults", + aidl: { + local_include_dirs: [ + "apex/media/aidl/stable", + ], + include_dirs: [ + "packages/modules/Connectivity/framework/aidl-export", + ], + }, + libs: [ + "art.module.public.api", + "sdk_module-lib_current_framework-tethering", + // There are a few classes from modules used by the core that + // need to be resolved by metalava. We use a prebuilt stub of the + // full sdk to ensure we can resolve them. If a new class gets added, + // the prebuilts/sdk/current needs to be updated. + "sdk_system_current_android", + // NOTE: The below can be removed once the prebuilt stub contains IKE. + "sdk_system_current_android.net.ipsec.ike", + ], + defaults_visibility: ["//visibility:private"], +} + build = [ "StubLibraries.bp", "ApiDocs.bp", diff --git a/ApiDocs.bp b/ApiDocs.bp index ec7b19482c823..27e1def78bf23 100644 --- a/ApiDocs.bp +++ b/ApiDocs.bp @@ -57,7 +57,10 @@ framework_docs_only_libs = [ stubs_defaults { name: "android-non-updatable-doc-stubs-defaults", - defaults: ["android-non-updatable-stubs-defaults"], + defaults: [ + "android-non-updatable-stubs-defaults", + "module-classpath-stubs-defaults", + ], srcs: [ // No longer part of the stubs, but are included in the docs. ":android-test-base-sources", diff --git a/StubLibraries.bp b/StubLibraries.bp index 8f35d3d6caece..9e8b7071d0c71 100644 --- a/StubLibraries.bp +++ b/StubLibraries.bp @@ -29,7 +29,10 @@ droidstubs { name: "api-stubs-docs-non-updatable", - defaults: ["android-non-updatable-stubs-defaults"], + defaults: [ + "android-non-updatable-stubs-defaults", + "module-classpath-stubs-defaults", + ], args: metalava_framework_docs_args, check_api: { current: { @@ -78,7 +81,10 @@ module_libs = " --show-annotation android.annotation.SystemApi\\(" + droidstubs { name: "system-api-stubs-docs-non-updatable", - defaults: ["android-non-updatable-stubs-defaults"], + defaults: [ + "android-non-updatable-stubs-defaults", + "module-classpath-stubs-defaults", + ], args: metalava_framework_docs_args + priv_apps, check_api: { current: { @@ -114,7 +120,10 @@ droidstubs { droidstubs { name: "test-api-stubs-docs-non-updatable", - defaults: ["android-non-updatable-stubs-defaults"], + defaults: [ + "android-non-updatable-stubs-defaults", + "module-classpath-stubs-defaults", + ], args: metalava_framework_docs_args + test + priv_apps_in_stubs, check_api: { current: { @@ -156,7 +165,10 @@ droidstubs { droidstubs { name: "module-lib-api-stubs-docs-non-updatable", - defaults: ["android-non-updatable-stubs-defaults"], + defaults: [ + "android-non-updatable-stubs-defaults", + "module-classpath-stubs-defaults", + ], args: metalava_framework_docs_args + priv_apps_in_stubs + module_libs, check_api: { current: {