xcarchive转ipa时保留外部框架符号解决bitcode重建符号未定义问题
xcarchive转IPA保留外部框架符号方案
问题根因
Xcode默认执行xcarchive导出IPA流程时,会自动对动态库执行符号剥离操作,仅保留运行时必需的符号,bitcode重编译依赖的外部符号、调试符号会被移除,同时动态库体积会明显缩小,这就是你使用IPA内的Frameworks重建bitcode时抛出arm64架构符号未定义错误的核心原因。
可用解决方案
方案1:修改IPA导出配置
使用xcodebuild命令导出IPA时,通过自定义exportOptions.plist关闭符号剥离和App细化功能,关键配置如下:
stripDebugSymbols stripSwiftSymbols thinning uploadBitcode
完整导出命令参考:xcodebuild -exportArchive -archivePath 你的项目.xcarchive -exportPath ./IPA输出目录 -exportOptionsPlist 你的exportOptions.plist路径
如果使用Xcode图形界面导出,在导出向导页做如下设置:
- App Thinning选项选择
None - 取消勾选
Strip Swift symbols - 取消勾选
Strip debug symbols during copy
方案2:修改工程编译配置
在应用主Target和所有依赖的外部框架Target的Build Settings中修改以下配置,编译生成xcarchive时就保留完整符号:
Strip Debug Symbols During Copy设为NOStrip Linked Product设为NODeployment Postprocessing设为NO
复现苹果bitcode重建逻辑注意事项
苹果后台处理开发者提交的带bitcode的安装包时,使用的是提交包中携带的完整bitcode数据和全量符号表,而非用户从App Store下载的经过裁剪的IPA二进制。如果你的重建流程卡在xcarchive阶段,可优先直接使用xcarchive内的Frameworks文件夹执行重建,无需额外导出IPA。
内容的提问来源于stack exchange,提问作者localacct
相关产品推荐
相关产品推荐

