Skip to content

Commit ddd036b

Browse files
committed
fix: android gradle plugin with kotlin android plugin missing sourceSets problem
1 parent bba646c commit ddd036b

File tree

3 files changed

+16
-0
lines changed

3 files changed

+16
-0
lines changed

flexilocal-gradle-plugin/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ kotlin {
2222

2323
dependencies {
2424
compileOnly(com.android.library.com.android.library.gradle.plugin)
25+
compileOnly(org.jetbrains.kotlin.kotlin.gradle.plugin)
2526
implementation(com.squareup.kotlinpoet)
2627
}
2728

flexilocal-gradle-plugin/src/main/kotlin/com/highcapable/flexilocale/plugin/helper/LocaleAnalysisHelper.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ import com.highcapable.flexilocale.utils.debug.FError
3737
import com.highcapable.flexilocale.utils.debug.FLog
3838
import com.highcapable.flexilocale.utils.factory.toFile
3939
import org.gradle.api.Project
40+
import org.jetbrains.kotlin.gradle.dsl.KotlinAndroidProjectExtension
41+
import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension
4042
import org.w3c.dom.Element
4143
import org.w3c.dom.Node
4244
import java.io.File
@@ -53,6 +55,9 @@ internal object LocaleAnalysisHelper {
5355
/** Android 的 Library 插件名称 */
5456
private const val LIBRARY_PLUGIN_NAME = "com.android.library"
5557

58+
/** Kotlin 的 Android 插件名称 */
59+
private const val KT_ANDROID_PLUGIN_NAME = "org.jetbrains.kotlin.android"
60+
5661
/** I18ns 代码生成实例 */
5762
private val generator = LocaleSourcesGenerator()
5863

@@ -126,13 +131,15 @@ internal object LocaleAnalysisHelper {
126131
private fun initializePlugins(project: Project) {
127132
runCatching {
128133
fun BaseExtension.updateSourceDirs() = sourceSets.configureEach { kotlin.srcDir(configs.generateDirPath) }
134+
fun KotlinProjectExtension.updateSourceDirs() = sourceSets.configureEach { kotlin.srcDir(configs.generateDirPath) }
129135
fun BaseVariant.updateResDirectories() = sourceSets.forEach { provide -> provide.resDirectories?.also { resDirectories.addAll(it) } }
130136
project.plugins.withId(APPLICATION_PLUGIN_NAME) {
131137
project.get<AppExtension>().also { extension ->
132138
namespace = extension.namespace ?: ""
133139
extension.applicationVariants.forEach { variant ->
134140
variant.updateResDirectories()
135141
}; extension.updateSourceDirs()
142+
extension.sourceSets.configureEach { kotlin.srcDir(configs.generateDirPath) }
136143
}
137144
}
138145
project.plugins.withId(LIBRARY_PLUGIN_NAME) {
@@ -143,6 +150,11 @@ internal object LocaleAnalysisHelper {
143150
}; extension.updateSourceDirs()
144151
}
145152
}
153+
project.plugins.withId(KT_ANDROID_PLUGIN_NAME) {
154+
project.get<KotlinAndroidProjectExtension>().also { extension ->
155+
extension.updateSourceDirs()
156+
}
157+
}
146158
}.onFailure { FError.make("Failed to initialize Android Gradle plugin, this may be not or a wrong Android project\n$it") }
147159
}
148160

gradle/sweet-dependency/sweet-dependency-config.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ libraries:
2020
com.android.library:
2121
com.android.library.gradle.plugin:
2222
version: 8.1.2
23+
org.jetbrains.kotlin:
24+
kotlin-gradle-plugin:
25+
version: 1.9.10
2326
com.squareup:
2427
kotlinpoet:
2528
version: 1.14.2

0 commit comments

Comments
 (0)