• 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

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

  • 相关阅读:
    mysql数据库(1)
    通过全局异常处理机制实现接口参数校验返回指定返回类型
    http接口安全校验
    java 锁机制介绍
    通过反射获取类的所有属性值拼接成字符串工具类
    Mybatis中出现java.sql.SQLException: 无效的列类型: 1111
    判断两个Long相等
    jwt工具类
    mybatis #{}和${}的区别是什么
    报错解决NoSuchMethod。。。
  • 原文地址:https://www.cnblogs.com/hero11223/p/16601033.html
Copyright © 2020-2023  润新知