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