Customized test reporting for benchmarks

This change adds a benchmarkReport task to the accompanying plugin for
androidx.benchmark which runs provides functionality to copy benchmark
report data off from instrumented devices onto host machine after the
benchmarks are done running. The benchmarkReport task is registered in a
way which will automatically run after connectedAndroidTest.

Fixes: #130444854
Test: ./gradlew benchmark:cC && ./gradlew benchmark:benchmark-gradle-api:check
Change-Id: I0f6778d51eecf877e16b9ce3a802074e9450209d
diff --git a/benchmark/gradle-plugin/build.gradle b/benchmark/gradle-plugin/build.gradle
index 8eb0950..8f656cb 100644
--- a/benchmark/gradle-plugin/build.gradle
+++ b/benchmark/gradle-plugin/build.gradle
@@ -18,6 +18,7 @@
 import androidx.build.CompilationTarget
 import androidx.build.LibraryGroups
 import androidx.build.LibraryVersions
+import androidx.build.SupportConfig
 
 import static androidx.build.dependencies.DependenciesKt.*
 
@@ -27,20 +28,45 @@
     id("java-gradle-plugin")
 }
 
+ext.generatedResources = "$buildDir/generated/resources"
+ext.prebuiltsRoot = "${project.projectDir.getParentFile()}/../../../prebuilts"
+
 sourceSets {
     test.java.srcDirs += 'src/main/kotlin'
+    test.resources.srcDirs += generatedResources
 }
 
 dependencies {
     implementation gradleApi()
     implementation(build_libs.gradle)
     implementation(KOTLIN_STDLIB)
-    implementation(ANDROIDX_TEST_RUNNER)
 
     testImplementation gradleTestKit()
+    testImplementation(ANDROIDX_TEST_RUNNER)
     testImplementation(JUNIT)
+    testImplementation(KOTLIN_TEST_COMMON)
 }
 
+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
+
 gradlePlugin {
     plugins {
         benchmark {