Skip to content
Snippets Groups Projects
Commit 867f94c7 authored by Anton Hansson's avatar Anton Hansson
Browse files

Add targets to build doc-stubs for non-updatable

Like the jar stubs, the doc stubs need modularization to avoid depending
on module sources and instead being assembled by merging the doc stubs
of the constituent modules. This will allow generating e.g. the lint
database, annotation zips, and the documentation itself from prebuilts
(which in turn allows mixing e.g. non-updatable R with the latest
modules).

Move the defaults for the non-updatable jar stubs to the shared bp file
and reuse it for the non-updatable doc stubs, and add two targets for
the public and the system stubs.

Bug: 186197911
Test: m android-non-updatable-doc-stubs{,-system}
Change-Id: Ic2cef748c42c141ea42b8cd7b4afd7ee78a1399d
parent 006f1a69
No related branches found
No related tags found
No related merge requests found
......@@ -483,7 +483,7 @@ metalava_framework_docs_args = "--manifest $(location core/res/AndroidManifest.x
"--api-lint-ignore-prefix org. "
filegroup {
name: "framework-non-updatable-stub-sources",
name: "android-non-updatable-stub-sources",
srcs: [
":framework-mime-sources", // mimemap builds separately but has no separate droidstubs.
":framework-non-updatable-sources",
......@@ -495,6 +495,63 @@ filegroup {
visibility: ["//visibility:private"],
}
// These defaults are used for both the jar stubs and the doc stubs.
stubs_defaults {
name: "android-non-updatable-stubs-defaults",
srcs: [":android-non-updatable-stub-sources"],
sdk_version: "none",
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",
// TODO: move to include-dirs for packages/modules/Connectivity when this moves out of
// frameworks/base
"packages/Connectivity/framework/aidl-export",
"telephony/java",
],
include_dirs: ["frameworks/av/aidl"],
},
// These are libs from framework-internal-utils that are required (i.e. being referenced)
// from framework-non-updatable-sources. Add more here when there's a need.
// DO NOT add the entire framework-internal-utils. It might cause unnecessary circular
// dependencies gets bigger.
libs: [
"android.hardware.cas-V1.2-java",
"android.hardware.health-V1.0-java-constants",
"android.hardware.radio-V1.5-java",
"android.hardware.radio-V1.6-java",
"android.hardware.thermal-V1.0-java-constants",
"android.hardware.thermal-V2.0-java",
"android.hardware.tv.input-V1.0-java-constants",
"android.hardware.tv.tuner-V1.0-java-constants",
"android.hardware.tv.tuner-V1.1-java-constants",
"android.hardware.usb-V1.0-java-constants",
"android.hardware.usb-V1.1-java-constants",
"android.hardware.usb.gadget-V1.0-java",
"android.hardware.vibrator-V1.3-java",
"framework-protos",
"stable.core.platform.api.stubs",
// 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",
],
high_mem: true, // Lots of sources => high memory use, see b/170701554
installable: false,
annotations_enabled: true,
previous_api: ":android.api.public.latest",
merge_annotations_dirs: ["metalava-manual"],
defaults_visibility: ["//visibility:private"],
visibility: ["//frameworks/base/api"],
}
build = [
"StubLibraries.bp",
"ApiDocs.bp",
......
......@@ -55,10 +55,24 @@ framework_docs_only_libs = [
"android-support-multidex-instrumentation",
]
stubs_defaults {
name: "android-non-updatable-doc-stubs-defaults",
defaults: ["android-non-updatable-stubs-defaults"],
srcs: [
// No longer part of the stubs, but are included in the docs.
"test-base/src/**/*.java",
"test-mock/src/**/*.java",
"test-runner/src/**/*.java",
],
libs: framework_docs_only_libs,
create_doc_stubs: true,
write_sdk_values: true,
}
stubs_defaults {
name: "framework-doc-stubs-default",
srcs: [
":framework-non-updatable-stub-sources",
":android-non-updatable-stub-sources",
// Module sources
":art.module.public.api{.public.stubs.source}",
......@@ -102,6 +116,19 @@ stubs_defaults {
},
}
droidstubs {
name: "android-non-updatable-doc-stubs",
defaults: ["android-non-updatable-doc-stubs-defaults"],
args: metalava_framework_docs_args,
}
droidstubs {
name: "android-non-updatable-doc-stubs-system",
defaults: ["android-non-updatable-doc-stubs-defaults"],
args: metalava_framework_docs_args +
" --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS\\) ",
}
droidstubs {
name: "framework-doc-stubs",
defaults: ["framework-doc-stubs-default"],
......
......@@ -42,62 +42,10 @@ packages_to_document = [
stubs_defaults {
name: "metalava-non-updatable-api-stubs-default",
srcs: [":framework-non-updatable-stub-sources"],
sdk_version: "none",
system_modules: "none",
java_version: "1.8",
arg_files: ["core/res/AndroidManifest.xml"],
// TODO(b/147699819, b/169090544): remove below aidl includes.
aidl: {
local_include_dirs: [
"apex/media/aidl/stable",
"media/aidl",
// TODO: move to include-dirs for packages/modules/Connectivity when this moves out of
// frameworks/base
"packages/Connectivity/framework/aidl-export",
"telephony/java",
],
include_dirs: ["frameworks/av/aidl"],
},
// These are libs from framework-internal-utils that are required (i.e. being referenced)
// from framework-non-updatable-sources. Add more here when there's a need.
// DO NOT add the entire framework-internal-utils. It might cause unnecessary circular
// dependencies gets bigger.
libs: [
"android.hardware.cas-V1.2-java",
"android.hardware.health-V1.0-java-constants",
"android.hardware.radio-V1.5-java",
"android.hardware.radio-V1.6-java",
"android.hardware.thermal-V1.0-java-constants",
"android.hardware.thermal-V2.0-java",
"android.hardware.tv.input-V1.0-java-constants",
"android.hardware.tv.tuner-V1.0-java-constants",
"android.hardware.tv.tuner-V1.1-java-constants",
"android.hardware.usb-V1.0-java-constants",
"android.hardware.usb-V1.1-java-constants",
"android.hardware.usb.gadget-V1.0-java",
"android.hardware.vibrator-V1.3-java",
"framework-protos",
"stable.core.platform.api.stubs",
// 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",
],
high_mem: true, // Lots of sources => high memory use, see b/170701554
installable: false,
annotations_enabled: true,
previous_api: ":android.api.public.latest",
merge_annotations_dirs: [
"metalava-manual",
],
defaults: ["android-non-updatable-stubs-defaults"],
api_levels_annotations_enabled: false,
filter_packages: packages_to_document,
defaults_visibility: ["//visibility:private"],
visibility: ["//frameworks/base/api"],
}
/////////////////////////////////////////////////////////////////////
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment