最近Xcode 升級到了Version 11.4 (11E146)版本。我也乘著工作間隙做了升級。
升級完成,選擇模擬器編譯,經過等待,沒有意外,出現了報錯。
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.
讀一下內容,意思是引用的第三方庫是 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模式下,對真機庫的引用做了檢查,我們在模擬器編譯的時候,可以選擇忽略這些文件,因為我們模擬器也不會真的使用這部分庫的功能。
以上,可以正常用模擬器編譯了。