diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/ParcelizeSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/ParcelizeSubplugin.kt index 8dcbaade293..aa569e08276 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/ParcelizeSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/ParcelizeSubplugin.kt @@ -16,12 +16,16 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation // Use apply plugin: 'kotlin-parcelize' to enable Android Extensions in an Android project. class ParcelizeSubplugin : KotlinCompilerPluginSupportPlugin { override fun apply(target: Project) { - addParcelizeRuntime(target) - target.afterEvaluate { - if (target.plugins.hasPlugin(AndroidSubplugin::class.java)) { - throw GradleException("${target.path}: 'kotlin-parcelize' can't be applied together with 'kotlin-android-extensions'") - } + target.plugins.withType(AndroidSubplugin::class.java) { + throw GradleException("${target.path}: 'kotlin-parcelize' can't be applied together with 'kotlin-android-extensions'") + } + + val kotlinPluginVersion = target.getKotlinPluginVersion() + val dependency = target.dependencies.create("org.jetbrains.kotlin:kotlin-parcelize-runtime:$kotlinPluginVersion") + target.forEachVariant { + it.runtimeConfiguration.dependencies.add(dependency) + it.compileConfiguration.dependencies.add(dependency) } } @@ -44,27 +48,4 @@ class ParcelizeSubplugin : KotlinCompilerPluginSupportPlugin { override fun getCompilerPluginId() = "org.jetbrains.kotlin.parcelize" override fun getPluginArtifact(): SubpluginArtifact = JetBrainsSubpluginArtifact(artifactId = "kotlin-parcelize-compiler") - - private fun addParcelizeRuntime(project: Project) { - val kotlinPluginVersion = project.getKotlinPluginVersion() - - project.configurations.all { configuration -> - val name = configuration.name - if (name != "implementation" && name != "compile") return@all - - androidPluginVersion ?: return@all - val requiredConfigurationName = when { - compareVersionNumbers(androidPluginVersion, "2.5") > 0 -> "implementation" - else -> "compile" - } - - if (name != requiredConfigurationName) return@all - - configuration.dependencies.add( - project.dependencies.create( - "org.jetbrains.kotlin:kotlin-parcelize-runtime:$kotlinPluginVersion" - ) - ) - } - } }