使用Xcode 7.3.1与PromiseKit 3.5.0:模拟器可运行但无法归档求助
针对Xcode归档失败(模拟器可正常运行)的排查建议
嘿,我太懂你卡了一周的烦躁感——模拟器跑起来顺得不行,一到归档就掉链子,这种问题真的很磨人!结合你用的Xcode 7.3.1和PromiseKit 3.5.0,我整理了几个针对性的排查方向,你可以挨个试试:
先揪出具体错误日志
你提供的截图只显示了归档失败的提示,但没看到核心错误信息。去Xcode右上角点那个「报告导航器」(小铃铛图标),找到这次归档的任务,展开详情就能看到具体的编译/链接/签名错误——这是定位问题的关键,比如是不是PromiseKit的符号未定义,或者签名配置出了问题?检查PromiseKit的依赖配置
- 如果是用CocoaPods引入的,先执行
pod deintegrate彻底移除依赖,再重新pod install,有时候缓存的依赖文件会导致归档时编译异常; - 要是手动引入的PromiseKit,一定要确认所有源文件都被添加到**归档目标(Target)**中——模拟器运行可能只会加载部分必要文件,但归档需要全量编译,漏加文件直接会导致失败。
- 如果是用CocoaPods引入的,先执行
调整归档的编译设置
模拟器和归档的编译配置默认是不一样的,试试改这两个选项:- Optimization Level:模拟器一般是
None,但归档默认是Fastest, Smallest,PromiseKit 3.5.0作为较旧的版本,可能在优化编译下存在兼容性问题,临时把归档的优化级别改成None再试试; - Enable Bitcode:Xcode 7.3.1归档默认可能开启Bitcode,而PromiseKit 3.5.0大概率没提供Bitcode支持,把这个选项改成
NO再尝试归档。
- Optimization Level:模拟器一般是
核对签名与Provisioning Profile
模拟器运行不需要真机签名,但归档必须配置正确:- 确认用的是Distribution类型的Provisioning Profile,而不是开发用的;
- Bundle ID要和Profile里的完全一致;
- 检查证书是否有效、未过期。
清理Xcode缓存
有时候Xcode的缓存会搞出莫名其妙的问题,试试这几步:- 按
Cmd+Shift+K清理项目; - 前往
~/Library/Developer/Xcode/DerivedData,删除当前项目对应的缓存文件夹; - 重启Xcode后再尝试归档。
- 按
附上你遇到的归档失败界面:
内容的提问来源于stack exchange,提问作者Murat Yasar
相关产品推荐
相关产品推荐

