Android Extensions: Support defaultCacheImplementation in Gradle

This commit is contained in:
Yan Zhulanow
2017-07-20 23:15:48 +03:00
parent 5a1a4bd8bd
commit c2be771486
2 changed files with 12 additions and 1 deletions
@@ -19,6 +19,12 @@ package org.jetbrains.kotlin.gradle.internal
import groovy.lang.Closure
import org.gradle.util.Configurable
enum class CacheImplementation(val optionName: String) {
HASH_MAP("hashMap"),
SPARSE_ARRAY("sparseArray"),
NONE("none")
}
open class AndroidExtensionsExtension : Configurable<AndroidExtensionsExtension> {
private lateinit var onEvaluatedHandler: (AndroidExtensionsExtension) -> Unit
@@ -28,6 +34,8 @@ open class AndroidExtensionsExtension : Configurable<AndroidExtensionsExtension>
open var isExperimental: Boolean = false
open var defaultCacheImplementation: CacheImplementation = CacheImplementation.HASH_MAP
override fun configure(closure: Closure<*>): AndroidExtensionsExtension {
// ConfigureUtil is not used here to prevent infinite recursion
closure.resolveStrategy = Closure.DELEGATE_FIRST
@@ -98,7 +98,8 @@ class AndroidSubplugin : KotlinGradleSubplugin<KotlinCompile> {
val androidExtensionsExtension = project.extensions.getByType(AndroidExtensionsExtension::class.java)
if (androidExtensionsExtension.isExperimental) {
return applyExperimental(androidExtension, project, variantData, androidProjectHandler)
return applyExperimental(androidExtension, androidExtensionsExtension,
project, variantData, androidProjectHandler)
}
val sourceSets = androidExtension.sourceSets
@@ -131,6 +132,7 @@ class AndroidSubplugin : KotlinGradleSubplugin<KotlinCompile> {
private fun applyExperimental(
androidExtension: BaseExtension,
androidExtensionsExtension: AndroidExtensionsExtension,
project: Project,
variantData: Any?,
androidProjectHandler: Any?
@@ -141,6 +143,7 @@ class AndroidSubplugin : KotlinGradleSubplugin<KotlinCompile> {
val pluginOptions = arrayListOf<SubpluginOption>()
pluginOptions += SubpluginOption("experimental", "true")
pluginOptions += SubpluginOption("defaultCacheImplementation", androidExtensionsExtension.defaultCacheImplementation.optionName)
val mainSourceSet = androidExtension.sourceSets.getByName("main")
pluginOptions += SubpluginOption("package", getApplicationPackage(project, mainSourceSet))