ios开发之--解决Xcode13.0+版本,编译打包时Kingfisher报错

还是那个老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

 

仅做记录,希望能帮到大家!

 

posted @ 2022-08-19 09:56  稻草人11223  阅读(406)  评论(0编辑  收藏  举报
返回顶部