Xcode真機調試中活久見的BUG——【code signature invalid for Framework】

前言

由於疫情的緣由,春節至今只能在家用本身的非付費開發人員帳號進行真機調試,從而發現這個問題,新建的簡單項目一直沒法進行真機調試,斷斷續續卡了我好幾天。 android

關鍵詞:ios

dyld: Library not loaded: @rpath/xx.framework/xxcode signature invalid for xx.frameworkgit

遇到錯誤的共同條件:github

  • 真機調試
  • Xcode 11.3.1 + iOS 13.3.1
  • 非付費開發人員帳號和證書
  • 使用Cocoa Pods引入過第三方framework

場景:app

知足上述條件下,不管是老項目仍是新建一個OC/Swift的空白項目,在模擬器上能夠正常運行;可是當使用真機進行調試時,Xcode直接奔潰,控制檯輸出如上圖框架

解決

依據關鍵詞dyld: Library not loaded: @rpath/xx.framework/xx搜索,大部分的解答都認爲是沒有找到對應框架,須要嵌入操做(embed),而後進行過以下幾種嘗試:ui

  1. cmd + shift + k清理工程調試

  2. 清空/Users/xx/Library/Developer/Xcode/DerivedData目錄code

  3. general – embeded binaries 嵌入文件(這一步因爲Xcode11的更新,新的作法以下圖) cdn

  4. 在 Build Phases 裏添加 Copy Files

  5. 修改mach-O Type中的Dynam Library爲Static Library

  6. 在keychain中將使用的調試證書的信任改成「使用系統默認」

  7. 重裝rvm、Cocoa Pods、Xcode

但以上全部的方式皆未解決問題,因而改變思路爲搜索code signature invalid for xx.framework,終於在蘋果開發者論壇找到相關提問,並一路連接到GitHub上幾個開源框架的issues(flutter和Alamofire無端中招😂)和Stack Overflow,最終找到:

code signature invalid for Framework

Running iOS apps causes runtime error for frameworks 「code signature invalid」

App crashes on iPhone but works fine with android emulator, android device and iOS simulator

簡單來講,新版Xcode和iOS系統,在當咱們使用非付費開發人員帳號時,都有機率對嵌入的動態庫發生無效簽名。而解決的方式有:

  • 有條件的話,清理非付費開發人員帳號生成的證書與配置文件,改成付費人員對應的證書
  • 打開Cocoa Pods的Podfile文件,註釋掉use_frameworks!
  • 在Podfile文件中添加一句use_modular_headers!
  • 執行pod deintegrate+pod install從新配置一次第三方庫
相關文章
相關標籤/搜索