android - 最新 KMM 中 Cocoapod 的 `./gradlew packForXcode` 替换是什么?

标签 android ios kotlin-multiplatform kotlin-multiplatform-mobile

我正在按照 https://kotlinlang.org/docs/mobile/integrate-in-existing-app.htm 中的 KMM 教程进行工作。当我到达步骤 ./gradlew packForXcode 时,它将失败并显示

* What went wrong:
Task 'packForXcode' not found in root project 'Simple Login'.

我怀疑原因是旧的 KMM 的 iOS 框架有 packForXcxodeenter image description here

但是,新版本现在使用 Cocoapod 来代替 enter image description here

KMM 与 Cocoapod 的等效 ./gradlew packForXcode 是什么

(仅供引用,我使用的 KMM 版本是 0.2.5(202-1.5.10-834-IJ)-3 插件)

最佳答案

packForXcode 已从最新的插件版本中删除,您可以使用以下代码段:

val packForXcode by tasks.creating(Sync::class) {
    group = "build"
    val mode = System.getenv("CONFIGURATION") ?: "DEBUG"
    val target = if(System.getenv("SDK_NAME").orEmpty().startsWith("macosx")) "macOS" else "ios"
    val framework =
        kotlin.targets.getByName<KotlinNativeTarget>(target).binaries.getFramework(mode)
    inputs.property("mode", mode)
    dependsOn(framework.linkTask)
    val targetDir = File(buildDir, "xcode-frameworks")
    from({ framework.outputDirectory })
    into(targetDir)
}

(您的项目可能需要一些调整)

关于android - 最新 KMM 中 Cocoapod 的 `./gradlew packForXcode` 替换是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67748942/

相关文章:

json - Kotlin 序列化 - 从字符串解码 JSON 数组

multithreading - 在 Kotlin Native 中,如何将对象保存在单独的线程中,并在不使用 C 指针的情况下从任何其他线程中改变其状态?

Kotlin 多平台注释处理

android - 实现后的 OnBackPressed 将我带回之前的 Activity

java - 如何在Android应用程序中发出HTTP请求

android - 没有使用名称 : default 注册的 com.badlogic.gdx.scenes.scene2d.ui.TextButton$TextButtonStyle

ios - 使用 .strings 文件的 NSLocationWhenInUseUsageDescription 本地化不起作用

ios - 如何从 Xcode 6 导出签名身份?

ios - 从 Parse 刷新和更新 NSMutableA rray 中的对象

java - 来自另一个 Activity android的按钮上的setText