Xcode12.5打包Framework报错处理

Xcode12.5打包Framework报错处理,第1张

1. 概述

今天升级了Xcode到12.5.1,在编译现有项目时,又出现了引用Swift编译的Framework报出的Swift不兼容的问题,按照之前的经验,用最新版的Xcode再打包一次就行了,但是同事推荐了一个配置,可以避免后期Swift不兼容的问题,但是设置了这个配置,却引发了一系列的修改。

2. 项目配置及脚本修改 2.1. 修改Build Libraries for Distribution配置项

本次升级将Framework target下面的`Build Settings`->`Build Options`->`Build Libraries for Distribution`设置为Yes,已解决后期不兼容的问题(暂时这样设置,有待后期验证)。

2.2 修改项目Build System

因为将`Build Libraries for Distribution`设置为Yes了,所以项目菜单`File`下的`Project Settings`->`Build System`需要由`Legacy Build System`改成`New Build System(Default)`,否则打包会失败,出现下面的错误。

 2.3 修改通用脚本文件UniversalAggregate

我们的项目是通过一个UniversalAggregate脚本文件执行另外两个脚本文件,一个是iOS的XXXXKitAggregate_iOS,一个是tvOS的XXXXKitAggregate_tvOS。在UniversalAggregate脚本中,在两条指令后面分别加上:`-UseModernBuildSystem=NO`,设置为NO表示Build System采用`Legacy Build System`,设置为Yes采用`New Build System(Default)`。如下:

xcodebuild -target "XXXXKitAggregate_iOS" BUILD_DIR="${BUILD_DIR}" -UseModernBuildSystem=NO
xcodebuild -target "XXXXKitAggregate_tvOS" BUILD_DIR="${BUILD_DIR}" -UseModernBuildSystem=NO

加上`-UseModernBuildSystem=NO`可避免iOS和tvOS同时打包,而引起磁盘读写错误。
错误如下: 

--error: error: accessing build database "xxx/build/XCBuildData/build.db": disk I/O error

或者:

accessing build database "/Users/xxxx/Work/Git/NLDFramework/XXXToolKit/build/XCBuildData/build.db": database is locked Possibly there are two concurrent builds running in the same filesystem location.

2.4 修改打包脚本 (XXXXKitAggregate_iOS,XXXXKitAggregate_tvOS)

在`xcodebuild -target "xxxx"`命令之前添加`rm -rf ${BUILD_DIR}`,在`xcodebuild`命令中去掉`clean`,如下图:

每次build之前,将build文件目录删除,用于避免以下错误:

Could not delete `/Users/xxxx/Work/Git/NLDFramework/XXXMenuKit/build` because it was not created by the build system.

 

2.5 修改Jenkins项目中配置

 如果Framework是通过Jenkins打包,那么需要在Jenkins中对应项目配置下,找到build配置,将`Allow failing build results`勾选上,否则Jenkins打包最后会因为磁盘读写异常而失败,勾选上,即忽略异常,并将打包的Framework放到指定位置。

 未勾选,Jenkins最终输出结果如下:

勾选后,Jenkins最终输出结果如下: 

3. 结束语

本文主要记录了本人在通过Jenkins打包过程中遇到的错误与解决方法,如果有朋友们有遇到相同的问题,可供参考。修改这么多的配置和脚本内容,如果能够成功的解决Swift不兼容的问题,那还是值得的。最后还是期待后期的Framework都能打包成XCFramework。

在此感谢一下我的同事提供的帮助!

本篇文章出自Daniel_coder的博客_Daniel_Coder_CSDN博客的博客,如需转载,请标明出处。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/994279.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存