[go: nahoru, domu]

Centralize the generation of sdk.prop files

Create a custom task to write these files for projects that need it.

This also makes these tasks lazy.

Test: ./gradlew test
Bug: 144507122
Change-Id: I2cc87e51dd45b551f35b0829d6eefa87e9060327
diff --git a/benchmark/gradle-plugin/build.gradle b/benchmark/gradle-plugin/build.gradle
index 71ffa0d..ef2bb73 100644
--- a/benchmark/gradle-plugin/build.gradle
+++ b/benchmark/gradle-plugin/build.gradle
@@ -18,8 +18,8 @@
 import androidx.build.CompilationTarget
 import androidx.build.LibraryGroups
 import androidx.build.LibraryVersions
-import androidx.build.SupportConfig
 import androidx.build.Publish
+import androidx.build.SdkResourceGenerator
 
 import static androidx.build.dependencies.DependenciesKt.*
 
@@ -31,13 +31,8 @@
 
 apply from: "../../buildSrc/kotlin-dsl-dependency.gradle"
 
-
-ext.generatedResources = "$buildDir/generated/resources"
-ext.prebuiltsRoot = "${project.projectDir.getParentFile()}/../../../prebuilts"
-
 sourceSets {
     test.java.srcDirs += 'src/main/kotlin'
-    test.resources.srcDirs += generatedResources
 }
 
 dependencies {
@@ -52,25 +47,7 @@
     testImplementation(KOTLIN_TEST)
 }
 
-task generateSdkResource() {
-    inputs.property("prebuiltsRoot", prebuiltsRoot)
-    inputs.property("compileSdkVersion", SupportConfig.TARGET_SDK_VERSION)
-    inputs.property("buildToolsVersion", SupportConfig.BUILD_TOOLS_VERSION)
-    inputs.property("minSdkVersion", SupportConfig.DEFAULT_MIN_SDK_VERSION)
-    outputs.dir(generatedResources)
-    doLast {
-        // Properties.write will have a timestamp, that invalidates the task,
-        // so we don't use it and write a file manually
-        new File(generatedResources, "sdk.prop").withWriter('UTF-8') { writer ->
-            writer.write("prebuiltsRepo=$prebuiltsRoot\n")
-            writer.write("compileSdkVersion=$SupportConfig.TARGET_SDK_VERSION\n")
-            writer.write("buildToolsVersion=$SupportConfig.BUILD_TOOLS_VERSION\n")
-            writer.write("minSdkVersion=$SupportConfig.DEFAULT_MIN_SDK_VERSION\n")
-        }
-    }
-}
-
-tasks["compileTestJava"].dependsOn generateSdkResource
+SdkResourceGenerator.generateForHostTest(project)
 
 task buildOnServer(type: Copy) {
   from {
diff --git a/benchmark/gradle-plugin/src/test/kotlin/androidx/benchmark/gradle/BenchmarkPluginTest.kt b/benchmark/gradle-plugin/src/test/kotlin/androidx/benchmark/gradle/BenchmarkPluginTest.kt
index d64ed85..7844207 100644
--- a/benchmark/gradle-plugin/src/test/kotlin/androidx/benchmark/gradle/BenchmarkPluginTest.kt
+++ b/benchmark/gradle-plugin/src/test/kotlin/androidx/benchmark/gradle/BenchmarkPluginTest.kt
@@ -38,7 +38,7 @@
 
     private lateinit var buildToolsVersion: String
     private lateinit var compileSdkVersion: String
-    private lateinit var prebuiltsRepo: String
+    private lateinit var prebuiltsRoot: String
     private lateinit var minSdkVersion: String
 
     private lateinit var buildFile: File
@@ -51,7 +51,7 @@
         val stream = BenchmarkPluginTest::class.java.classLoader.getResourceAsStream("sdk.prop")
         val properties = Properties()
         properties.load(stream)
-        prebuiltsRepo = properties.getProperty("prebuiltsRepo")
+        prebuiltsRoot = properties.getProperty("prebuiltsRoot")
         compileSdkVersion = properties.getProperty("compileSdkVersion")
         buildToolsVersion = properties.getProperty("buildToolsVersion")
         minSdkVersion = properties.getProperty("minSdkVersion")
@@ -92,8 +92,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
@@ -126,8 +126,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
@@ -159,8 +159,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
@@ -193,8 +193,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
@@ -223,8 +223,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
@@ -257,8 +257,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
@@ -305,8 +305,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
@@ -362,8 +362,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
@@ -412,8 +412,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
@@ -467,8 +467,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
@@ -505,8 +505,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
diff --git a/buildSrc/src/main/kotlin/androidx/build/SdkResourceGenerator.kt b/buildSrc/src/main/kotlin/androidx/build/SdkResourceGenerator.kt
new file mode 100644
index 0000000..5defbc6
--- /dev/null
+++ b/buildSrc/src/main/kotlin/androidx/build/SdkResourceGenerator.kt
@@ -0,0 +1,104 @@
+/*
+ * Copyright 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 androidx.build
+
+import androidx.build.dependencies.AGP_LATEST
+import androidx.build.dependencies.KOTLIN_STDLIB
+import org.gradle.api.DefaultTask
+import org.gradle.api.Project
+import org.gradle.api.file.RegularFileProperty
+import org.gradle.api.plugins.JavaPluginConvention
+import org.gradle.api.tasks.Input
+import org.gradle.api.tasks.InputFile
+import org.gradle.api.tasks.OutputFile
+import org.gradle.api.tasks.TaskAction
+import org.gradle.kotlin.dsl.getPlugin
+import java.io.File
+import java.io.PrintWriter
+
+abstract class SdkResourceGenerator : DefaultTask() {
+    @get:Input
+    lateinit var prebuiltsRoot: String
+
+    @get:Input
+    lateinit var localSupportRepo: String
+
+    @get:InputFile
+    abstract val debugKeystore: RegularFileProperty
+
+    @get:Input
+    val compileSdkVersion: Int = SupportConfig.TARGET_SDK_VERSION
+
+    @get:Input
+    val buildToolsVersion: String = SupportConfig.BUILD_TOOLS_VERSION
+
+    @get:Input
+    val minSdkVersion: Int = SupportConfig.DEFAULT_MIN_SDK_VERSION
+
+    @get:Input
+    val agpDependency: String = AGP_LATEST
+
+    @get:Input
+    val navigationCommon: String = "androidx.navigation:navigation-common:2.0.0"
+
+    @get:Input
+    val kotlinStdlib: String = KOTLIN_STDLIB
+
+    @get:Input
+    lateinit var gradleVersion: String
+
+    @get:OutputFile
+    abstract val outputFile: RegularFileProperty
+
+    @TaskAction
+    fun generateFile() {
+        val writer = PrintWriter(outputFile.get().asFile)
+        writer.write("prebuiltsRoot=$prebuiltsRoot\n")
+        writer.write("localSupportRepo=$localSupportRepo\n")
+        writer.write("compileSdkVersion=$compileSdkVersion\n")
+        writer.write("buildToolsVersion=$buildToolsVersion\n")
+        writer.write("minSdkVersion=$minSdkVersion\n")
+        writer.write("debugKeystore=${debugKeystore.get().asFile.canonicalPath}\n")
+        writer.write("agpDependency=$agpDependency\n")
+        writer.write("navigationCommon=$navigationCommon\n")
+        writer.write("kotlinStdlib=$kotlinStdlib\n")
+        writer.write("gradleVersion=$gradleVersion\n")
+        writer.close()
+    }
+
+    companion object {
+        @JvmStatic
+        fun generateForHostTest(project: Project) {
+            val generatedDirectory = File(project.buildDir, "generated/resources")
+            val provider = project.tasks.register(
+                "generateSdkResource",
+                SdkResourceGenerator::class.java
+            ) {
+                it.prebuiltsRoot = (File(SupportConfig.getPrebuiltsRootPath(project))).canonicalPath
+                it.debugKeystore.set(SupportConfig.getKeystore(project))
+                it.localSupportRepo = SupportConfig.getSupportRepoPath(project)
+                it.gradleVersion = project.gradle.gradleVersion
+                it.outputFile.set(File(generatedDirectory, "sdk.prop"))
+            }
+            project.tasks.named("compileTestJava").configure { it.dependsOn(provider) }
+
+            val convention = project.convention.getPlugin<JavaPluginConvention>()
+            val resources = convention.sourceSets.getByName("test").resources
+            resources.srcDirs(setOf(resources.srcDirs, generatedDirectory))
+        }
+    }
+}
diff --git a/lifecycle/integration-tests/incrementality/build.gradle b/lifecycle/integration-tests/incrementality/build.gradle
index f036777..b7d4887 100644
--- a/lifecycle/integration-tests/incrementality/build.gradle
+++ b/lifecycle/integration-tests/incrementality/build.gradle
@@ -14,23 +14,14 @@
  * limitations under the License.
  */
 
+import androidx.build.SdkResourceGenerator
+
 import static androidx.build.dependencies.DependenciesKt.*
-import androidx.build.SupportConfig
 
 plugins {
     id("kotlin")
 }
 
-def generatedResources = "$buildDir/generated/resources"
-def prebuiltsRoot = SupportConfig.getPrebuiltsRootPath(project)
-def debugKeystore = "${SupportConfig.getKeystore(project)}"
-def agpDependency = AGP_LATEST
-def supportRepo = SupportConfig.getSupportRepoPath(project)
-
-sourceSets {
-    test.resources.srcDirs += generatedResources
-}
-
 dependencies {
     implementation(KOTLIN_STDLIB)
     testImplementation(JUNIT)
@@ -38,30 +29,7 @@
     testImplementation gradleTestKit()
 }
 
-task generateSdkResource() {
-    inputs.property("prebuiltsRoot", prebuiltsRoot)
-    inputs.property("compileSdkVersion", SupportConfig.TARGET_SDK_VERSION)
-    inputs.property("buildToolsVersion", SupportConfig.BUILD_TOOLS_VERSION)
-    inputs.property("minSdkVersion", SupportConfig.DEFAULT_MIN_SDK_VERSION)
-    inputs.property("debugKeystore", debugKeystore)
-    inputs.property("supportRepo", supportRepo)
-    outputs.dir(generatedResources)
-    doLast {
-        def gradleVersion = gradle.getGradleVersion()
-        new File(generatedResources, "sdk.prop").withWriter('UTF-8') { writer ->
-            writer.write("prebuiltsRepo=$prebuiltsRoot\n")
-            writer.write("compileSdkVersion=$SupportConfig.TARGET_SDK_VERSION\n")
-            writer.write("buildToolsVersion=$SupportConfig.BUILD_TOOLS_VERSION\n")
-            writer.write("minSdkVersion=$SupportConfig.DEFAULT_MIN_SDK_VERSION\n")
-            writer.write("debugKeystore=$debugKeystore\n")
-            writer.write("agpDependency=$agpDependency\n")
-            writer.write("gradleVersion=$gradleVersion\n")
-            writer.write("supportRepo=$supportRepo\n")
-        }
-    }
-}
-
-tasks.findByName("compileTestKotlin").dependsOn(generateSdkResource)
+SdkResourceGenerator.generateForHostTest(project)
 
 // lifecycle-common and annotation are the dependencies of lifecycle-compiler
 tasks.findByPath("test").dependsOn(tasks.findByPath(":lifecycle:lifecycle-compiler:publish"),
diff --git a/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt b/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt
index 8065773..402ff3f 100644
--- a/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt
+++ b/lifecycle/integration-tests/incrementality/src/test/kotlin/androidx/lifecycle/IncrementalAnnotationProcessingTest.kt
@@ -60,7 +60,7 @@
     private lateinit var genFooAdapterClass: File
     private lateinit var genBarAdapterClass: File
     private lateinit var projectConnection: ProjectConnection
-    private lateinit var prebuiltsRepo: String
+    private lateinit var prebuiltsRoot: String
     private lateinit var compileSdkVersion: String
     private lateinit var buildToolsVersion: String
     private lateinit var minSdkVersion: String
@@ -219,8 +219,8 @@
         addFileWithContent("build.gradle", """
             buildscript {
                 repositories {
-                    maven { url "$prebuiltsRepo/androidx/external" }
-                    maven { url "$prebuiltsRepo/androidx/internal" }
+                    maven { url "$prebuiltsRoot/androidx/external" }
+                    maven { url "$prebuiltsRoot/androidx/internal" }
                 }
                 dependencies {
                     classpath "$agpDependency"
@@ -231,9 +231,9 @@
                 repositories {
                     // Provide a maven repo containing necessary artifacts built from tip of tree
                     maven { url "$supportRepo" }
-                    maven { url "$prebuiltsRepo/androidx/external" }
+                    maven { url "$prebuiltsRoot/androidx/external" }
                     maven {
-                        url "$prebuiltsRepo/androidx/internal"
+                        url "$prebuiltsRoot/androidx/internal"
                         // Get artifacts to be tested from provided repo instead of prebuiltsRepo
                         content {
                             excludeModule("androidx.lifecycle", "lifecycle-compiler")
@@ -347,14 +347,14 @@
         IncrementalAnnotationProcessingTest::class.java.classLoader
             .getResourceAsStream("sdk.prop").use { input ->
                 val properties = Properties().apply { load(input) }
-                prebuiltsRepo = properties.getProperty("prebuiltsRepo")
+                prebuiltsRoot = properties.getProperty("prebuiltsRoot")
                 compileSdkVersion = properties.getProperty("compileSdkVersion")
                 buildToolsVersion = properties.getProperty("buildToolsVersion")
                 minSdkVersion = properties.getProperty("minSdkVersion")
                 debugKeystore = properties.getProperty("debugKeystore")
                 agpDependency = properties.getProperty("agpDependency")
                 gradleVersion = properties.getProperty("gradleVersion")
-                supportRepo = properties.getProperty("supportRepo")
+                supportRepo = properties.getProperty("localSupportRepo")
         }
     }
 }
diff --git a/navigation/navigation-safe-args-gradle-plugin/build.gradle b/navigation/navigation-safe-args-gradle-plugin/build.gradle
index d43cd41..c274ff8 100644
--- a/navigation/navigation-safe-args-gradle-plugin/build.gradle
+++ b/navigation/navigation-safe-args-gradle-plugin/build.gradle
@@ -19,8 +19,8 @@
 import androidx.build.LibraryGroups
 import androidx.build.LibraryVersions
 import androidx.build.AndroidXExtension
-import androidx.build.SupportConfig
 import androidx.build.Publish
+import androidx.build.SdkResourceGenerator
 
 plugins {
     id("AndroidXPlugin")
@@ -28,55 +28,21 @@
     id("java-gradle-plugin")
 }
 
-ext.generatedResources = "$buildDir/generated/resources"
-ext.prebuiltsRoot = SupportConfig.getPrebuiltsRootPath(project)
-ext.debugKeystore = SupportConfig.getKeystore(project)
-
 sourceSets {
     test.java.srcDirs += 'src/tests/kotlin'
-    test.resources.srcDirs += generatedResources
 }
 
 dependencies {
     implementation(AGP_STABLE)
     implementation(KOTLIN_GRADLE_PLUGIN)
-    compile project(":navigation:navigation-safe-args-generator")
-    compile gradleApi()
+    api(project(":navigation:navigation-safe-args-generator"))
+    api(gradleApi())
     implementation(GSON)
-    testImplementation gradleTestKit()
+    testImplementation(gradleTestKit())
     testImplementation(JUNIT)
 }
 
-task generateSdkResource() {
-    def NAVIGATION_COMMON = "androidx.navigation:navigation-common:2.0.0"
-    inputs.property("prebuiltsRoot", prebuiltsRoot)
-    inputs.property("compileSdkVersion", SupportConfig.COMPILE_SDK_VERSION)
-    inputs.property("buildToolsVersion", SupportConfig.BUILD_TOOLS_VERSION)
-    inputs.property("minSdkVersion", SupportConfig.DEFAULT_MIN_SDK_VERSION)
-    inputs.property("debugKeystore", debugKeystore)
-    inputs.property("navigationCommon", NAVIGATION_COMMON)
-    inputs.property("kotlinStdlib", KOTLIN_STDLIB)
-    outputs.dir(generatedResources)
-    doLast {
-        // Properties.write will have a timestamp, that invalidates the task,
-        // so we don't use it and write a file manually
-        new File(generatedResources, "sdk.prop").withWriter('UTF-8') { writer ->
-            writer.write("prebuiltsRepo=$prebuiltsRoot\n")
-            writer.write("compileSdkVersion=\"$SupportConfig.COMPILE_SDK_VERSION\"\n")
-            writer.write("buildToolsVersion=$SupportConfig.BUILD_TOOLS_VERSION\n")
-            writer.write("minSdkVersion=$SupportConfig.DEFAULT_MIN_SDK_VERSION\n")
-            writer.write("debugKeystore=$debugKeystore\n")
-            writer.write("navigationCommon=$NAVIGATION_COMMON\n")
-            writer.write("kotlinStdlib=$KOTLIN_STDLIB\n")
-        }
-    }
-}
-
-test {
-    testLogging { showStandardStreams = true }
-}
-
-tasks["compileTestJava"].dependsOn generateSdkResource
+SdkResourceGenerator.generateForHostTest(project)
 
 gradlePlugin {
     plugins {
diff --git a/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/BasePluginTest.kt b/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/BasePluginTest.kt
index 1fa1c19..fc9ef2a 100644
--- a/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/BasePluginTest.kt
+++ b/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/BasePluginTest.kt
@@ -51,7 +51,7 @@
     val testProjectDir = TemporaryFolder()
 
     internal var buildFile: File = File("")
-    internal var prebuiltsRepo = ""
+    internal var prebuiltsRoot = ""
     internal var compileSdkVersion = ""
     internal var buildToolsVersion = ""
     internal var minSdkVersion = ""
@@ -110,7 +110,7 @@
         val stream = BasePluginTest::class.java.classLoader.getResourceAsStream("sdk.prop")
         val properties = Properties()
         properties.load(stream)
-        prebuiltsRepo = properties.getProperty("prebuiltsRepo")
+        prebuiltsRoot = properties.getProperty("prebuiltsRoot")
         compileSdkVersion = properties.getProperty("compileSdkVersion")
         buildToolsVersion = properties.getProperty("buildToolsVersion")
         minSdkVersion = properties.getProperty("minSdkVersion")
@@ -135,8 +135,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
@@ -174,8 +174,8 @@
 
             allprojects {
                 repositories {
-                    maven { url "$prebuiltsRepo/androidx/external" }
-                    maven { url "$prebuiltsRepo/androidx/internal" }
+                    maven { url "$prebuiltsRoot/androidx/external" }
+                    maven { url "$prebuiltsRoot/androidx/internal" }
                 }
             }
         """.trimIndent()
@@ -192,8 +192,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
diff --git a/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/JavaPluginTest.kt b/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/JavaPluginTest.kt
index 0456492..114186e 100644
--- a/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/JavaPluginTest.kt
+++ b/navigation/navigation-safe-args-gradle-plugin/src/test/kotlin/androidx/navigation/safeargs/gradle/JavaPluginTest.kt
@@ -34,8 +34,8 @@
             }
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
-                maven { url "$prebuiltsRepo/androidx/internal" }
+                maven { url "$prebuiltsRoot/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/internal" }
             }
 
             android {
diff --git a/room/integration-tests/incremental-annotation-processing/build.gradle b/room/integration-tests/incremental-annotation-processing/build.gradle
index aeb543f..b775199 100644
--- a/room/integration-tests/incremental-annotation-processing/build.gradle
+++ b/room/integration-tests/incremental-annotation-processing/build.gradle
@@ -14,26 +14,19 @@
  * limitations under the License.
  */
 
+import androidx.build.SdkResourceGenerator
+
 import static androidx.build.dependencies.DependenciesKt.*
-import androidx.build.SupportConfig
 
 plugins {
     id("AndroidXPlugin")
     id("kotlin")
 }
 
-def generatedResources = "$buildDir/generated/resources"
-def prebuiltsRoot = SupportConfig.getPrebuiltsRootPath(project)
-def localSupportRepo = SupportConfig.getSupportRepoPath(project)
-def agpDependency = AGP_LATEST
-def debugKeystore = "${SupportConfig.getKeystore(project)}"
-
 sourceSets {
     test.java.srcDirs += 'src/tests/kotlin'
-    test.resources.srcDirs += generatedResources
 }
 
-
 dependencies {
     implementation(KOTLIN_STDLIB)
     testImplementation(JUNIT)
@@ -42,28 +35,7 @@
 
 }
 
-task generateSdkResource() {
-    inputs.property("prebuiltsRoot", prebuiltsRoot)
-    inputs.property("localSupportRepo", localSupportRepo)
-    inputs.property("compileSdkVersion", SupportConfig.TARGET_SDK_VERSION)
-    inputs.property("buildToolsVersion", SupportConfig.BUILD_TOOLS_VERSION)
-    inputs.property("minSdkVersion", SupportConfig.DEFAULT_MIN_SDK_VERSION)
-    inputs.property("debugKeystore", debugKeystore)
-    outputs.dir(generatedResources)
-    doLast {
-        new File(generatedResources, "sdk.prop").withWriter('UTF-8') { writer ->
-            writer.write("prebuiltsRepo=$prebuiltsRoot\n")
-            writer.write("localSupportRepo=$localSupportRepo\n")
-            writer.write("agpDependency=$agpDependency\n")
-            writer.write("compileSdkVersion=$SupportConfig.TARGET_SDK_VERSION\n")
-            writer.write("buildToolsVersion=$SupportConfig.BUILD_TOOLS_VERSION\n")
-            writer.write("minSdkVersion=$SupportConfig.DEFAULT_MIN_SDK_VERSION\n")
-            writer.write("debugKeystore=$debugKeystore\n")
-        }
-    }
-}
-
-tasks.findByName("compileTestKotlin").dependsOn(generateSdkResource)
+SdkResourceGenerator.generateForHostTest(project)
 
 tasks.findByPath("test").dependsOn(
         tasks.findByPath(":room:room-common:publish"),
diff --git a/room/integration-tests/incremental-annotation-processing/src/test/kotlin/androidx/room/gradle/RoomIncrementalAnnotationProcessingTest.kt b/room/integration-tests/incremental-annotation-processing/src/test/kotlin/androidx/room/gradle/RoomIncrementalAnnotationProcessingTest.kt
index d7e35d6..d9fd1da 100644
--- a/room/integration-tests/incremental-annotation-processing/src/test/kotlin/androidx/room/gradle/RoomIncrementalAnnotationProcessingTest.kt
+++ b/room/integration-tests/incremental-annotation-processing/src/test/kotlin/androidx/room/gradle/RoomIncrementalAnnotationProcessingTest.kt
@@ -55,7 +55,7 @@
     val expect: Expect = Expect.create()
 
     // Properties to set up test project
-    private lateinit var prebuiltsRepo: String
+    private lateinit var prebuiltsRoot: String
     private lateinit var agpDependency: String
     private lateinit var localSupportRepo: String
     private lateinit var compileSdkVersion: String
@@ -111,7 +111,7 @@
             .getResourceAsStream("sdk.prop")
             .use { input ->
                 val properties = Properties().apply { load(input) }
-                prebuiltsRepo = properties.getProperty("prebuiltsRepo")
+                prebuiltsRoot = properties.getProperty("prebuiltsRoot")
                 localSupportRepo = properties.getProperty("localSupportRepo")
                 agpDependency = properties.getProperty("agpDependency")
                 compileSdkVersion = properties.getProperty("compileSdkVersion")
@@ -133,8 +133,8 @@
             """
             buildscript {
                 repositories {
-                    maven { url "$prebuiltsRepo/androidx/external" }
-                    maven { url "$prebuiltsRepo/androidx/internal" }
+                    maven { url "$prebuiltsRoot/androidx/external" }
+                    maven { url "$prebuiltsRoot/androidx/internal" }
                 }
                 dependencies {
                     classpath "$agpDependency"
@@ -144,10 +144,10 @@
             apply plugin: 'com.android.application'
 
             repositories {
-                maven { url "$prebuiltsRepo/androidx/external" }
+                maven { url "$prebuiltsRoot/androidx/external" }
                 maven { url "$localSupportRepo" }
                 maven {
-                    url "$prebuiltsRepo/androidx/internal"
+                    url "$prebuiltsRoot/androidx/internal"
                     content {
                         excludeModule("androidx.room", "room-compiler")
                     }