Metalava has a feature to "enhance documentation" which is mostly based on auto-generating documentation text based on source-retention annotations. This is turned on automatically for doc stubs, but here we are enabling it for module's jar stubs as well. The point of this is to be able to replace the module source code with module jar stub source code when generating doc stubs -- something previously not possible because most source-retention annotations are not present in the jar stubs. In order for the enhancement to work properly, metalava needs to be passed the annotation source code rather than the annotations library. This is because of various javadoc tags controlling what documentation is generated, e.g. @paramDoc, @returnDoc etc. Bug: 186197911 Test: manually inspect module stub source code is enhanced Change-Id: I3fda4cd64e49c1da33fe614c30aafd9fa0dba3b9
217 lines
6.8 KiB
Plaintext
217 lines
6.8 KiB
Plaintext
// 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 " +
|
|
"--enhance-documentation "
|
|
|
|
// 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",
|
|
|
|
// Use the source of annotations that affect metalava doc generation, since
|
|
// the relevant generation instructions are themselves in javadoc, which is
|
|
// not present in class files.
|
|
api_srcs: [":framework-metalava-annotations"],
|
|
|
|
// Make the source retention annotations available on the classpath when compiling
|
|
// the implementation library. (This should be in impl_only_libs but some modules
|
|
// use these defaults for java_library, sigh.)
|
|
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 <uses-library> 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"],
|
|
|
|
dist_group: "android",
|
|
}
|
|
|
|
// 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",
|
|
},
|
|
}
|