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