diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/CocoapodsTasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/CocoapodsTasks.kt index 7ed9e4d4ce5..f3bb1017015 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/CocoapodsTasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/CocoapodsTasks.kt @@ -16,7 +16,7 @@ import java.io.File * The task generates a podspec file which allows a user to * integrate a Kotlin/Native framework into a Cocoapods project. */ -open class PodspecTask: DefaultTask() { +open class PodspecTask : DefaultTask() { @OutputFile val outputFile: File = project.projectDir.resolve("${project.name}.podspec") @@ -90,7 +90,7 @@ open class PodspecTask: DefaultTask() { * So we create a dummy static framework to allow Cocoapods install our pod correctly * and then replace it with the real one during a real build process. */ -open class DummyFrameworkTask: DefaultTask() { +open class DummyFrameworkTask : DefaultTask() { @OutputDirectory val destinationDir = project.cocoapodsBuildDirs.framework @@ -110,12 +110,31 @@ open class DummyFrameworkTask: DefaultTask() { } } + private fun copyTextResource(from: String, to: File, transform: (String) -> String = { it }) { + to.parentFile.mkdirs() + to.printWriter().use { file -> + javaClass.getResourceAsStream(from).reader().forEachLine { + file.println(transform(it)) + } + } + } + private fun copyFrameworkFile(relativeFrom: String, relativeTo: String = relativeFrom) = copyResource( "/cocoapods/dummy.framework/$relativeFrom", frameworkDir.resolve(relativeTo) ) + private fun copyFrameworkTextFile( + relativeFrom: String, + relativeTo: String = relativeFrom, + transform: (String) -> String = { it } + ) = copyTextResource( + "/cocoapods/dummy.framework/$relativeFrom", + frameworkDir.resolve(relativeTo), + transform + ) + @TaskAction fun create() { // Reset the destination directory @@ -127,8 +146,14 @@ open class DummyFrameworkTask: DefaultTask() { // Copy files for the dummy framework. copyFrameworkFile("Info.plist") copyFrameworkFile("dummy", frameworkName) - copyFrameworkFile("Modules/module.modulemap") copyFrameworkFile("Headers/dummy.h") + copyFrameworkTextFile("Modules/module.modulemap") { + if (it == "framework module dummy {") { + it.replace("dummy", frameworkName) + } else { + it + } + } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/resources/cocoapods/dummy.framework/Info.plist b/libraries/tools/kotlin-gradle-plugin/src/main/resources/cocoapods/dummy.framework/Info.plist index 8fcb3c949a9..bb3631678fa 100644 Binary files a/libraries/tools/kotlin-gradle-plugin/src/main/resources/cocoapods/dummy.framework/Info.plist and b/libraries/tools/kotlin-gradle-plugin/src/main/resources/cocoapods/dummy.framework/Info.plist differ diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/resources/cocoapods/dummy.framework/dummy b/libraries/tools/kotlin-gradle-plugin/src/main/resources/cocoapods/dummy.framework/dummy old mode 100755 new mode 100644 index 861837242d0..99a9edee748 Binary files a/libraries/tools/kotlin-gradle-plugin/src/main/resources/cocoapods/dummy.framework/dummy and b/libraries/tools/kotlin-gradle-plugin/src/main/resources/cocoapods/dummy.framework/dummy differ