You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

KMP项目引入iOS库后通过SPM集成到Xcode运行崩溃求助

问题解决:KMP项目通过SPM导入后第三方库运行时加载失败

你在KMP项目中用原生CocoaPods Gradle插件引入纯iOS库(如FirebaseCrashlytics),shared模块的iosMain能正常使用,但通过multiplatform-swiftpackage构建共享framework并导入Xcode后,应用可构建但运行时崩溃,提示第三方库未加载。以下是遗漏的关键配置和解决步骤:


1. 让CocoaPods依赖嵌入到生成的Framework中

默认情况下,multiplatform-swiftpackage生成的SPM包不会自动包含CocoaPods依赖。需在CocoaPods配置中添加embed属性,强制将第三方库嵌入到最终输出的framework里:

cocoapods {
   ...
   pod("FirebaseCrashlytics") {
       version = "11.6.0"
       extraOpts = listOf("-compiler-option", "-fmodules")
       embed = true // 关键配置:将该Pod嵌入到生成的framework中
   }
}

2. 配置multiplatform-swiftpackage传递CocoaPods依赖

需要让生成的SPM包明确声明对CocoaPods依赖的依赖关系,在multiplatformSwiftPackage配置中添加podDependencies块:

multiplatformSwiftPackage {
    swiftToolsVersion("5.9")
    distributionMode { local() }
    buildConfiguration { debug() }
    outputDirectory(File(rootProject.projectDir, "swiftpackage"))
    targetPlatforms {
        iOS { v("16") }
    }
    // 传递CocoaPods依赖到SPM包
    podDependencies {
        pod("FirebaseCrashlytics", "11.6.0")
    }
}

3. 在Xcode中确认依赖的嵌入状态

导入SPM包后,进入Xcode项目设置:

  • 选中你的iOS应用目标,切换到Frameworks, Libraries, and Embedded Content选项卡
  • 找到FirebaseCrashlytics.framework,将其嵌入方式从Do Not Embed改为Embed & Sign

4. 清理缓存并重新构建

  • 执行Gradle清理命令:./gradlew clean
  • 重新生成SPM包:./gradlew createSwiftPackage
  • 在Xcode中清理项目:按Cmd+Shift+K清理,再按Cmd+Option+Shift+K清理构建文件夹,最后重新运行应用

内容的提问来源于stack exchange,提问作者Freesko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 17:20:58