Xcode 9.2无法生成armv7/armv7s架构构建产物求助
为什么Xcode 9.2无法生成armv7/armv7s架构的通用框架?
这事儿我之前踩过坑,核心原因其实是Xcode 9及后续版本默认已经放弃了对armv7和armv7s架构的支持——苹果早在几年前就把搭载这些架构的设备(比如iPhone 5及更早机型)列为过时设备,所以新的Xcode版本默认不会为它们编译产物。不过如果你确实需要兼容这些旧设备,可以按下面的步骤手动恢复支持:
1. 手动添加目标架构到项目设置
打开你的Framework项目的Build Settings面板:
- 找到
Architectures选项,点击下拉菜单选择Other - 在弹出的输入框里,手动添加
armv7和armv7s两个架构 - 再找到
Valid Architectures,同样确保这两个架构被包含在内(如果这个选项没显示,可以在Build Settings的搜索框里输入关键词调出)
2. 调整项目部署目标
Xcode会根据你的Deployment Target自动过滤不兼容的架构:
- 如果你的部署目标设为iOS 11.0或更高,Xcode会直接跳过armv7/armv7s(因为这些设备最高只能升级到iOS 10.3.3)
- 把
Deployment Target降到iOS 9.0或更低,这样Xcode才会认为有必要编译这两个旧架构
3. 检查CocoaPods的配置干扰
如果你用了CocoaPods,有些第三方库或者Podfile的配置可能会自动移除旧架构:
- 打开你的Podfile,检查是否有
post_install钩子脚本里包含了过滤armv7/armv7s的代码,如果有,把这部分逻辑删掉 - 执行
pod install重新生成xcworkspace,再回到Build Settings里确认架构配置没有被覆盖
4. 验证最终编译结果
编译完成后,打开终端用命令验证架构是否成功生成:
lipo -info /path/to/your/FrameworkName.framework/FrameworkName
如果输出里包含armv7和armv7s,就说明配置生效了。
最后提一句:现在苹果已经不再接受仅支持armv7/armv7s的应用提交到App Store,所以这个操作只适合内部兼容旧设备的场景哦。
内容的提问来源于stack exchange,提问作者Crystal
相关产品推荐
相关产品推荐

