fix: android gradle plugin with kotlin android plugin missing sourceSets problem

This commit is contained in:
2023-10-13 19:50:11 +08:00
parent bba646ce62
commit ddd036b117
3 changed files with 16 additions and 0 deletions

View File

@@ -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)
}

View File

@@ -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") }
}

View File

@@ -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