| // 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. |
| |
| // How stubs are generated: |
| // |
| // raw source files --(metalava)--> stub source files --(javac)--> stub jar files |
| // |
| // - The metalava conversion is done by droidstub modules |
| // - The javac compilation is done by java_library modules |
| // |
| // The metalava conversion is also responsible for creating API signature files |
| // and comparing them against the checked in API signature, and also checking compatibility |
| // with the latest frozen API signature. |
| |
| // TODO(b/21090328): Remove filter after we are ready to. |
| soong_config_module_type_import { |
| from: "frameworks/base/Android.bp", |
| module_types: [ |
| "java_library_with_nonpublic_deps", |
| ], |
| } |
| |
| ///////////////////////////////////////////////////////////////////// |
| // Common metalava configs |
| ///////////////////////////////////////////////////////////////////// |
| |
| stubs_defaults { |
| name: "metalava-non-updatable-api-stubs-default", |
| defaults: ["android-non-updatable-stubs-defaults"], |
| api_levels_annotations_enabled: false, |
| defaults_visibility: ["//visibility:private"], |
| } |
| |
| ///////////////////////////////////////////////////////////////////// |
| // These modules provide source files for the stub libraries |
| ///////////////////////////////////////////////////////////////////// |
| |
| droidstubs { |
| name: "api-stubs-docs-non-updatable", |
| defaults: ["metalava-non-updatable-api-stubs-default"], |
| args: metalava_framework_docs_args, |
| check_api: { |
| current: { |
| api_file: "core/api/current.txt", |
| removed_api_file: "core/api/removed.txt", |
| }, |
| last_released: { |
| api_file: ":android-non-updatable.api.public.latest", |
| removed_api_file: ":android-non-updatable-removed.api.public.latest", |
| baseline_file: ":android-non-updatable-incompatibilities.api.public.latest", |
| }, |
| api_lint: { |
| enabled: true, |
| new_since: ":android.api.public.latest", |
| }, |
| }, |
| dists: [ |
| { |
| targets: ["sdk"], |
| dir: "apistubs/android/public/api", |
| dest: "android-non-updatable.txt", |
| tag: ".api.txt", |
| }, |
| { |
| targets: ["sdk"], |
| dir: "apistubs/android/public/api", |
| dest: "android-non-updatable-removed.txt", |
| tag: ".removed-api.txt", |
| }, |
| ], |
| } |
| |
| priv_apps = " --show-annotation android.annotation.SystemApi\\(" + |
| "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" + |
| "\\)" |
| |
| priv_apps_in_stubs = " --show-for-stub-purposes-annotation android.annotation.SystemApi\\(" + |
| "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" + |
| "\\)" |
| |
| test = " --show-annotation android.annotation.TestApi" |
| |
| module_libs = " --show-annotation android.annotation.SystemApi\\(" + |
| "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES" + |
| "\\)" |
| |
| droidstubs { |
| name: "system-api-stubs-docs-non-updatable", |
| defaults: ["metalava-non-updatable-api-stubs-default"], |
| args: metalava_framework_docs_args + priv_apps, |
| check_api: { |
| current: { |
| api_file: "core/api/system-current.txt", |
| removed_api_file: "core/api/system-removed.txt", |
| }, |
| last_released: { |
| api_file: ":android-non-updatable.api.system.latest", |
| removed_api_file: ":android-non-updatable-removed.api.system.latest", |
| baseline_file: ":android-non-updatable-incompatibilities.api.system.latest", |
| }, |
| api_lint: { |
| enabled: true, |
| new_since: ":android.api.system.latest", |
| baseline_file: "core/api/system-lint-baseline.txt", |
| }, |
| }, |
| dists: [ |
| { |
| targets: ["sdk"], |
| dir: "apistubs/android/system/api", |
| dest: "android-non-updatable.txt", |
| tag: ".api.txt", |
| }, |
| { |
| targets: ["sdk"], |
| dir: "apistubs/android/system/api", |
| dest: "android-non-updatable-removed.txt", |
| tag: ".removed-api.txt", |
| }, |
| ], |
| } |
| |
| droidstubs { |
| name: "test-api-stubs-docs-non-updatable", |
| defaults: ["metalava-non-updatable-api-stubs-default"], |
| args: metalava_framework_docs_args + test + priv_apps_in_stubs, |
| check_api: { |
| current: { |
| api_file: "core/api/test-current.txt", |
| removed_api_file: "core/api/test-removed.txt", |
| }, |
| api_lint: { |
| enabled: true, |
| baseline_file: "core/api/test-lint-baseline.txt", |
| }, |
| }, |
| dists: [ |
| { |
| targets: ["sdk"], |
| dir: "apistubs/android/test/api", |
| dest: "android.txt", |
| tag: ".api.txt", |
| }, |
| { |
| targets: ["sdk"], |
| dir: "apistubs/android/test/api", |
| dest: "removed.txt", |
| tag: ".removed-api.txt", |
| }, |
| { |
| targets: ["sdk"], |
| dir: "apistubs/android/test/api", |
| dest: "android-non-updatable.txt", |
| tag: ".api.txt", |
| }, |
| { |
| targets: ["sdk"], |
| dir: "apistubs/android/test/api", |
| dest: "android-non-updatable-removed.txt", |
| tag: ".removed-api.txt", |
| }, |
| ], |
| } |
| |
| droidstubs { |
| name: "module-lib-api-stubs-docs-non-updatable", |
| defaults: ["metalava-non-updatable-api-stubs-default"], |
| args: metalava_framework_docs_args + priv_apps_in_stubs + module_libs, |
| check_api: { |
| current: { |
| api_file: "core/api/module-lib-current.txt", |
| removed_api_file: "core/api/module-lib-removed.txt", |
| }, |
| last_released: { |
| api_file: ":android-non-updatable.api.module-lib.latest", |
| removed_api_file: ":android-non-updatable-removed.api.module-lib.latest", |
| baseline_file: ":android-non-updatable-incompatibilities.api.module-lib.latest", |
| }, |
| api_lint: { |
| enabled: true, |
| new_since: ":android.api.module-lib.latest", |
| baseline_file: "core/api/module-lib-lint-baseline.txt", |
| }, |
| }, |
| dists: [ |
| { |
| targets: ["sdk"], |
| dir: "apistubs/android/module-lib/api", |
| dest: "android-non-updatable.txt", |
| tag: ".api.txt", |
| }, |
| { |
| targets: ["sdk"], |
| dir: "apistubs/android/module-lib/api", |
| dest: "android-non-updatable-removed.txt", |
| tag: ".removed-api.txt", |
| }, |
| ], |
| } |
| |
| ///////////////////////////////////////////////////////////////////// |
| // android_*_stubs_current modules are the stubs libraries compiled |
| // from stub sources |
| ///////////////////////////////////////////////////////////////////// |
| |
| modules_public_stubs = [ |
| "android.net.ipsec.ike.stubs", |
| "art.module.public.api.stubs", |
| "conscrypt.module.public.api.stubs", |
| "framework-appsearch.stubs", |
| "framework-connectivity.stubs", |
| "framework-connectivity-tiramisu.stubs", |
| "framework-graphics.stubs", |
| "framework-media.stubs", |
| "framework-mediaprovider.stubs", |
| "framework-nearby.stubs", |
| "framework-permission.stubs", |
| "framework-permission-s.stubs", |
| "framework-scheduling.stubs", |
| "framework-sdkextensions.stubs", |
| "framework-statsd.stubs", |
| "framework-supplementalprocess.stubs", |
| "framework-tethering.stubs", |
| "framework-uwb.stubs", |
| "framework-wifi.stubs", |
| "i18n.module.public.api.stubs", |
| ] |
| |
| modules_system_stubs = [ |
| "android.net.ipsec.ike.stubs.system", |
| "art.module.public.api.stubs.system", |
| "conscrypt.module.public.api.stubs", // Only has public stubs |
| "framework-appsearch.stubs.system", |
| "framework-connectivity.stubs.system", |
| "framework-connectivity-tiramisu.stubs.system", |
| "framework-graphics.stubs.system", |
| "framework-media.stubs.system", |
| "framework-mediaprovider.stubs.system", |
| "framework-nearby.stubs.system", |
| "framework-permission.stubs.system", |
| "framework-permission-s.stubs.system", |
| "framework-scheduling.stubs.system", |
| "framework-sdkextensions.stubs.system", |
| "framework-statsd.stubs.system", |
| "framework-supplementalprocess.stubs", |
| "framework-tethering.stubs.system", |
| "framework-uwb.stubs.system", |
| "framework-wifi.stubs.system", |
| "i18n.module.public.api.stubs", // Only has public stubs |
| ] |
| |
| java_defaults { |
| name: "android-non-updatable_defaults_stubs_current", |
| libs: ["stub-annotations"], |
| static_libs: ["framework-res-package-jar"], // Export package of framework-res |
| sdk_version: "none", |
| system_modules: "none", |
| java_version: "1.8", |
| compile_dex: true, |
| dist: { |
| targets: ["sdk"], |
| tag: ".jar", |
| dest: "android-non-updatable.jar", |
| }, |
| defaults_visibility: ["//visibility:private"], |
| visibility: ["//visibility:private"], |
| } |
| |
| java_library_with_nonpublic_deps { |
| name: "android-non-updatable.stubs", |
| defaults: ["android-non-updatable_defaults_stubs_current"], |
| srcs: [":api-stubs-docs-non-updatable"], |
| libs: modules_public_stubs, |
| soong_config_variables: { |
| include_nonpublic_framework_api: { |
| libs: [ |
| "framework-supplementalapi.stubs", |
| ], |
| }, |
| }, |
| dist: { |
| dir: "apistubs/android/public", |
| }, |
| } |
| |
| java_library_with_nonpublic_deps { |
| name: "android-non-updatable.stubs.system", |
| defaults: ["android-non-updatable_defaults_stubs_current"], |
| srcs: [":system-api-stubs-docs-non-updatable"], |
| libs: modules_system_stubs, |
| soong_config_variables: { |
| include_nonpublic_framework_api: { |
| libs: [ |
| "framework-supplementalapi.stubs", |
| ], |
| }, |
| }, |
| dist: { |
| dir: "apistubs/android/system", |
| }, |
| } |
| |
| java_library { |
| name: "android-non-updatable.stubs.module_lib", |
| defaults: ["android-non-updatable_defaults_stubs_current"], |
| srcs: [":module-lib-api-stubs-docs-non-updatable"], |
| libs: [ |
| "sdk_module-lib_current_framework-tethering", |
| "sdk_system_current_android", |
| // NOTE: The below can be removed once the prebuilt stub contains IKE. |
| "sdk_system_current_android.net.ipsec.ike", |
| ], |
| dist: { |
| dir: "apistubs/android/module-lib", |
| }, |
| } |
| |
| java_library_with_nonpublic_deps { |
| name: "android-non-updatable.stubs.test", |
| defaults: ["android-non-updatable_defaults_stubs_current"], |
| srcs: [":test-api-stubs-docs-non-updatable"], |
| libs: modules_system_stubs, |
| soong_config_variables: { |
| include_nonpublic_framework_api: { |
| libs: [ |
| "framework-supplementalapi.stubs", |
| ], |
| }, |
| }, |
| dist: { |
| dir: "apistubs/android/test", |
| }, |
| } |
| |
| java_defaults { |
| name: "android_stubs_dists_default", |
| dist: { |
| targets: ["sdk"], |
| tag: ".jar", |
| dest: "android.jar", |
| }, |
| defaults_visibility: ["//frameworks/base/services"], |
| } |
| |
| java_library_with_nonpublic_deps { |
| name: "android_stubs_current", |
| static_libs: modules_public_stubs + [ |
| "android-non-updatable.stubs", |
| "private-stub-annotations-jar", |
| ], |
| soong_config_variables: { |
| include_nonpublic_framework_api: { |
| static_libs: [ |
| "framework-supplementalapi.stubs", |
| ], |
| }, |
| }, |
| defaults: ["android.jar_defaults"], |
| } |
| |
| java_library_with_nonpublic_deps { |
| name: "android_system_stubs_current", |
| static_libs: modules_system_stubs + [ |
| "android-non-updatable.stubs.system", |
| "private-stub-annotations-jar", |
| ], |
| soong_config_variables: { |
| include_nonpublic_framework_api: { |
| static_libs: [ |
| "framework-supplementalapi.stubs", |
| ], |
| }, |
| }, |
| defaults: [ |
| "android.jar_defaults", |
| "android_stubs_dists_default", |
| ], |
| dist: { |
| dir: "apistubs/android/system", |
| }, |
| dists: [ |
| { |
| // Legacy dist path |
| targets: ["sdk"], |
| tag: ".jar", |
| dest: "android_system.jar", |
| }, |
| ], |
| } |
| |
| java_library_with_nonpublic_deps { |
| name: "android_test_stubs_current", |
| // Modules do not have test APIs, but we want to include their SystemApis, like we include |
| // the SystemApi of framework-non-updatable-sources. |
| static_libs: modules_system_stubs + [ |
| "android-non-updatable.stubs.test", |
| "private-stub-annotations-jar", |
| ], |
| soong_config_variables: { |
| include_nonpublic_framework_api: { |
| static_libs: [ |
| "framework-supplementalapi.stubs", |
| ], |
| }, |
| }, |
| defaults: [ |
| "android.jar_defaults", |
| "android_stubs_dists_default", |
| ], |
| dist: { |
| dir: "apistubs/android/test", |
| }, |
| } |
| |
| java_library { |
| name: "android_module_lib_stubs_current", |
| defaults: [ |
| "android.jar_defaults", |
| "android_stubs_dists_default", |
| ], |
| static_libs: [ |
| "android-non-updatable.stubs.module_lib", |
| "art.module.public.api.stubs.module_lib", |
| "i18n.module.public.api.stubs", |
| ], |
| dist: { |
| dir: "apistubs/android/module-lib", |
| }, |
| } |
| |
| java_library { |
| name: "android_system_server_stubs_current", |
| defaults: ["android_stubs_dists_default"], |
| srcs: [":services-non-updatable-stubs"], |
| installable: false, |
| static_libs: [ |
| "android_module_lib_stubs_current", |
| ], |
| sdk_version: "none", |
| system_modules: "none", |
| java_version: "1.8", |
| dist: { |
| dir: "apistubs/android/system-server", |
| }, |
| } |
| |
| ///////////////////////////////////////////////////////////////////// |
| // hwbinder.stubs provides APIs required for building HIDL Java |
| // libraries. |
| ///////////////////////////////////////////////////////////////////// |
| |
| droidstubs { |
| name: "hwbinder-stubs-docs", |
| srcs: [ |
| "core/java/android/os/HidlSupport.java", |
| "core/java/android/os/HidlMemory.java", |
| "core/java/android/os/HwBinder.java", |
| "core/java/android/os/HwBlob.java", |
| "core/java/android/os/HwParcel.java", |
| "core/java/android/os/IHwBinder.java", |
| "core/java/android/os/IHwInterface.java", |
| "core/java/android/os/DeadObjectException.java", |
| "core/java/android/os/DeadSystemException.java", |
| "core/java/android/os/NativeHandle.java", |
| "core/java/android/os/RemoteException.java", |
| "core/java/android/util/AndroidException.java", |
| ], |
| libs: ["framework-annotations-lib"], |
| installable: false, |
| sdk_version: "core_platform", |
| annotations_enabled: true, |
| previous_api: ":android.api.public.latest", |
| merge_annotations_dirs: [ |
| "metalava-manual", |
| ], |
| args: priv_apps, |
| visibility: ["//visibility:private"], |
| } |
| |
| java_library { |
| name: "hwbinder.stubs", |
| sdk_version: "core_current", |
| libs: ["framework-annotations-lib"], |
| srcs: [ |
| ":hwbinder-stubs-docs", |
| ], |
| visibility: ["//visibility:public"], |
| } |