From 807c08357a5eb7fb6f774e55450e748efed1b336 Mon Sep 17 00:00:00 2001 From: Anton Hansson Date: Wed, 14 Apr 2021 15:47:59 +0100 Subject: [PATCH] Move module defaults into a dedicated .bp file I'm adding some other modules in a follow up, and to avoid creating a large messy bp file, do some re-organization ahead of time. Bug: 184839225 Bug: 185128417 Test: m Change-Id: Icd655e680f7138582ddf34fb0e0e78e9bdd7a927 --- sdk/Android.bp | 196 +-------------------------------------- sdk/ModuleDefaults.bp | 207 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 209 insertions(+), 194 deletions(-) create mode 100644 sdk/ModuleDefaults.bp diff --git a/sdk/Android.bp b/sdk/Android.bp index c0bf060..71f29ab 100644 --- a/sdk/Android.bp +++ b/sdk/Android.bp @@ -1,4 +1,4 @@ -// Copyright (C) 2019 The Android Open Source Project +// Copyright (C) 2021 The Android Open Source Project // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -12,196 +12,4 @@ // See the License for the specific language governing permissions and // limitations under the License. -package { - default_visibility: [":__subpackages__"], - default_applicable_licenses: ["Android-Apache-2.0"], -} - -mainline_stubs_args = - "--error UnhiddenSystemApi " + - "--hide BroadcastBehavior " + - "--hide CallbackInterface " + - "--hide DeprecationMismatch " + - "--hide HiddenSuperclass " + - "--hide HiddenTypedefConstant " + - "--hide HiddenTypeParameter " + - "--hide MissingPermission " + - "--hide RequiresPermission " + - "--hide SdkConstant " + - "--hide Todo " + - "--hide Typo " + - "--hide UnavailableSymbol " - -// TODO: modularize this so not every module has the same list -framework_packages_to_document = [ - "android", - "dalvik", - "java", - "javax", - "junit", - "org.apache.http", - "org.json", - "org.w3c.dom", - "org.xml.sax", - "org.xmlpull", -] - -// TODO: remove the hiding when server classes are cleaned up. -mainline_framework_stubs_args = - mainline_stubs_args + - "--hide-package com.android.server " - -priv_apps = " " + - "--show-annotation android.annotation.SystemApi\\(" + - "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" + - "\\) " - -module_libs = " " + - " --show-annotation android.annotation.SystemApi\\(" + - "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES" + - "\\)" + - " --show-for-stub-purposes-annotation android.annotation.SystemApi\\(" + - "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" + - "\\) " - -mainline_service_stubs_args = - mainline_stubs_args + - "--show-annotation android.annotation.SystemApi\\(" + - "client=android.annotation.SystemApi.Client.SYSTEM_SERVER" + - "\\) " + - "--hide-annotation android.annotation.Hide " + - "--hide InternalClasses " // com.android.* classes are okay in this interface - -// Defaults common to all mainline module java_sdk_library instances. -java_defaults { - name: "framework-module-common-defaults", - - // Additional annotations used for compiling both the implementation and the - // stubs libraries. - libs: ["framework-annotations-lib"], - - // Framework modules are not generally shared libraries, i.e. they are not - // intended, and must not be allowed, to be used in a manifest - // entry. - shared_library: false, - - // Prevent dependencies that do not specify an sdk_version from accessing the - // implementation library by default and force them to use stubs instead. - default_to_stubs: true, - - // Enable api lint. This will eventually become the default for java_sdk_library - // but it cannot yet be turned on because some usages have not been cleaned up. - // TODO(b/156126315) - Remove when no longer needed. - api_lint: { - enabled: true, - }, - - // The API scope specific properties. - public: { - enabled: true, - sdk_version: "module_current", - }, - - // installable implies we'll create a non-apex (platform) variant, which - // we shouldn't ordinarily need (and it can create issues), so disable that. - installable: false, - - // Configure framework module specific metalava options. - droiddoc_options: [mainline_stubs_args], - - annotations_enabled: true, - - // Allow access to the stubs from anywhere - visibility: ["//visibility:public"], - stubs_library_visibility: ["//visibility:public"], - - // Hide impl library and stub sources - impl_library_visibility: [ - ":__pkg__", - "//frameworks/base", // For framework-all - ], - stubs_source_visibility: ["//visibility:private"], - - defaults_visibility: ["//visibility:private"], - - // Collates API usages from each module for further analysis. - plugins: ["java_api_finder"], -} - -// Defaults for mainline module provided java_sdk_library instances. -java_defaults { - name: "framework-module-defaults", - defaults: ["framework-module-common-defaults"], - sdk_version: "module_current", - - system: { - enabled: true, - sdk_version: "module_current", - }, - module_lib: { - enabled: true, - sdk_version: "module_current", - }, - defaults_visibility: [ - ":__subpackages__", - "//frameworks/base/apex:__subpackages__", - "//frameworks/base/libs/hwui", - // TODO: remove after moving connectivity to packages/modules - "//frameworks/base/packages/Connectivity:__subpackages__", - "//frameworks/base/wifi", - "//packages/modules:__subpackages__", - "//packages/providers/MediaProvider:__subpackages__", - ], -} - -// Defaults for mainline module system server provided java_sdk_library instances. -java_defaults { - name: "framework-system-server-module-defaults", - defaults: ["framework-module-common-defaults"], - sdk_version: "system_server_current", - - system_server: { - enabled: true, - sdk_version: "system_server_current", - }, - defaults_visibility: [ - ":__subpackages__", - "//art/libartservice:__subpackages__", - "//frameworks/base/apex:__subpackages__", - "//packages/modules:__subpackages__", - ], -} - -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: { - api_file: "api/current.txt", - removed_api_file: "api/removed.txt", - }, - api_lint: { - enabled: true, - }, - }, - dist: { - targets: ["sdk", "win_sdk"], - dir: "apistubs/android/system-server/api", - }, -} - -// Empty for now, but a convenient place to add rules for all -// module java_library system_server stub libs. -java_defaults { - name: "service-module-stubs-defaults", - dist: { - targets: ["sdk", "win_sdk"], - dir: "apistubs/android/system-server", - }, -} +build = ["ModuleDefaults.bp"] diff --git a/sdk/ModuleDefaults.bp b/sdk/ModuleDefaults.bp new file mode 100644 index 0000000..c0bf060 --- /dev/null +++ b/sdk/ModuleDefaults.bp @@ -0,0 +1,207 @@ +// Copyright (C) 2019 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package { + default_visibility: [":__subpackages__"], + default_applicable_licenses: ["Android-Apache-2.0"], +} + +mainline_stubs_args = + "--error UnhiddenSystemApi " + + "--hide BroadcastBehavior " + + "--hide CallbackInterface " + + "--hide DeprecationMismatch " + + "--hide HiddenSuperclass " + + "--hide HiddenTypedefConstant " + + "--hide HiddenTypeParameter " + + "--hide MissingPermission " + + "--hide RequiresPermission " + + "--hide SdkConstant " + + "--hide Todo " + + "--hide Typo " + + "--hide UnavailableSymbol " + +// TODO: modularize this so not every module has the same list +framework_packages_to_document = [ + "android", + "dalvik", + "java", + "javax", + "junit", + "org.apache.http", + "org.json", + "org.w3c.dom", + "org.xml.sax", + "org.xmlpull", +] + +// TODO: remove the hiding when server classes are cleaned up. +mainline_framework_stubs_args = + mainline_stubs_args + + "--hide-package com.android.server " + +priv_apps = " " + + "--show-annotation android.annotation.SystemApi\\(" + + "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" + + "\\) " + +module_libs = " " + + " --show-annotation android.annotation.SystemApi\\(" + + "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES" + + "\\)" + + " --show-for-stub-purposes-annotation android.annotation.SystemApi\\(" + + "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" + + "\\) " + +mainline_service_stubs_args = + mainline_stubs_args + + "--show-annotation android.annotation.SystemApi\\(" + + "client=android.annotation.SystemApi.Client.SYSTEM_SERVER" + + "\\) " + + "--hide-annotation android.annotation.Hide " + + "--hide InternalClasses " // com.android.* classes are okay in this interface + +// Defaults common to all mainline module java_sdk_library instances. +java_defaults { + name: "framework-module-common-defaults", + + // Additional annotations used for compiling both the implementation and the + // stubs libraries. + libs: ["framework-annotations-lib"], + + // Framework modules are not generally shared libraries, i.e. they are not + // intended, and must not be allowed, to be used in a manifest + // entry. + shared_library: false, + + // Prevent dependencies that do not specify an sdk_version from accessing the + // implementation library by default and force them to use stubs instead. + default_to_stubs: true, + + // Enable api lint. This will eventually become the default for java_sdk_library + // but it cannot yet be turned on because some usages have not been cleaned up. + // TODO(b/156126315) - Remove when no longer needed. + api_lint: { + enabled: true, + }, + + // The API scope specific properties. + public: { + enabled: true, + sdk_version: "module_current", + }, + + // installable implies we'll create a non-apex (platform) variant, which + // we shouldn't ordinarily need (and it can create issues), so disable that. + installable: false, + + // Configure framework module specific metalava options. + droiddoc_options: [mainline_stubs_args], + + annotations_enabled: true, + + // Allow access to the stubs from anywhere + visibility: ["//visibility:public"], + stubs_library_visibility: ["//visibility:public"], + + // Hide impl library and stub sources + impl_library_visibility: [ + ":__pkg__", + "//frameworks/base", // For framework-all + ], + stubs_source_visibility: ["//visibility:private"], + + defaults_visibility: ["//visibility:private"], + + // Collates API usages from each module for further analysis. + plugins: ["java_api_finder"], +} + +// Defaults for mainline module provided java_sdk_library instances. +java_defaults { + name: "framework-module-defaults", + defaults: ["framework-module-common-defaults"], + sdk_version: "module_current", + + system: { + enabled: true, + sdk_version: "module_current", + }, + module_lib: { + enabled: true, + sdk_version: "module_current", + }, + defaults_visibility: [ + ":__subpackages__", + "//frameworks/base/apex:__subpackages__", + "//frameworks/base/libs/hwui", + // TODO: remove after moving connectivity to packages/modules + "//frameworks/base/packages/Connectivity:__subpackages__", + "//frameworks/base/wifi", + "//packages/modules:__subpackages__", + "//packages/providers/MediaProvider:__subpackages__", + ], +} + +// Defaults for mainline module system server provided java_sdk_library instances. +java_defaults { + name: "framework-system-server-module-defaults", + defaults: ["framework-module-common-defaults"], + sdk_version: "system_server_current", + + system_server: { + enabled: true, + sdk_version: "system_server_current", + }, + defaults_visibility: [ + ":__subpackages__", + "//art/libartservice:__subpackages__", + "//frameworks/base/apex:__subpackages__", + "//packages/modules:__subpackages__", + ], +} + +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: { + api_file: "api/current.txt", + removed_api_file: "api/removed.txt", + }, + api_lint: { + enabled: true, + }, + }, + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/system-server/api", + }, +} + +// Empty for now, but a convenient place to add rules for all +// module java_library system_server stub libs. +java_defaults { + name: "service-module-stubs-defaults", + dist: { + targets: ["sdk", "win_sdk"], + dir: "apistubs/android/system-server", + }, +}