From f053d79994cf8af9d80b90956ec95063767f1b58 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Fri, 2 Jun 2017 21:19:21 +0300 Subject: [PATCH] Add support for com.android.feature plugin. --- .../gradle/plugin/android/Android25ProjectHandler.kt | 7 ++++++- .../org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt | 10 +++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/agp25/kotlin/org/jetbrains/kotlin/gradle/plugin/android/Android25ProjectHandler.kt b/libraries/tools/kotlin-gradle-plugin/src/agp25/kotlin/org/jetbrains/kotlin/gradle/plugin/android/Android25ProjectHandler.kt index 4b2cbef70d1..41bbd6fd282 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/agp25/kotlin/org/jetbrains/kotlin/gradle/plugin/android/Android25ProjectHandler.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/agp25/kotlin/org/jetbrains/kotlin/gradle/plugin/android/Android25ProjectHandler.kt @@ -21,7 +21,12 @@ class Android25ProjectHandler(kotlinConfigurationTools: KotlinConfigurationTools val androidExtension = project.extensions.getByName("android") when (androidExtension) { is AppExtension -> androidExtension.applicationVariants.all(action) - is LibraryExtension -> androidExtension.libraryVariants.all(action) + is LibraryExtension -> { + androidExtension.libraryVariants.all(action) + if (androidExtension is FeatureExtension) { + androidExtension.featureVariants.all(action) + } + } is TestExtension -> androidExtension.applicationVariants.all(action) } if (androidExtension is TestedExtension) { 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 dbdabf6d910..c1f774ef2d5 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 @@ -12,6 +12,7 @@ import org.gradle.api.Project import org.gradle.api.artifacts.Configuration import org.gradle.api.logging.Logger import org.gradle.api.logging.Logging +import org.gradle.api.plugins.InvalidPluginException import org.gradle.api.plugins.JavaBasePlugin import org.gradle.api.plugins.JavaPlugin import org.gradle.api.plugins.JavaPluginConvention @@ -423,9 +424,12 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationT project.afterEvaluate { project -> if (project != null) { - val plugin = (project.plugins.findPlugin("android") - ?: project.plugins.findPlugin("android-library") - ?: project.plugins.findPlugin("com.android.test")) as BasePlugin + val plugin = sequenceOf("android", "android-library", "com.android.test", "com.android.feature") + .mapNotNull { project.plugins.findPlugin(it) as? BasePlugin } + .firstOrNull() + ?: throw InvalidPluginException("The Kotlin Android plugin cannot be used without " + + "the Android Gradle plugin applied to the project.") + val subpluginEnvironment = loadSubplugins(project) forEachVariant(project) {