Fix docs federation
Now federated against the same APIs that it's compiled against. Removes
unused diff task generation method.
Bug: 36086933
Test: ./gradlew generateDocs
Change-Id: Ief16a2d9facc24b6845adfd33aa139eb2c9dbf68
diff --git a/buildSrc/diff_and_docs.gradle b/buildSrc/diff_and_docs.gradle
index 03e98c9..c7da87c 100644
--- a/buildSrc/diff_and_docs.gradle
+++ b/buildSrc/diff_and_docs.gradle
@@ -25,8 +25,25 @@
import groovy.io.FileType
+// Generates API files for the current SDK. This is necessary for federation.
+task generateSdkApi(type: DoclavaTask, dependsOn: [configurations.doclava]) {
+ docletpath = configurations.doclava.resolve()
+ destinationDir = project.docsDir
+
+ classpath = project.androidJar
+ source zipTree(project.androidSrcJar)
+
+ apiFile = new File(project.docsDir, 'release/sdk_current.txt')
+ removedApiFile = new File(project.docsDir, 'release/sdk_removed.txt')
+ generateDocs = false
+
+ options {
+ addStringOption "stubpackages", "android.*"
+ }
+}
+
// Generates online docs.
-task generateDocs(type: DoclavaTask, dependsOn: configurations.doclava) {
+task generateDocs(type: DoclavaTask, dependsOn: [configurations.doclava, generateSdkApi]) {
group = JavaBasePlugin.DOCUMENTATION_GROUP
description = 'Generates d.android.com-style documentation.'
@@ -41,6 +58,12 @@
['android.whichdoc', 'online'],
['android.hasSamples', 'true'])
+ def federateOption = new DoclavaMultilineJavadocOptionFileOption('federate')
+ federateOption.add(['Android', 'https://developer.android.com'])
+
+ def federationapiOption = new DoclavaMultilineJavadocOptionFileOption('federationapi')
+ federationapiOption.add(['Android', generateSdkApi.apiFile.absolutePath])
+
// Track API change history.
def apiFilePattern = /(\d+\.\d+\.\d).txt/
def sinceOption = new DoclavaMultilineJavadocOptionFileOption('since')
@@ -61,9 +84,10 @@
options {
addStringOption "templatedir",
"${supportRootFolder}/../../external/doclava/res/assets/templates-sdk"
- addStringOption "federate Android", "http://developer.android.com"
addStringOption "stubpackages", "android.support.*"
addStringOption "samplesdir", "${supportRootFolder}/samples"
+ addOption federateOption
+ addOption federationapiOption
addOption hdfOption
addOption sinceOption
}
@@ -86,24 +110,6 @@
}
}
-JDiffTask createApiDiffsTask(String taskName, File oldApiXml, File newApiXml, File outDir,
- Configuration jdiff, Task... dependencies) {
- return tasks.create(name: taskName, type: JDiffTask.class) {
- dependsOn jdiff
- dependsOn dependencies
-
- docletpath = jdiff.resolve()
-
- oldApiXmlFile oldApiXml
- newApiXmlFile newApiXml
- destinationDir = outDir
-
- // This prefix is based on the assumption that the output diffs will
- // ultimately land in frameworks/base/docs/html/sdk/support_api_diff/.
- newJavadocPrefix = "../reference/"
- }
-}
-
// Generates API files.
task generateApi(type: DoclavaTask, dependsOn: configurations.doclava) {
docletpath = configurations.doclava.resolve()
@@ -119,7 +125,6 @@
options {
addStringOption "templatedir",
"${supportRootFolder}/../../external/doclava/res/assets/templates-sdk"
- addStringOption "federate Android", "http://developer.android.com"
addStringOption "stubpackages", "android.support.*"
}
exclude '**/BuildConfig.java'
diff --git a/buildSrc/init.gradle b/buildSrc/init.gradle
index 25281df..5005c10 100644
--- a/buildSrc/init.gradle
+++ b/buildSrc/init.gradle
@@ -80,8 +80,10 @@
final String fullSdkPath = "${init.prebuiltsRoot}/fullsdk-${platform}"
if (file(fullSdkPath).exists()) {
gradle.ext.currentSdk = 26
- project.ext.androidJar = files("${fullSdkPath}/platforms/android-${gradle.ext.currentSdk}" +
- "/android.jar")
+ project.ext.androidJar =
+ files("${fullSdkPath}/platforms/android-${gradle.currentSdk}/android.jar")
+ project.ext.androidSrcJar =
+ file("${fullSdkPath}/platforms/android-${gradle.currentSdk}/android-stubs-src.jar")
System.setProperty('android.home', "${init.prebuiltsRoot}/fullsdk-${platform}")
File props = file("local.properties")
props.write "sdk.dir=${fullSdkPath}"
@@ -89,6 +91,7 @@
} else {
gradle.ext.currentSdk = 'current'
project.ext.androidJar = files("${init.prebuiltsRoot}/sdk/current/android.jar")
+ project.ext.androidSrcJar = files("${init.prebuiltsRoot}/sdk/current/android-stubs-src.jar")
File props = file("local.properties")
props.write "android.dir=../../"
ext.usingFullSdk = false