Read current API file from prebuilts/sdk when available
Bug: 36442466
Test: ./gradlew generateDocs
Change-Id: I8bd7c830078cf2f10d5200e0c72c634bd3dcfd9a
diff --git a/buildSrc/diff_and_docs.gradle b/buildSrc/diff_and_docs.gradle
index c7da87c..2034c15 100644
--- a/buildSrc/diff_and_docs.gradle
+++ b/buildSrc/diff_and_docs.gradle
@@ -25,20 +25,43 @@
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
+// Set up platform API files for federation.
+if (project.androidApiTxt != null) {
+ task generateSdkApi(type: Copy) {
+ description = 'Copies the API files for the current SDK.'
- classpath = project.androidJar
- source zipTree(project.androidSrcJar)
+ // Export the API files so this looks like a DoclavaTask.
+ ext.apiFile = new File(project.docsDir, 'release/sdk_current.txt')
+ ext.removedApiFile = new File(project.docsDir, 'release/sdk_removed.txt')
- apiFile = new File(project.docsDir, 'release/sdk_current.txt')
- removedApiFile = new File(project.docsDir, 'release/sdk_removed.txt')
- generateDocs = false
+ from project.androidApiTxt.absolutePath
+ into apiFile.parent
+ rename { apiFile.name }
- options {
- addStringOption "stubpackages", "android.*"
+ // Register the fake removed file as an output.
+ outputs.file removedApiFile
+
+ doLast {
+ removedApiFile.createNewFile()
+ }
+ }
+} else {
+ task generateSdkApi(type: DoclavaTask, dependsOn: [configurations.doclava]) {
+ description = 'Generates API files for the current SDK.'
+
+ 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.*"
+ }
}
}
diff --git a/buildSrc/init.gradle b/buildSrc/init.gradle
index 5005c10..7337c53 100644
--- a/buildSrc/init.gradle
+++ b/buildSrc/init.gradle
@@ -84,6 +84,7 @@
files("${fullSdkPath}/platforms/android-${gradle.currentSdk}/android.jar")
project.ext.androidSrcJar =
file("${fullSdkPath}/platforms/android-${gradle.currentSdk}/android-stubs-src.jar")
+ project.ext.androidApiTxt = null
System.setProperty('android.home', "${init.prebuiltsRoot}/fullsdk-${platform}")
File props = file("local.properties")
props.write "sdk.dir=${fullSdkPath}"
@@ -91,7 +92,8 @@
} 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")
+ project.ext.androidSrcJar = null
+ project.ext.androidApiTxt = file("${init.prebuiltsRoot}/sdk/api/26.txt")
File props = file("local.properties")
props.write "android.dir=../../"
ext.usingFullSdk = false