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) }