Xcode 13编译iOS模拟器报错:链接framework为iOS平台构建如何解决
Xcode 13 iOS模拟器架构冲突报错解决方案
以下为Xcode 13移除Validate Workspace功能后的可落地解决方法:
- 配置排除架构
打开项目主Target和Project级别对应的Build Settings,搜索Excluded Architectures,在Debug模式下为Any iOS Simulator SDK添加arm64值。如果使用CocoaPods管理依赖,需要在Podfile中添加如下配置避免执行pod install后配置被覆盖:
修改后执行post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64' end end endpod install重新生成Pod项目即可生效。 - 调整仅编译活跃架构配置
在Build Settings中搜索Build Active Architecture Only,Debug模式设置为Yes,Release模式设置为No,该配置在搭载Apple Silicon芯片的Mac上生效更明显。 - 调整Framework嵌入属性
检查项目Build Phases下的Embed Frameworks配置项,确认冲突Framework的嵌入属性:如果是静态Framework选择「Do Not Embed」,动态Framework选择「Embed & Sign」,错误的嵌入属性也会触发该架构报错。 - 生成XCFramework兼容多架构
如果冲突的Framework为自行维护的源码项目,可通过xcodebuild命令编译生成同时支持iOS设备、x86_64模拟器、arm64模拟器的XCFramework替换原有Framework,核心编译命令示例:# 编译iOS设备架构 xcodebuild build -project YourProject.xcodeproj -scheme YourScheme -sdk iphoneos BUILD_DIR=./build # 编译iOS模拟器架构 xcodebuild build -project YourProject.xcodeproj -scheme YourScheme -sdk iphonesimulator BUILD_DIR=./build # 合并为XCFramework xcodebuild -create-xcframework -framework ./build/Release-iphoneos/YourFramework.framework -framework ./build/Release-iphonesimulator/YourFramework.framework -output ./YourFramework.xcframework - Rosetta模式临时兼容
如果使用的是Apple Silicon芯片Mac,且第三方Framework暂无适配arm64模拟器的版本,可右键Finder中的Xcode,点击「显示简介」,勾选「使用Rosetta打开」,重启Xcode后编译运行即可临时规避该问题。
内容的提问来源于stack exchange,提问作者Anthony Demanuele
相关产品推荐
相关产品推荐

