Xcode13 Kingfisher、RealmSwift庫(kù)導(dǎo)致SwiftUI錯(cuò)誤

問(wèn)題:Xcode13 Kingfisher、RealmSwift Release模式編譯報(bào)錯(cuò)

其中:Xcode13,Kingfisher,RealmSwift,Swift UI

Xcode 13 發(fā)行說(shuō)明中提到:

Swift 庫(kù)可能無(wú)法為使用 armv7 的 iOS 目標(biāo)構(gòu)建。(74120874) 解決方法:將包的平臺(tái)依賴性增加到 v12 或更高版本。 依賴于 Combine 的 Swift 庫(kù)可能無(wú)法為包括 armv7 和 i386 架構(gòu)在內(nèi)的目標(biāo)構(gòu)建。(82183186, 82189214) 解決方法:使用不受影響的庫(kù)的更新版本(如果可用)或刪除 armv7 和 i386 支持( 例如,將庫(kù)的部署目標(biāo)增加到 iOS 11 或更高版本)。

Kingfisher、RealmSwift 庫(kù)處于上述情況,如果項(xiàng)目中使用的是 Swift UI則需要將最低兼容版本改為iOS 12。由于個(gè)人項(xiàng)目需要兼容 iOS 10 并且項(xiàng)目中也沒(méi)有使用到 Swift UI,所以修改 pod file,在 pod install 時(shí)將Kingfisher、RealmSwift庫(kù)的 Swift UI 相關(guān)代碼刪除。

image.png

pre_install do |installer|
  remove_Kingfisher_swiftui()
  remove_RealmSwift_swiftui()
end

def remove_Kingfisher_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/,'')
  file = File.new(code_file, 'w+')
  file.syswrite(code_text)
  file.close()
end

def remove_RealmSwift_swiftui
  code_file = "./Pods/RealmSwift/RealmSwift/SwiftUI.swift"
  code_text = File.read(code_file)
  code_text.gsub!(/#if canImport\(SwiftUI\) \&\& canImport\(Combine\)(.|\n)+#else/,'')
  code_text = code_text.gsub(/#endif/,'')
  file = File.new(code_file, 'w+')
  file.syswrite(code_text)
  file.close()
end

在 Ruby 中 gsub 函數(shù)用于替換字符,示例用法如下:

'abc'.gsub(/a/,d) => 'dbc'
'abc'.gsub!(/a/,d) => 'dbc'
'abc'.gsub(/d/,e) => 'abc'
'abc'.gsub!(/d/,e) => nil

若有其他第三方庫(kù)遇到這種情況,可以嘗試根據(jù)上面的示例編寫對(duì)應(yīng)函數(shù),刪除 Swift UI 代碼。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容