refactor: Support creating AndroidProjectHandler from outside the plugin
This commit is contained in:
+15
-15
@@ -598,22 +598,16 @@ internal open class KotlinAndroidPlugin(
|
|||||||
|
|
||||||
override fun apply(project: Project) {
|
override fun apply(project: Project) {
|
||||||
val androidTarget = KotlinAndroidTarget("", project)
|
val androidTarget = KotlinAndroidTarget("", project)
|
||||||
val tasksProvider = AndroidTasksProvider(androidTarget.targetName)
|
applyToTarget(kotlinPluginVersion, androidTarget)
|
||||||
|
|
||||||
applyToTarget(
|
|
||||||
project, androidTarget, tasksProvider,
|
|
||||||
kotlinPluginVersion
|
|
||||||
)
|
|
||||||
registry.register(KotlinModelBuilder(kotlinPluginVersion, androidTarget))
|
registry.register(KotlinModelBuilder(kotlinPluginVersion, androidTarget))
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun applyToTarget(
|
fun androidTargetHandler(
|
||||||
project: Project,
|
kotlinPluginVersion: String,
|
||||||
kotlinTarget: KotlinAndroidTarget,
|
androidTarget: KotlinAndroidTarget
|
||||||
tasksProvider: KotlinTasksProvider,
|
): AbstractAndroidProjectHandler<*> {
|
||||||
kotlinPluginVersion: String
|
val tasksProvider = AndroidTasksProvider(androidTarget.targetName)
|
||||||
) {
|
|
||||||
|
|
||||||
val version = loadAndroidPluginVersion()
|
val version = loadAndroidPluginVersion()
|
||||||
if (version != null) {
|
if (version != null) {
|
||||||
@@ -630,7 +624,7 @@ internal open class KotlinAndroidPlugin(
|
|||||||
|
|
||||||
val legacyVersionThreshold = "2.5.0"
|
val legacyVersionThreshold = "2.5.0"
|
||||||
|
|
||||||
val variantProcessor = if (compareVersionNumbers(version, legacyVersionThreshold) < 0) {
|
return if (compareVersionNumbers(version, legacyVersionThreshold) < 0) {
|
||||||
LegacyAndroidAndroidProjectHandler(kotlinTools)
|
LegacyAndroidAndroidProjectHandler(kotlinTools)
|
||||||
} else {
|
} else {
|
||||||
val android25ProjectHandlerClass = Class.forName("org.jetbrains.kotlin.gradle.plugin.Android25ProjectHandler")
|
val android25ProjectHandlerClass = Class.forName("org.jetbrains.kotlin.gradle.plugin.Android25ProjectHandler")
|
||||||
@@ -639,8 +633,13 @@ internal open class KotlinAndroidPlugin(
|
|||||||
}
|
}
|
||||||
ctor.newInstance(kotlinTools) as AbstractAndroidProjectHandler<*>
|
ctor.newInstance(kotlinTools) as AbstractAndroidProjectHandler<*>
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
variantProcessor.handleProject(project, kotlinTarget)
|
fun applyToTarget(
|
||||||
|
kotlinPluginVersion: String,
|
||||||
|
kotlinTarget: KotlinAndroidTarget
|
||||||
|
) {
|
||||||
|
androidTargetHandler(kotlinPluginVersion, kotlinTarget).configureTarget(kotlinTarget)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -682,7 +681,8 @@ abstract class AbstractAndroidProjectHandler<V>(private val kotlinConfigurationT
|
|||||||
|
|
||||||
protected abstract fun wrapVariantDataForKapt(variantData: V): KaptVariantData<V>
|
protected abstract fun wrapVariantDataForKapt(variantData: V): KaptVariantData<V>
|
||||||
|
|
||||||
fun handleProject(project: Project, kotlinAndroidTarget: KotlinAndroidTarget) {
|
fun configureTarget(kotlinAndroidTarget: KotlinAndroidTarget) {
|
||||||
|
val project = kotlinAndroidTarget.project
|
||||||
val ext = project.extensions.getByName("android") as BaseExtension
|
val ext = project.extensions.getByName("android") as BaseExtension
|
||||||
|
|
||||||
ext.sourceSets.all { sourceSet ->
|
ext.sourceSets.all { sourceSet ->
|
||||||
|
|||||||
+1
-6
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions
|
|||||||
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
import org.jetbrains.kotlin.gradle.dsl.kotlinExtension
|
||||||
import org.jetbrains.kotlin.gradle.plugin.*
|
import org.jetbrains.kotlin.gradle.plugin.*
|
||||||
import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinTask
|
import org.jetbrains.kotlin.gradle.plugin.sources.applyLanguageSettingsToKotlinTask
|
||||||
import org.jetbrains.kotlin.gradle.tasks.AndroidTasksProvider
|
|
||||||
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
import org.jetbrains.kotlin.gradle.tasks.KotlinTasksProvider
|
||||||
import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader
|
import org.jetbrains.kotlin.gradle.utils.NativeCompilerDownloader
|
||||||
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
import org.jetbrains.kotlin.gradle.utils.isGradleVersionAtLeast
|
||||||
@@ -185,11 +184,7 @@ class KotlinAndroidTargetPreset(
|
|||||||
preset = this@KotlinAndroidTargetPreset
|
preset = this@KotlinAndroidTargetPreset
|
||||||
}
|
}
|
||||||
|
|
||||||
KotlinAndroidPlugin.applyToTarget(
|
KotlinAndroidPlugin.applyToTarget(kotlinPluginVersion, result)
|
||||||
project, result, AndroidTasksProvider(name),
|
|
||||||
kotlinPluginVersion
|
|
||||||
)
|
|
||||||
|
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user