Xcode 15 旧Objective-C项目模拟器运行失败但归档成功求助
解决方案
1. 排查AFNetworking库的架构与集成问题
- 先确认你用的AFNetworking库是否支持模拟器的x86_64架构,直接在终端执行以下命令查看:
如果输出里没有x86_64,说明该库仅支持真机,需要重新编译包含x86_64的版本,或者改用CocoaPods集成(自动适配多架构)。lipo -info /path/to/AFNetworking-library.a - 若你是直接将库拖入项目,去Build Phases > Link Binary With Libraries中检查AFNetworking库是否正确添加、路径是否有效,避免因路径失效导致找不到库。
2. 修正架构配置,弃用VALID_ARCHS
- 删除手动设置的
VALID_ARCHS,Xcode 12+后该配置已被弃用,改用EXCLUDED_ARCHS并区分构建环境:- 针对模拟器使用的Debug配置:搜索
EXCLUDED_ARCHS,展开后为Debug设置arm64;用于归档的Release配置保持默认空值即可。 - 主项目的Build Settings > Architectures需设置为
Standard Architectures (arm64, x86_64),不要手动指定单一架构。
- 针对模拟器使用的Debug配置:搜索
3. 解决执行路径与lipo报错
- 设置
EXCLUDED_ARCHS=arm64后出现"Executable Path is a Directory"错误,检查Build Settings > Packaging > Executable Path是否被错误修改,默认应为$(EXECUTABLE_NAME),不要手动设置为目录路径。 - 归档时的
lipo: no input files specified错误,通常是Release配置也排除了arm64,导致未生成有效可执行文件。确保Release的EXCLUDED_ARCHS为空,且库本身包含arm64架构(归档适配真机)。
4. 清理缓存后重新构建
- 按以下步骤彻底清理缓存:
- 关闭Xcode,删除项目目录下的
DerivedData文件夹(可通过Xcode菜单File > Project Settings找到路径)。 - 打开项目,按下
Cmd+Shift+K执行Clean Build Folder。 - 选择模拟器目标,重新执行构建。
- 关闭Xcode,删除项目目录下的
5. 同步子项目的架构配置
- 你集成的3个子项目/框架,需与主项目的架构配置保持一致:
- 打开子项目的Build Settings,确认
Architectures和EXCLUDED_ARCHS设置与主项目匹配。 - 检查子项目输出的库是否包含多架构,避免子项目仅编译真机架构导致模拟器链接失败。
- 打开子项目的Build Settings,确认
内容的提问来源于stack exchange,提问作者Karamjeet Singh
相关产品推荐
相关产品推荐

