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
|
||||
|
||||
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
|
||||
|
||||
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.
|
||||
class AndroidExtensionsSubpluginIndicator : Plugin<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 {
|
||||
project.logger.error("'kotlin-android' plugin should be enabled before 'kotlin-android-extensions'")
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user