升级XCode12.3报错 Building for , but the linked and embedded framework was built for iOS + iOS Simulator

2021-09-24 11:06:28 浏览数 (1)

一、报错

  • 报错内容大致如下

/xxxx/xxx.xcodeproj Building for iOS, but the linked and embedded framework ‘xxx.framework’ was built for iOS iOS Simulator. 诸如此类,可能有些许不同

二、原因

  • WWDC 2019 推出 XCFramework 启,其实 XCode 11 开始就会有这个问题,但在 XCode 11 上一直是 warning 也就没太注意
  • XCode12.3 开始,针对类似于 iOS iOS Simulator 这种多平台的包,强制使用 XCFramework 架构,否则 error( 好坑啊 )

三、解决

  • 这里提供三套方案,前两套比较简单,修改主项目配置即可;第三套是 Apple建议的方法,也就是重新打包 frameworkXCFramework
3.1 Validate WorkSpace
  • 启用 Validate WorkSpace ,让 XCodeframeworks 进行自动化管理
  • 打开项目路径 - Build Setting > Build Options > Validate WorkSpace
  • Validate WorkSpace 设置为 true

不建议使用,只能做暂时方案,万一哪天 Apple 不开心又把 Validate WorkSpace 逻辑改了呢?

3.2 Build System
  • 修改编译系统为以前的系统
  • 打开 Files > WorkSpace Setting > Build System
  • 设置 Build System 如下

不建议使用,总不能一直使用以前的构建系统吧?以后 WWDC 推出新功能了,还是得用新系统,旁边苹果的 Deprecated 注释也说明了这点

3.3 Apple 建议方案
  • Apple 官方对这个错误做了回复:
  • 总结成一句话: 使用 XCFramework
  • 这里是回答中生成 XCFramework 的教程
  • 这里是回答中生成 XCFramework 的帮助文档

四、总结

  • Apple 之强势令人叹为观止
  • 我在 GitHub 新建了一个仓库,正在为大家整理 iOS 学习笔记,欢迎大家 star 支持:https://github.com/Knowledge-Precipitation-Tribe/ios_notes
  • 如果方法有效请为我点赞,因为这是我持续输出的最大动力
  • 感谢大家的三连 关注支持,我们下期再见~

0 人点赞