diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt index 9c8f6120eed..3682b4629fc 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/native/CocoaPodsIT.kt @@ -64,6 +64,7 @@ class CocoaPodsIT : BaseGradleIT() { private val defaultPodRepo = "https://github.com/AFNetworking/AFNetworking" private val defaultPodName = "AFNetworking" + private val defaultLibraryPodName = "YandexMapKit" private val downloadUrlPodName = "podspecWithFilesExample" private val downloadUrlRepoName = "https://github.com/alozhkin/podspecWithFilesExample/raw/master" private val defaultTarget = "IOS" @@ -729,6 +730,15 @@ class CocoaPodsIT : BaseGradleIT() { } } + @Test + fun testUseLibrariesMode() { + with(project) { + gradleBuildScript().appendToCocoapodsBlock("useLibraries()") + gradleBuildScript().addPod(defaultLibraryPodName) + testImport() + } + } + // paths private fun CompiledProject.url() = externalSources().resolve("url") diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt index 26cc026f4d7..00639d9740d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/CocoapodsExtension.kt @@ -45,6 +45,16 @@ open class CocoapodsExtension(private val project: Project) { needPodspec = false } + /** + * Setup cocoapods-generate to produce xcodeproj compatible with static libraries + */ + fun useLibraries() { + useLibraries = true + } + + @get:Input + internal var useLibraries: Boolean = false + /** * Configure license of the pod built from this project. */ diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt index 5f16b71783b..4cfe5839173 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/cocoapods/KotlinCocoapodsPlugin.kt @@ -407,6 +407,7 @@ open class KotlinCocoapodsPlugin : Plugin { project.tasks.register(family.toPodGenTaskName, PodGenTask::class.java) { it.description = "Сreates a synthetic Xcode project to retrieve CocoaPods dependencies" it.podspec = podspecTaskProvider.map { task -> task.outputFileProvider.get() } + it.useLibraries = project.provider { cocoapodsExtension.useLibraries } it.specRepos = project.provider { cocoapodsExtension.specRepos } it.family = family it.pods.set(cocoapodsExtension.pods) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt index 5f9c75392de..b86fcd5385f 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/native/tasks/AdvancedCocoapodsTasks.kt @@ -352,6 +352,9 @@ open class PodGenTask : DefaultTask() { @get:InputFile internal lateinit var podspec: Provider + @get:Input + internal lateinit var useLibraries: Provider + @get:Internal lateinit var family: Family @@ -379,6 +382,7 @@ open class PodGenTask : DefaultTask() { val podGenProcessArgs = listOfNotNull( "pod", "gen", + "--use-libraries".takeIf { useLibraries.get() }, "--platforms=${family.platformLiteral}", "--gen-directory=${syntheticDir.absolutePath}", localPodspecPaths.takeIf { it.isNotEmpty() }?.joinToString(separator = ",")?.let { "--local-sources=$it" },