Xcode 11.4 模拟器编译报错 Building for iOS Simulator was built for iOS

最近Xcode 升级到了Version 11.4 (11E146)版本。我也乘着工作间隙做了升级。


code11.4ss@2x.png

升级完成,选择模拟器编译,经过等待,没有意外,出现了报错。
Building for iOS Simulator, but the linked and embedded framework 'AipOcrSdk.framework' was built for iOS.
Building for iOS Simulator, but the linked and embedded framework 'AipBase.framework' was built for iOS.
Building for iOS Simulator, but the linked and embedded framework 'IdcardQuality.framework' was built for iOS.

errorinfo@2x.png

读一下内容,意思是引用的第三方库是 build for iOS 的,不是build for iOS Simulator,这些库还都是百度的AI识别的真机库。

查了下苹果论坛,看看是否有相应的解决方案,然后看到了这篇类似问题
https://forums.developer.apple.com/thread/130684

自己经过尝试解决问题,然后总结出有2种解决方案。

  • 1.修改当前工程的Workspaces Setting,可以将工程的Build System修改成Legacy Build System。编译可以编译成功。(一般修改到Legacy Build System到有其他问题,若有报错,可以查看Legacy Build System下报错,可以一步步解决)。


    legal@2x.png
  • 2.若使用New Build System的,可以去Build Settings中搜索EXCLUDED_SOURCE_FILE_NAMES,添加Debug模式下,用模拟器编译下忽略的文件。


    completess@2x.png
  • 3.工程中引用这些库的时候,也需要区分是不是模拟器区分引用。

#if !TARGET_IPHONE_SIMULATOR
#import <AipOcrSdk/AipOcrSdk.h>
#endif

猜测是Xcode 11.4 Debug模式下,对真机库的引用做了检查,我们在模拟器编译的时候,可以选择忽略这些文件,因为我们模拟器也不会真的使用这部分库的功能。

以上,可以正常用模拟器编译了。

推荐阅读更多精彩内容