// 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 *-api-stubs-docs. // The javac compilation is done by java_library modules android_*_stubs_current. // The metalava conversion is also responsible for creating API signature files // and comparing them against the last API signature in api/*-current.txt files // and also against the latest frozen API signature in prebuilts/sdk/*/*/api/android.txt // files. ///////////////////////////////////////////////////////////////////// // Common metalava configs ///////////////////////////////////////////////////////////////////// packages_to_document = [ "android", "dalvik", "java", "javax", "junit", "org.apache.http", "org.json", "org.w3c.dom", "org.xml.sax", "org.xmlpull", ] stubs_defaults { name: "metalava-api-stubs-default", srcs: [ ":framework-non-updatable-sources", ":framework-updatable-sources", "core/java/**/*.logtags", ":opt-telephony-srcs", ":opt-net-voip-srcs", ":core-current-stubs-source", ":core_public_api_files", ":ike-api-srcs", ], libs: ["framework-internal-utils"], installable: false, annotations_enabled: true, previous_api: ":last-released-public-api", merge_annotations_dirs: [ "metalava-manual", ], api_levels_annotations_enabled: true, api_levels_annotations_dirs: [ "sdk-dir", "api-versions-jars-dir", ], sdk_version: "core_platform", filter_packages: packages_to_document, } ///////////////////////////////////////////////////////////////////// // *-api-stubs-docs modules providing source files for the stub libraries ///////////////////////////////////////////////////////////////////// droidstubs { name: "api-stubs-docs", defaults: ["metalava-api-stubs-default"], api_filename: "public_api.txt", private_api_filename: "private.txt", removed_api_filename: "removed.txt", arg_files: [ "core/res/AndroidManifest.xml", ], args: metalava_framework_docs_args, check_api: { current: { api_file: "api/current.txt", removed_api_file: "api/removed.txt", }, last_released: { api_file: ":last-released-public-api", removed_api_file: "api/removed.txt", baseline_file: ":public-api-incompatibilities-with-last-released", }, api_lint: { enabled: true, new_since: ":last-released-public-api", baseline_file: "api/lint-baseline.txt", }, }, jdiff_enabled: true, } droidstubs { name: "system-api-stubs-docs", defaults: ["metalava-api-stubs-default"], api_tag_name: "SYSTEM", api_filename: "system-api.txt", private_api_filename: "system-private.txt", private_dex_api_filename: "system-private-dex.txt", removed_api_filename: "system-removed.txt", arg_files: [ "core/res/AndroidManifest.xml", ], args: metalava_framework_docs_args + " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\)", check_api: { current: { api_file: "api/system-current.txt", removed_api_file: "api/system-removed.txt", }, last_released: { api_file: ":last-released-system-api", removed_api_file: "api/system-removed.txt", baseline_file: ":system-api-incompatibilities-with-last-released" }, api_lint: { enabled: true, new_since: ":last-released-system-api", baseline_file: "api/system-lint-baseline.txt", }, }, jdiff_enabled: true, } droidstubs { name: "test-api-stubs-docs", defaults: ["metalava-api-stubs-default"], api_tag_name: "TEST", api_filename: "test-api.txt", removed_api_filename: "test-removed.txt", arg_files: [ "core/res/AndroidManifest.xml", ], args: metalava_framework_docs_args + " --show-annotation android.annotation.TestApi", check_api: { current: { api_file: "api/test-current.txt", removed_api_file: "api/test-removed.txt", }, api_lint: { enabled: true, baseline_file: "api/test-lint-baseline.txt", }, }, } ///////////////////////////////////////////////////////////////////// // android_*_stubs_current modules are the stubs libraries compiled // from *-api-stubs-docs ///////////////////////////////////////////////////////////////////// java_defaults { name: "framework-stubs-default", errorprone: { javacflags: [ "-XepDisableAllChecks", ], }, java_resources: [ ":notices-for-framework-stubs", ], sdk_version: "core_current", system_modules: "none", java_version: "1.8", compile_dex: true, } java_library_static { name: "android_stubs_current", srcs: [ ":api-stubs-docs", ], libs: [ "stub-annotations", ], static_libs: [ "private-stub-annotations-jar", ], defaults: ["framework-stubs-default"], } java_library_static { name: "android_system_stubs_current", srcs: [ ":system-api-stubs-docs", ], libs: [ "stub-annotations", ], static_libs: [ "private-stub-annotations-jar", ], defaults: ["framework-stubs-default"], } java_library_static { name: "android_test_stubs_current", srcs: [ ":test-api-stubs-docs", ], libs: [ "stub-annotations", ], static_libs: [ "private-stub-annotations-jar", ], defaults: ["framework-stubs-default"], } ///////////////////////////////////////////////////////////////////// // 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/annotation/IntDef.java", "core/java/android/annotation/IntRange.java", "core/java/android/annotation/NonNull.java", "core/java/android/annotation/SystemApi.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", ], installable: false, sdk_version: "core_platform", annotations_enabled: true, previous_api: ":last-released-public-api", merge_annotations_dirs: [ "metalava-manual", ], args: " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\)", } java_library_static { name: "hwbinder.stubs", sdk_version: "core_current", srcs: [ ":hwbinder-stubs-docs", ], } ///////////////////////////////////////////////////////////////////// // Stubs for hiddenapi processing. ///////////////////////////////////////////////////////////////////// droidstubs { name: "hiddenapi-lists-docs", defaults: ["metalava-api-stubs-default"], arg_files: [ "core/res/AndroidManifest.xml", ], dex_api_filename: "public-dex.txt", private_dex_api_filename: "private-dex.txt", removed_dex_api_filename: "removed-dex.txt", args: metalava_framework_docs_args + " --show-unannotated " + " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\) " + " --show-annotation android.annotation.TestApi ", } droidstubs { name: "hiddenapi-mappings", defaults: ["metalava-api-stubs-default"], srcs: [ ":opt-telephony-common-srcs", ], arg_files: [ "core/res/AndroidManifest.xml", ], dex_mapping_filename: "dex-mapping.txt", args: metalava_framework_docs_args + " --hide ReferencesHidden " + " --hide UnhiddenSystemApi " + " --show-unannotated " + " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\) " + " --show-annotation android.annotation.TestApi ", } ///////////////////////////////////////////////////////////////////// // api/*-current.txt files for use by modules in other directories // like the CTS test ///////////////////////////////////////////////////////////////////// filegroup { name: "frameworks-base-api-current.txt", srcs: [ "api/current.txt", ], } filegroup { name: "frameworks-base-api-system-current.txt", srcs: [ "api/system-current.txt", ], } filegroup { name: "frameworks-base-api-system-removed.txt", srcs: [ "api/system-removed.txt", ], }