mirror of
https://github.com/BetterAndroid/FlexiLocale.git
synced 2025-09-04 02:05:15 +08:00
fix: android gradle plugin with kotlin android plugin missing sourceSets problem
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
|
@@ -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<AppExtension>().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<KotlinAndroidProjectExtension>().also { extension ->
|
||||
extension.updateSourceDirs()
|
||||
}
|
||||
}
|
||||
}.onFailure { FError.make("Failed to initialize Android Gradle plugin, this may be not or a wrong Android project\n$it") }
|
||||
}
|
||||
|
||||
|
@@ -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
|
Reference in New Issue
Block a user