mirror of
https://github.com/BetterAndroid/FlexiLocale.git
synced 2025-09-05 18:55:17 +08:00
fix: android gradle plugin with kotlin android plugin missing sourceSets problem
This commit is contained in:
@@ -22,6 +22,7 @@ kotlin {
|
|||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly(com.android.library.com.android.library.gradle.plugin)
|
compileOnly(com.android.library.com.android.library.gradle.plugin)
|
||||||
|
compileOnly(org.jetbrains.kotlin.kotlin.gradle.plugin)
|
||||||
implementation(com.squareup.kotlinpoet)
|
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.debug.FLog
|
||||||
import com.highcapable.flexilocale.utils.factory.toFile
|
import com.highcapable.flexilocale.utils.factory.toFile
|
||||||
import org.gradle.api.Project
|
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.Element
|
||||||
import org.w3c.dom.Node
|
import org.w3c.dom.Node
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -53,6 +55,9 @@ internal object LocaleAnalysisHelper {
|
|||||||
/** Android 的 Library 插件名称 */
|
/** Android 的 Library 插件名称 */
|
||||||
private const val LIBRARY_PLUGIN_NAME = "com.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 代码生成实例 */
|
/** I18ns 代码生成实例 */
|
||||||
private val generator = LocaleSourcesGenerator()
|
private val generator = LocaleSourcesGenerator()
|
||||||
|
|
||||||
@@ -126,6 +131,7 @@ internal object LocaleAnalysisHelper {
|
|||||||
private fun initializePlugins(project: Project) {
|
private fun initializePlugins(project: Project) {
|
||||||
runCatching {
|
runCatching {
|
||||||
fun BaseExtension.updateSourceDirs() = sourceSets.configureEach { kotlin.srcDir(configs.generateDirPath) }
|
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) } }
|
fun BaseVariant.updateResDirectories() = sourceSets.forEach { provide -> provide.resDirectories?.also { resDirectories.addAll(it) } }
|
||||||
project.plugins.withId(APPLICATION_PLUGIN_NAME) {
|
project.plugins.withId(APPLICATION_PLUGIN_NAME) {
|
||||||
project.get<AppExtension>().also { extension ->
|
project.get<AppExtension>().also { extension ->
|
||||||
@@ -133,6 +139,7 @@ internal object LocaleAnalysisHelper {
|
|||||||
extension.applicationVariants.forEach { variant ->
|
extension.applicationVariants.forEach { variant ->
|
||||||
variant.updateResDirectories()
|
variant.updateResDirectories()
|
||||||
}; extension.updateSourceDirs()
|
}; extension.updateSourceDirs()
|
||||||
|
extension.sourceSets.configureEach { kotlin.srcDir(configs.generateDirPath) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
project.plugins.withId(LIBRARY_PLUGIN_NAME) {
|
project.plugins.withId(LIBRARY_PLUGIN_NAME) {
|
||||||
@@ -143,6 +150,11 @@ internal object LocaleAnalysisHelper {
|
|||||||
}; extension.updateSourceDirs()
|
}; 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") }
|
}.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:
|
||||||
com.android.library.gradle.plugin:
|
com.android.library.gradle.plugin:
|
||||||
version: 8.1.2
|
version: 8.1.2
|
||||||
|
org.jetbrains.kotlin:
|
||||||
|
kotlin-gradle-plugin:
|
||||||
|
version: 1.9.10
|
||||||
com.squareup:
|
com.squareup:
|
||||||
kotlinpoet:
|
kotlinpoet:
|
||||||
version: 1.14.2
|
version: 1.14.2
|
Reference in New Issue
Block a user