KMM: 如何将共享模块引用到已有的iOS工程中

7
我已经按照 KMM实战教程 中的步骤成功构建了一个使用 KMM 的示例应用程序!(耶!)现在,我正在尝试在生产应用程序中进行小型 POC。因此,我创建了一个新的 KMM 共享模块,并将其添加到 Android 项目中。对于 Android 部分,它可以正常工作,但我无法弄清楚如何将共享模块包含到 iOS 应用程序中。
根据 这个链接,应该在 gradle.properties 文件中引用 iOS 项目目录:
xcodeproj=~/iOSProjects/TestKMM

但是当我尝试导入共享模块时,Xcode会抱怨找不到这个模块:

enter image description here

所以我认为仅在gradle.properties中引用iOS项目是不够的。我肯定还缺少其他东西。
此外,我检查了共享模块的build目录,并且据我所知,没有生成iOS构件。(这与实践教程项目不同,在该项目中存在bin/iosX64/debugFragmework/shared.framework/ ....。)

enter image description here


1
你好,你成功解决了这个问题吗?如果你能分享一些关于它的文章或资源,我会非常感激。谢谢! - Foster
4个回答

6
所以我想,仅在gradle.properties中引用iOS项目是不够的。 正确。实际上,这个实践似乎没有描述你如何与Xcode集成。通常我们使用cocoapods来使这一切变得更简单,但在这个实践中,你需要从gradle命令行运行:shared:packForXCode来构建实际的框架(你也许可以从Android Studio运行它)。 这应该在你的构建目录中构建一个框架。查看实践中的Xcode项目。您将看到指向KMM框架的链接框架。在您的生产Xcode项目中,您需要添加它。在这个实践中,查找运行gradle的构建脚本。您需要将其移植到您的生产Xcode项目中(请参阅此处)。 要手动设置所有这些,您需要对Xcode配置有相当扎实的理解。
如果您的产品使用Cocoapods,我建议使用这种方式(并以KaMP Kit作为示例进行自我推广)。

1
您好,我想问一些问题。我一直在关注 Kotlin Multiplatform 的实验阶段,并且我们曾经使用 packForXcode 运行过。现在我在 M1 Mac 上构建模拟器时遇到了缺少 arm64 的问题。您有任何解决这个问题的想法吗?谢谢。 - Foster

4
  1. 打开你的终端
  2. 运行./gradlew tasks
  3. 查找名称类似于linkDebugFrameworkIos的任务
  4. 运行./gradlew linkDebugFrameworkIos

现在,你可以在通过Xcode打开的工作区中找到你的共享模块。


1
./gradlew linkDebugFrameworkIosArm64 在我的 MacAir 上帮了我很大的忙。 - asnov

2

0
我也遇到过这个问题。我通过将我的JDK从1.8更新到11来解决它。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接