diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt index 96e854799a0..561cc39b60c 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/Kapt3AndroidIT.kt @@ -20,6 +20,14 @@ open class Kapt3Android32IT : Kapt3AndroidIT() { get() = GradleVersionRequired.AtLeast("4.6") } +open class Kapt3Android33IT : Kapt3AndroidIT() { + override val androidGradlePluginVersion: AGPVersion + get() = AGPVersion.v3_3_2 + + override val defaultGradleVersion: GradleVersionRequired + get() = GradleVersionRequired.AtLeast("5.2") +} + class Kapt3Android31IT : Kapt3AndroidIT() { override val androidGradlePluginVersion: AGPVersion get() = AGPVersion.v3_1_0 diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/AGPVersion.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/AGPVersion.kt index 32f948c4718..a5f6e19474e 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/AGPVersion.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/util/AGPVersion.kt @@ -21,5 +21,6 @@ class AGPVersion private constructor(private val versionNumber: VersionNumber) { val v3_0_0 = fromString("3.0.0") val v3_1_0 = fromString("3.1.0") val v3_2_0 = fromString("3.2.0") + val v3_3_2 = fromString("3.3.2") } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/build.gradle index 828d450e9b4..b0007f68abc 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-databinding/build.gradle @@ -1,3 +1,5 @@ +import org.gradle.util.VersionNumber + // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { @@ -21,4 +23,18 @@ allprojects { maven { url 'https://maven.google.com' } jcenter() } + + if (VersionNumber.parse(android_tools_version) >= VersionNumber.parse("3.3.0")) { + // Workaround: the AGP 3.3.2 databinding library depends on these exact versions, and the espresso test library + // transitively brings newer incompatible ones. Force these versions: + configurations.all { + resolutionStrategy { + force 'com.android.support:support-annotations:26.1.0' + force 'com.android.support:support-core-utils:26.1.0' + force 'com.android.support:support-compat:26.1.0' + force 'android.arch.lifecycle:common:1.0.3' + force 'android.arch.core:common:1.0.0' + } + } + } } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-realm/build.gradle b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-realm/build.gradle index b2d4ddf7da6..4123e604254 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-realm/build.gradle +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/resources/testProject/kapt2/android-realm/build.gradle @@ -41,6 +41,19 @@ android { dexOptions { incremental false } + + packagingOptions { + // Workaround for org.jetbrains.kotlin.gradle.Kapt3Android33IT#testRealm + // Android Plugin 3.3.2 fails with: + // Execution failed for task ':transformResourcesWithMergeJavaResForDebug'. + // com.android.builder.merge.DuplicateRelativeFileException: (these appear one by one if you exclude single files) + // - More than one file was found with OS independent path 'kotlin/reflect/reflect.kotlin_builtins' + // - More than one file was found with OS independent path 'kotlin/coroutines/coroutines.kotlin_builtins' + // - More than one file was found with OS independent path 'kotlin/collections/collections.kotlin_builtins' + // - More than one file was found with OS independent path 'kotlin/internal/internal.kotlin_builtins' + // (maybe more) + exclude '**/*.kotlin_builtins' + } } repositories { diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index b581897b348..462c0e9a1c5 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -772,12 +772,14 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationT (kotlinAndroidTarget.compilations as NamedDomainObjectCollection).add(compilation) } - val subpluginEnvironment = SubpluginEnvironment.loadSubplugins(project, kotlinConfigurationTools.kotlinPluginVersion) - val compilation = kotlinAndroidTarget.compilations.getByName(getVariantName(variant)) - applySubplugins(project, compilation, variant, subpluginEnvironment) } project.whenEvaluated { + forEachVariant(project) { variant -> + val subpluginEnvironment = SubpluginEnvironment.loadSubplugins(project, kotlinConfigurationTools.kotlinPluginVersion) + val compilation = kotlinAndroidTarget.compilations.getByName(getVariantName(variant)) + applySubplugins(project, compilation, variant, subpluginEnvironment) + } checkAndroidAnnotationProcessorDependencyUsage(project) } }