55package dev.icerock.gradle
66
77import com.android.build.api.dsl.AndroidSourceSet
8+ import com.android.build.api.dsl.KotlinMultiplatformAndroidCompilation
9+ import com.android.build.api.dsl.KotlinMultiplatformAndroidLibraryTarget
810import com.android.build.api.extension.impl.CurrentAndroidGradlePluginVersion
911import dev.icerock.gradle.extra.getOrRegisterGenerateResourcesTask
1012import dev.icerock.gradle.generator.platform.android.AGP_8_11_0
@@ -21,7 +23,6 @@ import dev.icerock.gradle.generator.platform.js.setupJsKLibResources
2123import dev.icerock.gradle.generator.platform.js.setupJsResourcesWithLinkTask
2224import dev.icerock.gradle.tasks.GenerateMultiplatformResourcesTask
2325import dev.icerock.gradle.utils.enableAndroidResources
24- import dev.icerock.gradle.utils.getPlatformType
2526import dev.icerock.gradle.utils.hasMinimalVersion
2627import dev.icerock.gradle.utils.kotlinSourceSetsObservable
2728import org.gradle.api.Plugin
@@ -35,12 +36,13 @@ import org.gradle.kotlin.dsl.withType
3536import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
3637import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
3738import org.jetbrains.kotlin.gradle.plugin.KotlinMultiplatformPluginWrapper
38- import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
3939import org.jetbrains.kotlin.gradle.plugin.KotlinSourceSet
4040import org.jetbrains.kotlin.gradle.plugin.KotlinTarget
4141import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinAndroidTarget
42+ import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinJvmAndroidCompilation
4243import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeTarget
4344import org.jetbrains.kotlin.gradle.targets.js.ir.KotlinJsIrTarget
45+ import org.jetbrains.kotlin.gradle.targets.jvm.KotlinJvmTarget
4446import org.jetbrains.kotlin.gradle.tasks.Kotlin2JsCompile
4547import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask
4648import org.jetbrains.kotlin.gradle.tasks.KotlinNativeCompile
@@ -109,13 +111,37 @@ open class MultiplatformResourcesPlugin : Plugin<Project> {
109111 setupJsResourcesWithLinkTask(target = target, project = project)
110112 }
111113
114+ if (target is KotlinMultiplatformAndroidLibraryTarget ) {
115+ target.compilations
116+ .withType(KotlinMultiplatformAndroidCompilation ::class )
117+ .configureEach { compilation ->
118+ compilation.kotlinSourceSetsObservable.forAll { sourceSet ->
119+ println (" DBG: sourceSets kmpat $sourceSet " )
120+ val genTaskProvider: TaskProvider <GenerateMultiplatformResourcesTask > =
121+ sourceSet.getOrRegisterGenerateResourcesTask(mrExtension)
122+ println (" DBG: compilations KotlinMultiplatformAndroidCompilation: ${target.platformType.name} " )
123+ genTaskProvider.configure {
124+ it.platformType.set(target.platformType.name)
125+ }
126+
127+ setupAndroidTasks(
128+ target = target,
129+ sourceSet = sourceSet,
130+ genTaskProvider = genTaskProvider,
131+ compilation = compilation
132+ )
133+ }
134+ }
135+
136+ }
137+
112138 target.compilations.configureEach { compilation ->
113139 compilation.kotlinSourceSetsObservable.forAll { sourceSet: KotlinSourceSet ->
114140 val genTaskProvider: TaskProvider <GenerateMultiplatformResourcesTask > =
115141 sourceSet.getOrRegisterGenerateResourcesTask(mrExtension)
116142
117143 genTaskProvider.configure {
118- it.platformType.set(target.getPlatformType() )
144+ it.platformType.set(target.platformType.name )
119145
120146 if (target is KotlinNativeTarget ) {
121147 it.konanTarget.set(target.konanTarget.name)
@@ -199,32 +225,28 @@ open class MultiplatformResourcesPlugin : Plugin<Project> {
199225 ) {
200226 sourceSet.kotlin.srcDir(genTaskProvider.map { it.outputSourcesDir })
201227
202- when (target.platformType ) {
203- KotlinPlatformType .jvm, KotlinPlatformType .js -> {
228+ when (target) {
229+ is KotlinJsIrTarget , is KotlinJvmTarget -> {
204230 sourceSet.resources.srcDir(genTaskProvider.map { it.outputResourcesDir })
205231 sourceSet.resources.srcDir(genTaskProvider.map { it.outputAssetsDir })
206232 }
207233
208- KotlinPlatformType .androidJvm -> {
209- if (target is KotlinAndroidTarget ) {
210- // Fix: android sourceSets indexation in IDE
211- // Usage of api of v2.model in AGP broken for IDE resources indexing
212- // For correct indexing of resources set resource directory
213- // https://issuetracker.google.com/issues/329702045
214- @OptIn(ExperimentalKotlinGradlePluginApi ::class )
215- val androidSourceSet: AndroidSourceSet =
216- target.project.getAndroidSourceSetOrNull(sourceSet) ? : return
217- androidSourceSet.res.srcDir(genTaskProvider.map { it.outputResourcesDir })
218-
219- // Assets added in variants for correct generation
220- // see: dev.icerock.gradle.generator.platform.android
221- // .SetupAndroidUtilsKt.addGenerationTaskDependency
222- // androidSourceSet.assets.srcDir(genTaskProvider.map { it.outputAssetsDir })
223- }
234+ is KotlinAndroidTarget -> {
235+ // Fix: android sourceSets indexation in IDE
236+ // Usage of api of v2.model in AGP broken for IDE resources indexing
237+ // For correct indexing of resources set resource directory
238+ // https://issuetracker.google.com/issues/329702045
239+ @OptIn(ExperimentalKotlinGradlePluginApi ::class )
240+ val androidSourceSet: AndroidSourceSet =
241+ target.project.getAndroidSourceSetOrNull(sourceSet) ? : return
242+ androidSourceSet.res.srcDir(genTaskProvider.map { it.outputResourcesDir })
243+
244+ // Assets added in variants for correct generation
245+ // see: dev.icerock.gradle.generator.platform.android
246+ // .SetupAndroidUtilsKt.addGenerationTaskDependency
247+ // androidSourceSet.assets.srcDir(genTaskProvider.map { it.outputAssetsDir })
224248 }
225-
226- KotlinPlatformType .common, KotlinPlatformType .native,
227- KotlinPlatformType .wasm -> Unit
249+ else -> Unit
228250 }
229251 }
230252}
0 commit comments