还是那个老swift项目,编译一次得3分钟快哭了,不过还得擦干眼泪继续处理呀,这次的问题是一个老库Kingfisher的问题:
首先我们先来看一下具体的问题,如下图:
我的项目里面忘截图了,借用下萤火大佬的图,最下面会附上参考链接!!
我的项目目前是只能跑真机,X-code版本Version 13.4.1,项目构建是swift4.2,跑真机可以通过编译,但是一运行就崩溃,直接崩到上图的地方。
解决的初衷:在项目修改完成后,需要提交商店,但是在构建版本的时候,构建版本消失了,因为是客户的苹果账号,邮件没有及时查收到,还好之前遇到过这样的问题,所以判定大概率是UIWebView的问题,果然通过排查(有兴趣的小伙伴可以看看我的另一篇博客:在项目中查找UIWebView使用的地方),锁定了MJRefresh和Kingfisher这两个库,指定升级MJR,很顺利,也很轻松就解决了,但是Kingfisher这个库折腾了块4个小时,网速也很慢,快哭了都。
问题1:
Kingfisher这个库,适配的版本还不一样,如下图:
因为项目之前最低适配到ios9,后来我给改到了10,最高版本就只能装到6.3.1,反之就是12以上的版本,可以直接装到7。
安装解决方法:
1、Podfile文件里面版本号最好也改下,统一改到10
2、在x-code的build setting里面调下swift的版本,我是直接调到了swift5.0
3、调整x-code的ios版本,我最后调到了10,安装6.3.1成功,具体安装过程中的问题,也写了博客,有帮助的小伙伴可以去查找下
结果一运行就出现了上面的截图中的问题,经过查找,各种Google,百度,,,分析,锁定SwiftUI的问题,废话不多说,解决方法如下:
1、打开Podfile文件,命令如下:
vim Podfile
2、在platform :ios, "10.0"到use_frameworks!之间添加如下代码:
platform :ios, "10.0" use_modular_headers! inhibit_all_warnings! pre_install do |installer| remove_swiftui() end def remove_swiftui # 解决 xcode13 Release模式下SwiftUI报错问题 system("rm -rf ./Pods/Kingfisher/Sources/SwiftUI") code_file = "./Pods/Kingfisher/Sources/General/KFOptionsSetter.swift" code_text = File.read(code_file) code_text.gsub!(/#if canImport\(SwiftUI\) \&\& canImport\(Combine\)(.|\n)+#endif/,'') system("rm -rf " + code_file) aFile = File.new(code_file, 'w+') aFile.syswrite(code_text) aFile.close() end use_frameworks! target 'SwiftTest' do pod 'Kingfisher' end
3、执行如下命令:
pod install
最后重新编译,运行,成功!最后排查了项目里面使用UIWebView的地方已经没有了,终于解决完了!
参考大佬链接:https://www.jianshu.com/p/c906d4034203
Kingfisher链接:https://github.com/onevcat/Kingfisher
仅做记录,希望能帮到大家!