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

iOS迁移至SPM后真机安装Apollo 1.0.6崩溃求助(Xcode14.1)

混合CocoaPods/SPM环境下Apollo 1.0.6真机崩溃问题排查方案

针对Xcode14.1中从CocoaPods迁移到SPM、升级Apollo后真机崩溃(模拟器正常),报错dyld[561]: Library not loaded: @rpath/ApolloAPI.framework/ApolloAPI的问题,给出以下排查和解决步骤:

1. 检查框架嵌入配置

  • 打开主Target和Target B的Build Phases > Embed Frameworks,确认ApolloAPI.framework已添加,且Embed选项设置为Embed & Sign。真机对框架嵌入的要求比模拟器严格,未正确嵌入会导致运行时找不到库。
  • 注意:SPM引入的框架默认是Do Not Embed,如果Target A通过SPM依赖ApolloAPI,需要确保依赖能传递到Target B和主Target,必要时手动调整嵌入规则。

2. 验证依赖传递与链接

  • 检查Target B的Build Phases > Link Binary With Libraries,确认ApolloAPI.framework已存在。由于Target B依赖Target A,理论上依赖会自动传递,但混合CocoaPods/SPM的场景下可能出现传递断层,手动添加可修复该问题。
  • 确认Target A的Build Settings > Framework Search Paths包含SPM依赖的正确路径,真机环境下的路径可能与模拟器不同,建议使用SPM自动生成的相对路径(如$(PROJECT_DIR)/../.swiftpm/xcode/package.xcworkspace/contents/Resources)。

3. 彻底清理缓存并重建

  • 执行以下操作清理所有可能的缓存:
    • 删除Xcode Derived Data:Xcode > Settings > Locations > Derived Data,点击箭头打开文件夹后删除全部内容
    • 清理项目构建缓存:按下Cmd+Shift+K清理项目,再按Cmd+Option+Shift+K清理构建文件夹
    • 重新同步CocoaPods依赖:终端执行pod deintegrate && pod install
    • 重启Xcode,重新构建并部署到真机

4. 确保Apollo版本完全一致

  • 检查Target A的SPM依赖中ApolloAPI的版本是否为1.0.6,同时确认Target B的Podfile中明确指定pod 'Apollo', '1.0.6'和pod 'ApolloTestSupport', '1.0.6'。版本不一致会导致符号不匹配或加载失败。

5. 调整SPM依赖的作用域

  • 在Xcode的Project > Package Dependencies中,点击ApolloAPI依赖,进入Target Membership设置页面,确认Target A、Target B和主Target都已勾选该依赖。混合环境下SPM依赖默认仅对引入它的Target可见,需要手动扩展作用域以覆盖CocoaPods管理的Target。

6. 排查真机签名配置

  • 确认主Target、Target A和Target B的Build Settings > Code Signing Identity及Provisioning Profile在真机配置下均正确。签名异常可能间接导致框架无法加载,即使报错信息未直接提及签名问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 11:55:39