前提:
最近(2019.04)处理了项目的Swift版本升级,痛苦的经历,写了一个小工具分享一些心得给大家,希望有所帮助。
公司项目是Swift3.2和Object-C混编,引用了很多三方库,三年以上迭代?
正文:
面临的问题:
- Swift4.2中需要在Object-C的API引用的Swift代码前添加@objc修饰(Xcode可以一处一处的自动添加)
- 系统API风格大改(Xcode可以提示修改,但部分API需要手动再调整)
- 三方库的API变动
刚开始我以为问题中的1、2点都可以通过Xcode处理并不麻烦,直到build一下报了2k+的报错,其中绝大部分都是两个问题的时候我就崩溃了。这手动改下去不是办法,所以必须思考想想怎么处理,毕竟还有其他好几个项目都需要这么升级。考虑到Xcode都能自动补齐,就打算写一个脚本替换。
考虑到时间有限和熟练度,就用了Object-C写了一个Command Line Tool?
抛砖引玉之用~!
使用方式:
一、环境说明
- Xcode10.0以及Xcode10.1
- 先确保项目能在 swift3.2 环境下正常运行
二、操作
- 下载https://github.com/smelloftime/AssistanceUploadSwiftVersionTool 项目至本地
- 对项目进行完整备份,对项目进行完整备份,对项目进行完整备份
- 配置均在
main.m
中 - 设置项目所在路径
manager.projectPath
例:manager.projectPath = @"/Users/smelltime/Desktop/TestDemo"
- 如果需要处理项目全部文件,就不用配置
enablePaths
以及excludePaths
比如:在Home
分组下有RankList
分组的代码不需要处理,那设置在excludePaths
中即可excludePaths = @[@"/Users/smelltime/Desktop/TestDemo/Home/RankList"]
- 可以补充Swift3.2版本中需要替换为新格式的API名称,在
targetWords
以及replaceWords
中追加即可 - 确定项目已经完整备份,且无其他软件正在编辑该项目
- 确认无误后直接运行
UploadSwift3-2To4-2
工程,等待输出完成咯
即表示已经完成运行 - log日志中以
error -
以及warring -
开头的Llog需要注意,方便排查
具体参见README.md以及源码
希望能够帮助到您,欢迎评论、PR、Star?