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从新配置一次第三方库
相关文章
相关标签/搜索