@@ -20,6 +20,7 @@ import org.gradle.api.tasks.InputFiles
2020import org.gradle.api.tasks.Optional
2121import org.gradle.api.tasks.OutputDirectory
2222import org.gradle.api.tasks.TaskAction
23+ import org.jetbrains.compose.internal.Version
2324import org.jetbrains.compose.internal.utils.registerTask
2425import org.jetbrains.compose.internal.utils.uppercaseFirstChar
2526import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension
@@ -90,30 +91,61 @@ private fun Project.getAndroidComponentComposeResources(
9091 }
9192})
9293
94+ private const val AGP_8_10 = " 8.10"
95+
9396@Suppress(" UnstableApiUsage" )
9497private fun Project.configureAndroidComposeResources (
9598 kotlinExtension : KotlinMultiplatformExtension ,
9699 androidComponents : KotlinMultiplatformAndroidComponentsExtension ,
97100 moduleResourceDir : Provider <File >?
98101) {
99- logger.info(" Configure compose resources with KotlinMultiplatformAndroidComponentsExtension" )
100- androidComponents.onVariant { variant ->
101- val variantAssets = getAndroidKmpComponentComposeResources(kotlinExtension, variant.name)
102- configureGeneratedAndroidComponentAssets(
103- variant.name,
104- variant.sources,
105- variantAssets,
106- moduleResourceDir
107- )
108102
109- variant.androidTest?.let { androidTest ->
110- val androidTestAssets = getAndroidKmpComponentComposeResources(kotlinExtension, androidTest.name)
103+ // AGP 8.10 introduced new onVariantS {} API
104+ // AGP 9.0.0-alpha01 removed onVariant {} API
105+ // https://github.com/JetBrains/compose-multiplatform/pull/5385
106+
107+ val agpVersion = Version .fromString(androidComponents.pluginVersion.version)
108+ if (agpVersion >= Version .fromString(AGP_8_10 )) {
109+ logger.info(" Configure compose resources with KotlinMultiplatformAndroidComponentsExtension" )
110+ androidComponents.onVariants { variant ->
111+ val variantAssets = getAndroidKmpComponentComposeResources(kotlinExtension, variant.name)
112+ configureGeneratedAndroidComponentAssets(
113+ variant.name,
114+ variant.sources,
115+ variantAssets,
116+ moduleResourceDir
117+ )
118+
119+ variant.androidTest?.let { androidTest ->
120+ val androidTestAssets = getAndroidKmpComponentComposeResources(kotlinExtension, androidTest.name)
121+ configureGeneratedAndroidComponentAssets(
122+ androidTest.name,
123+ androidTest.sources,
124+ androidTestAssets,
125+ moduleResourceDir
126+ )
127+ }
128+ }
129+ } else {
130+ logger.info(" Configure compose resources with outdated KotlinMultiplatformAndroidComponentsExtension < 8.10" )
131+ androidComponents.onVariant { variant ->
132+ val variantAssets = getAndroidKmpComponentComposeResources(kotlinExtension, variant.name)
111133 configureGeneratedAndroidComponentAssets(
112- androidTest .name,
113- androidTest .sources,
114- androidTestAssets ,
134+ variant .name,
135+ variant .sources,
136+ variantAssets ,
115137 moduleResourceDir
116138 )
139+
140+ variant.androidTest?.let { androidTest ->
141+ val androidTestAssets = getAndroidKmpComponentComposeResources(kotlinExtension, androidTest.name)
142+ configureGeneratedAndroidComponentAssets(
143+ androidTest.name,
144+ androidTest.sources,
145+ androidTestAssets,
146+ moduleResourceDir
147+ )
148+ }
117149 }
118150 }
119151}
0 commit comments