Android Extensions: Add kotlin-android-extensions-runtime only if experimental flag is enabled
This commit is contained in:
+19
-1
@@ -16,6 +16,24 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.gradle.internal
|
package org.jetbrains.kotlin.gradle.internal
|
||||||
|
|
||||||
open class AndroidExtensionsExtension {
|
import groovy.lang.Closure
|
||||||
|
import org.gradle.util.Configurable
|
||||||
|
|
||||||
|
open class AndroidExtensionsExtension : Configurable<AndroidExtensionsExtension> {
|
||||||
|
private lateinit var onEvaluatedHandler: (AndroidExtensionsExtension) -> Unit
|
||||||
|
|
||||||
|
fun setEvaluatedHandler(handler: (AndroidExtensionsExtension) -> Unit) {
|
||||||
|
onEvaluatedHandler = handler
|
||||||
|
}
|
||||||
|
|
||||||
open var isExperimental: Boolean = false
|
open var isExperimental: Boolean = false
|
||||||
|
|
||||||
|
override fun configure(closure: Closure<*>): AndroidExtensionsExtension {
|
||||||
|
// ConfigureUtil is not used here to prevent infinite recursion
|
||||||
|
closure.resolveStrategy = Closure.DELEGATE_FIRST
|
||||||
|
closure.delegate = this
|
||||||
|
closure.call()
|
||||||
|
onEvaluatedHandler(this)
|
||||||
|
return this
|
||||||
|
}
|
||||||
}
|
}
|
||||||
+9
-1
@@ -38,8 +38,16 @@ import javax.xml.parsers.DocumentBuilderFactory
|
|||||||
// Use apply plugin: 'kotlin-android-extensions' to enable Android Extensions in an Android project.
|
// Use apply plugin: 'kotlin-android-extensions' to enable Android Extensions in an Android project.
|
||||||
class AndroidExtensionsSubpluginIndicator : Plugin<Project> {
|
class AndroidExtensionsSubpluginIndicator : Plugin<Project> {
|
||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) {
|
||||||
project.extensions.create("androidExtensions", AndroidExtensionsExtension::class.java)
|
val extension = project.extensions.create("androidExtensions", AndroidExtensionsExtension::class.java)
|
||||||
|
|
||||||
|
extension.setEvaluatedHandler { evaluatedExtension ->
|
||||||
|
if (evaluatedExtension.isExperimental) {
|
||||||
|
addAndroidExtensionsRuntimeIfNeeded(project)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun addAndroidExtensionsRuntimeIfNeeded(project: Project) {
|
||||||
val kotlinPluginWrapper = project.plugins.findPlugin(KotlinAndroidPluginWrapper::class.java) ?: run {
|
val kotlinPluginWrapper = project.plugins.findPlugin(KotlinAndroidPluginWrapper::class.java) ?: run {
|
||||||
project.logger.error("'kotlin-android' plugin should be enabled before 'kotlin-android-extensions'")
|
project.logger.error("'kotlin-android' plugin should be enabled before 'kotlin-android-extensions'")
|
||||||
return
|
return
|
||||||
|
|||||||
Reference in New Issue
Block a user