Linux
diff --git a/dependencies/android-sdk/build.gradle.kts b/dependencies/android-sdk/build.gradle.kts
index be747d59..0455cea 100644
--- a/dependencies/android-sdk/build.gradle.kts
+++ b/dependencies/android-sdk/build.gradle.kts
@@ -25,8 +25,9 @@
}
val buildToolsVersion = "r29.0.3"
-val platformToolsVersion = "r35.0.0"
-val sdkToolsVersion = "4333796" // 26.1.1
+val platformToolsVersion = "r28.0.1"
+val sdkToolsVersion = "4333796" /*26.1.1*/
+val emulatorVersion = "5264690"
dependencies {
implicitDependencies("google:build-tools:$buildToolsVersion:linux@zip")
@@ -40,12 +41,17 @@
implicitDependencies("google:sdk-tools-linux:$sdkToolsVersion@zip")
implicitDependencies("google:sdk-tools-windows:$sdkToolsVersion@zip")
implicitDependencies("google:sdk-tools-darwin:$sdkToolsVersion@zip")
+
+ implicitDependencies("google:emulator-linux:$emulatorVersion@zip")
+ implicitDependencies("google:emulator-windows:$emulatorVersion@zip")
+ implicitDependencies("google:emulator-darwin:$emulatorVersion@zip")
}
val androidSdk by configurations.creating
val androidJar by configurations.creating
val androidPlatform by configurations.creating
val buildTools by configurations.creating
+val androidEmulator by configurations.creating
val sdkDestDirName = "androidSdk"
@@ -145,6 +151,7 @@
unzipSdkTask("platform-tools", platformToolsVersion, "", toolsOsDarwin)
unzipSdkTask("sdk-tools-$toolsOsDarwin", sdkToolsVersion, "", "")
unzipSdkTask("build-tools", buildToolsVersion, "build-tools/${buildToolsVersion.removePrefix("r")}", toolsOs, buildTools, 1)
+unzipSdkTask("emulator-$toolsOsDarwin", emulatorVersion, "", "", prepareTask = prepareEmulator)
unzipSdkTask("armeabi-v7a", "19", "system-images/android-19/default","r05", prepareTask = prepareEmulator)
unzipSdkTask("x86", "19", "system-images/android-19/default", "r06", prepareTask = prepareEmulator)
@@ -159,3 +166,7 @@
artifacts.add(androidJar.name, layout.buildDirectory.file("$sdkDestDirName/platforms/android-26/android.jar")) {
builtBy(preparePlatform)
}
+
+artifacts.add(androidEmulator.name, layout.buildDirectory.dir(sdkDestDirName)) {
+ builtBy(prepareEmulator)
+}
\ No newline at end of file
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 4f7e4d9..12684c4 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -1813,24 +1813,42 @@
<sha256 value="0ce606d5c46bf4cd0883e4f7078efeae314e41a96dd329c2c089d123cc8c2609" origin="Generated by Gradle"/>
</artifact>
</component>
+ <component group="google" name="emulator-darwin" version="5264690">
+ <artifact name="emulator-darwin-5264690.zip">
+ <md5 value="ecb9c325d4d66e72fb3756b571ab0de0" origin="Generated by Gradle"/>
+ <sha256 value="078d1444659a85c7940dc40ddf49288ab2a2ff27b01c8ebd852ca6c101906076" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="google" name="emulator-linux" version="5264690">
+ <artifact name="emulator-linux-5264690.zip">
+ <md5 value="f4c54782ea227094a4d069f64f8cf4a2" origin="Generated by Gradle"/>
+ <sha256 value="6821047a6444e722c8f3d52a621bb6ecb2651be84bde6cd26b404f234f45fdc4" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
+ <component group="google" name="emulator-windows" version="5264690">
+ <artifact name="emulator-windows-5264690.zip">
+ <md5 value="78470340c52fe3782f4917aaa548c91b" origin="Generated by Gradle"/>
+ <sha256 value="96673be93da220c1f719c7cc113819a032d528e9cd90ac2713fae945c37807c5" origin="Generated by Gradle"/>
+ </artifact>
+ </component>
<component group="google" name="platform" version="26_r02">
<artifact name="platform-26_r02.zip">
<md5 value="e0bd6d35c31c9f7ea2aa8931822fa5b3" origin="Generated by Gradle"/>
<sha256 value="2aafa7d19c5e9c4b643ee6ade3d85ef89dc2f79e8383efdb9baf7fddad74b52a" origin="Generated by Gradle"/>
</artifact>
</component>
- <component group="google" name="platform-tools" version="r35.0.0">
- <artifact name="platform-tools-r35.0.0-darwin.zip">
- <md5 value="51b47bb98d2791e84de925a53b609a0f" origin="Generated by Gradle"/>
- <sha256 value="85c75ac31556dc95712cf1bdec592098e6c5067dc485356591d85932178bf8cd" origin="Generated by Gradle"/>
+ <component group="google" name="platform-tools" version="r28.0.1">
+ <artifact name="platform-tools-r28.0.1-darwin.zip">
+ <md5 value="1cde81b82e84c0751d5a8fcbe1d8ce56" origin="Generated by Gradle"/>
+ <sha256 value="3bc833ae3f4bd831af03811f2d1be540c2eb2eb9a17de9398b0a06dc5af6fa84" origin="Generated by Gradle"/>
</artifact>
- <artifact name="platform-tools-r35.0.0-linux.zip">
- <md5 value="8c054a42356820d29003be3ce33accd6" origin="Generated by Gradle"/>
- <sha256 value="62fc977c1b7622ef8dbd6fe1312987d9b139aa8a0b06e88573c1b60129399d49" origin="Generated by Gradle"/>
+ <artifact name="platform-tools-r28.0.1-linux.zip">
+ <md5 value="e322fcbfc59ff517e327ce310899fc0c" origin="Generated by Gradle"/>
+ <sha256 value="3e11358a3a9b0dd43ad9ab8a621eadb41737ac0495b2059a94b995157bca7392" origin="Generated by Gradle"/>
</artifact>
- <artifact name="platform-tools-r35.0.0-windows.zip">
- <md5 value="e8a786dc533d91b1e6c3dc38722bbaba" origin="Generated by Gradle"/>
- <sha256 value="7ab78a8f8b305ae4d0de647d99c43599744de61a0838d3a47bda0cdffefee87e" origin="Generated by Gradle"/>
+ <artifact name="platform-tools-r28.0.1-windows.zip">
+ <md5 value="5376bf9e941b12d99a4747d3caf4b209" origin="Generated by Gradle"/>
+ <sha256 value="db78f726d5dc653706dcd15a462ab1b946c643f598df76906c4c1858411c54df" origin="Generated by Gradle"/>
</artifact>
</component>
<component group="google" name="sdk-tools-darwin" version="4333796">
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts
index 5f62ff1..0453b12 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts
@@ -503,6 +503,7 @@
}
useAndroidSdk()
+ useAndroidEmulator()
val shouldApplyJunitPlatform = name !in setOf(
allParallelTestsTask.name,
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/AndroidCodegenIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/AndroidCodegenIT.kt
index 79b3df7..b6ae5cc 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/AndroidCodegenIT.kt
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/android/AndroidCodegenIT.kt
@@ -6,20 +6,16 @@
package org.jetbrains.kotlin.gradle.android
import org.gradle.api.logging.LogLevel
+import org.gradle.internal.logging.LoggingConfigurationBuildOptions.StacktraceOption
import org.gradle.util.GradleVersion
import org.jetbrains.kotlin.gradle.testbase.*
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.condition.OS
@DisplayName("codegen tests on android")
-@AndroidTestVersions(minVersion = TestVersions.AGP.AGP_84, maxVersion = TestVersions.AGP.AGP_84)
-/*
- * Non-virtualized runners are necessary with current configuration.
- * This build utilizes the Android Emulator to execute codegen tests,
- * requiring a VM hypervisor for optimal performance.
- * Nested virtualization on CI runners except physical Macs fails.
- */
-@OsCondition(enabledOnCI = [OS.MAC])
+@AndroidTestVersions(minVersion = TestVersions.AGP.AGP_71, maxVersion = TestVersions.AGP.AGP_71)
+@GradleTestVersions(minVersion = TestVersions.Gradle.G_6_9, maxVersion = TestVersions.Gradle.G_6_9)
+@OsCondition(supportedOn = [OS.MAC, OS.LINUX], enabledOnCI = [OS.MAC, OS.LINUX])
@AndroidCodegenTests
class AndroidCodegenIT : KGPBaseTest() {
@GradleAndroidTest
@@ -32,15 +28,23 @@
"codegen-tests",
gradleVersion,
buildOptions = defaultBuildOptions.copy(
- androidVersion = agpVersion,
- freeArgs = listOf("-Pandroid.useAndroidX=true", "-Pandroid.experimental.testOptions.managedDevices.setupTimeoutMinutes=0"),
- logLevel = LogLevel.LIFECYCLE
+ freeArgs = listOf("-Pandroid.useAndroidX=true"),
+ logLevel = LogLevel.INFO,
+ stacktraceMode = StacktraceOption.STACKTRACE_SHORT_OPTION
),
enableGradleDebug = false,
buildJdk = jdkVersion.location
) {
- build("assembleAndroidTest", forceOutput = true, enableGradleDaemonMemoryLimitInMb = 6000)
- build("nexusCheck", forceOutput = true, enableGradleDaemonMemoryLimitInMb = 6000)
+// makeSnapshotTo("/Users/Iaroslav.Postovalov/IdeaProjects/kotlin/build/snapshot/codegen-tests")
+// build(
+// "assembleAndroidTest",
+// enableGradleDaemonMemoryLimitInMb = 6000
+// )
+// build(
+// "nexusCheck",
+// forceOutput = true,
+// enableGradleDaemonMemoryLimitInMb = 6000
+// )
}
}
}
diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/codegen-tests/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/codegen-tests/build.gradle.kts
index 1373b73..be99e5b 100644
--- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/codegen-tests/build.gradle.kts
+++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/codegen-tests/build.gradle.kts
@@ -48,8 +48,14 @@
create("nexus") {
// A lower resolution device is used here for better emulator performance
device = "Nexus One"
- apiLevel = 30
- systemImageSource = "aosp-atd"
+
+ if (project.hasProperty("forceArmEmulator")) {
+ apiLevel = 27
+ systemImageSource = "aosp"
+ } else {
+ apiLevel = 30
+ systemImageSource = "aosp-atd"
+ }
}
}
}
@@ -66,7 +72,6 @@
doLast {
testClassesDirectories.forEach { dir ->
- logger.info("Jar {} folder", dir.name)
ant.withGroovyBuilder {
"jar"("basedir" to dir.path, "destfile" to "libs/${dir.name}.jar")
}
@@ -97,3 +102,14 @@
}
}
}
+
+if (project.hasProperty("forceArmEmulator")) {
+ tasks.withType<com.android.build.gradle.internal.tasks.ManagedDeviceInstrumentationTestSetupTask> {
+ doFirst {
+ org.gradle.api.internal.provider.AbstractProperty::class.java.getDeclaredField("value").also {
+ it.isAccessible = true
+ it.set(abi, org.gradle.api.internal.provider.Providers.of("arm64-v8a"))
+ }
+ }
+ }
+}
diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt
index 537ef17..aea59f6 100644
--- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt
+++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt
@@ -339,6 +339,10 @@
fun useAndroidJar(task: Task) {
task.useAndroidConfiguration(systemPropertyName = "android.jar", configName = "androidJar")
}
+
+ fun useAndroidEmulator(task: Task) {
+ task.useAndroidConfiguration(systemPropertyName = "android.sdk", configName = "androidEmulator")
+ }
}
private fun Task.useAndroidConfiguration(systemPropertyName: String, configName: String) {
@@ -372,6 +376,10 @@
TaskUtils.useAndroidSdk(this)
}
+fun Task.useAndroidEmulator() {
+ TaskUtils.useAndroidEmulator(this)
+}
+
fun Task.useAndroidJar() {
TaskUtils.useAndroidJar(this)
}