From ddd036b11777140e69368015f5c96eca420ef623 Mon Sep 17 00:00:00 2001 From: fankesyooni Date: Fri, 13 Oct 2023 19:50:11 +0800 Subject: [PATCH] fix: android gradle plugin with kotlin android plugin missing sourceSets problem --- flexilocal-gradle-plugin/build.gradle.kts | 1 + .../plugin/helper/LocaleAnalysisHelper.kt | 12 ++++++++++++ gradle/sweet-dependency/sweet-dependency-config.yaml | 3 +++ 3 files changed, 16 insertions(+) diff --git a/flexilocal-gradle-plugin/build.gradle.kts b/flexilocal-gradle-plugin/build.gradle.kts index 674db15..bc4bf73 100644 --- a/flexilocal-gradle-plugin/build.gradle.kts +++ b/flexilocal-gradle-plugin/build.gradle.kts @@ -22,6 +22,7 @@ kotlin { dependencies { compileOnly(com.android.library.com.android.library.gradle.plugin) + compileOnly(org.jetbrains.kotlin.kotlin.gradle.plugin) implementation(com.squareup.kotlinpoet) } diff --git a/flexilocal-gradle-plugin/src/main/kotlin/com/highcapable/flexilocale/plugin/helper/LocaleAnalysisHelper.kt b/flexilocal-gradle-plugin/src/main/kotlin/com/highcapable/flexilocale/plugin/helper/LocaleAnalysisHelper.kt index cee8f9f..60fc250 100644 --- a/flexilocal-gradle-plugin/src/main/kotlin/com/highcapable/flexilocale/plugin/helper/LocaleAnalysisHelper.kt +++ b/flexilocal-gradle-plugin/src/main/kotlin/com/highcapable/flexilocale/plugin/helper/LocaleAnalysisHelper.kt @@ -37,6 +37,8 @@ import com.highcapable.flexilocale.utils.debug.FError import com.highcapable.flexilocale.utils.debug.FLog import com.highcapable.flexilocale.utils.factory.toFile import org.gradle.api.Project +import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension +import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import org.w3c.dom.Element import org.w3c.dom.Node import java.io.File @@ -53,6 +55,9 @@ internal object LocaleAnalysisHelper { /** Android 的 Library 插件名称 */ private const val LIBRARY_PLUGIN_NAME = "com.android.library" + /** Kotlin 的 Android 插件名称 */ + private const val KT_ANDROID_PLUGIN_NAME = "org.jetbrains.kotlin.android" + /** I18ns 代码生成实例 */ private val generator = LocaleSourcesGenerator() @@ -126,6 +131,7 @@ internal object LocaleAnalysisHelper { private fun initializePlugins(project: Project) { runCatching { fun BaseExtension.updateSourceDirs() = sourceSets.configureEach { kotlin.srcDir(configs.generateDirPath) } + fun KotlinProjectExtension.updateSourceDirs() = sourceSets.configureEach { kotlin.srcDir(configs.generateDirPath) } fun BaseVariant.updateResDirectories() = sourceSets.forEach { provide -> provide.resDirectories?.also { resDirectories.addAll(it) } } project.plugins.withId(APPLICATION_PLUGIN_NAME) { project.get().also { extension -> @@ -133,6 +139,7 @@ internal object LocaleAnalysisHelper { extension.applicationVariants.forEach { variant -> variant.updateResDirectories() }; extension.updateSourceDirs() + extension.sourceSets.configureEach { kotlin.srcDir(configs.generateDirPath) } } } project.plugins.withId(LIBRARY_PLUGIN_NAME) { @@ -143,6 +150,11 @@ internal object LocaleAnalysisHelper { }; extension.updateSourceDirs() } } + project.plugins.withId(KT_ANDROID_PLUGIN_NAME) { + project.get().also { extension -> + extension.updateSourceDirs() + } + } }.onFailure { FError.make("Failed to initialize Android Gradle plugin, this may be not or a wrong Android project\n$it") } } diff --git a/gradle/sweet-dependency/sweet-dependency-config.yaml b/gradle/sweet-dependency/sweet-dependency-config.yaml index 7b38ab5..aed50a0 100644 --- a/gradle/sweet-dependency/sweet-dependency-config.yaml +++ b/gradle/sweet-dependency/sweet-dependency-config.yaml @@ -20,6 +20,9 @@ libraries: com.android.library: com.android.library.gradle.plugin: version: 8.1.2 + org.jetbrains.kotlin: + kotlin-gradle-plugin: + version: 1.9.10 com.squareup: kotlinpoet: version: 1.14.2 \ No newline at end of file