diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidExtensionsExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidExtensionsExtension.kt index 6bd92566d1a..b9a3585ca7d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidExtensionsExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidExtensionsExtension.kt @@ -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 { private lateinit var onEvaluatedHandler: (AndroidExtensionsExtension) -> Unit @@ -28,6 +34,8 @@ open class AndroidExtensionsExtension : Configurable 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 diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidSubplugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidSubplugin.kt index beba5d96b2b..e1a71089f76 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidSubplugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/internal/AndroidSubplugin.kt @@ -98,7 +98,8 @@ class AndroidSubplugin : KotlinGradleSubplugin { 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 { private fun applyExperimental( androidExtension: BaseExtension, + androidExtensionsExtension: AndroidExtensionsExtension, project: Project, variantData: Any?, androidProjectHandler: Any? @@ -141,6 +143,7 @@ class AndroidSubplugin : KotlinGradleSubplugin { val pluginOptions = arrayListOf() pluginOptions += SubpluginOption("experimental", "true") + pluginOptions += SubpluginOption("defaultCacheImplementation", androidExtensionsExtension.defaultCacheImplementation.optionName) val mainSourceSet = androidExtension.sourceSets.getByName("main") pluginOptions += SubpluginOption("package", getApplicationPackage(project, mainSourceSet))