From b64de0095c8de1a0de032152705adfee9edd3bb6 Mon Sep 17 00:00:00 2001 From: Konstantin Tskhovrebov Date: Thu, 30 May 2024 16:04:33 +0200 Subject: [PATCH 1/2] [gradle] Create an empty resource dir with "podspec" task instead "podInstall". --- .../main/kotlin/org/jetbrains/compose/resources/IosResources.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/IosResources.kt b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/IosResources.kt index bdb114d4ace..070bfe90b6b 100644 --- a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/IosResources.kt +++ b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/IosResources.kt @@ -84,7 +84,7 @@ internal fun Project.configureSyncIosComposeResources( val syncDir = podFramework.getFinalResourcesDir().get().asFile.relativeTo(projectDir) val specAttr = "['${syncDir.path}']" extraSpecAttributes["resources"] = specAttr - project.tasks.named("podInstall").configure { + project.tasks.named("podspec").configure { it.doFirst { if (extraSpecAttributes["resources"] != specAttr) error( """ From 9239c3b59006f86a900febad1fb9fa78b324dfcb Mon Sep 17 00:00:00 2001 From: Konstantin Tskhovrebov Date: Thu, 30 May 2024 18:29:39 +0200 Subject: [PATCH 2/2] [gradle] Fix podspec task configuration cache. --- .../org/jetbrains/compose/resources/IosResources.kt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/IosResources.kt b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/IosResources.kt index 070bfe90b6b..1a05e615e89 100644 --- a/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/IosResources.kt +++ b/gradle-plugins/compose/src/main/kotlin/org/jetbrains/compose/resources/IosResources.kt @@ -1,10 +1,13 @@ package org.jetbrains.compose.resources +import org.gradle.api.DefaultTask import org.gradle.api.Project import org.gradle.api.file.Directory import org.gradle.api.plugins.ExtensionAware +import org.gradle.api.provider.Property import org.gradle.api.provider.Provider import org.gradle.api.tasks.Copy +import org.gradle.api.tasks.TaskAction import org.jetbrains.compose.desktop.application.internal.ComposeProperties import org.jetbrains.compose.internal.utils.* import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension @@ -83,13 +86,16 @@ internal fun Project.configureSyncIosComposeResources( framework { podFramework -> val syncDir = podFramework.getFinalResourcesDir().get().asFile.relativeTo(projectDir) val specAttr = "['${syncDir.path}']" - extraSpecAttributes["resources"] = specAttr + val specAttributes = extraSpecAttributes + val buildFile = project.buildFile + val projectPath = project.path + specAttributes["resources"] = specAttr project.tasks.named("podspec").configure { it.doFirst { - if (extraSpecAttributes["resources"] != specAttr) error( + if (specAttributes["resources"] != specAttr) error( """ |Kotlin.cocoapods.extraSpecAttributes["resources"] is not compatible with Compose Multiplatform's resources management for iOS. - | * Recommended action: remove extraSpecAttributes["resources"] from '${project.buildFile}' and run '${project.path}:podInstall' once; + | * Recommended action: remove extraSpecAttributes["resources"] from '$buildFile' and run '$projectPath:podInstall' once; | * Alternative action: turn off Compose Multiplatform's resources management for iOS by adding '${ComposeProperties.SYNC_RESOURCES_PROPERTY}=false' to your gradle.properties; """.trimMargin() )