diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt index 9e7dcaf8453..7f16c38123f 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt @@ -996,6 +996,41 @@ fun getSomething() = 10 } } + // KT-51177: when experimental flag is enabled + @Test + fun testIncrementalBuildAfterResourceChangeAndroidExtensions() { + val project = Project("AndroidExtensionsProject") + project.setupWorkingDir() + + project.projectDir.resolve("app/build.gradle").appendText( + """ + | + |androidExtensions { + | experimental = true + |} + """.trimMargin() + ) + + project.build("assembleDebug") { + assertSuccessful() + assertTasksExecuted(":app:compileDebugKotlin") + } + + project.projectDir + .resolve("app/src/main/res/layout/activity_main.xml") + .modify { + it.replace("android:layout_width=\"wrap_content\"", "android:layout_width=\"match_parent\"") + } + + project.build("assembleDebug") { + assertSuccessful() + assertTasksExecuted(":app:compileDebugKotlin") + assertContainsRegex( + "compilerMode=INCREMENTAL_COMPILER.*areFileChangesKnown=true.*app/build/kotlin".toRegex() + ) + } + } + @Test fun testAndroidDaggerIC() { val project = Project("AndroidDaggerProject") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt index ea1e53a593d..fb0bfbd2fdc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidSubplugin.kt @@ -204,6 +204,7 @@ class AndroidSubplugin : it.inputs.files(getLayoutDirectories(project, resDirectories)) .withPathSensitivity(PathSensitivity.RELATIVE) .withPropertyName("androidExtensionLayoutsFrom$name") + .skipWhenEmpty(true) .run { if (GradleVersion.current() >= GradleVersion.version("6.8")) { ignoreEmptyDirectories()