因为疫情的原因,春节至今只能在家用自己的非付费开发人员账号进行真机调试,从而发现这个问题,新建的简单项目一直无法进行真机调试,断断续续卡了我好几天。
关键词:
dyld: Library not loaded: @rpath/xx.framework/xx
和
code signature invalid for xx.framework
遇到错误的共同条件:
- 真机调试
- Xcode 11.3.1 + iOS 13.3.1
- 非付费开发人员账号和证书
- 使用Cocoa Pods引入过第三方framework
场景:
满足上述条件下,无论是老项目还是新建一个OC/Swift的空白项目,在模拟器上可以正常运行;但是当使用真机进行调试时,Xcode直接奔溃,控制台输出如上图
依据关键词dyld: Library not loaded: @rpath/xx.framework/xx
搜索,大部分的解答都认为是没有找到对应框架,需要嵌入操作(embed),然后进行过如下几种尝试:
cmd + shift + k清理工程
清空/Users/xx/Library/Developer/Xcode/DerivedData
目录
general – embeded binaries 嵌入文件(这一步由于Xcode11的更新,新的做法如下图)
在 Build Phases 里添加 Copy Files
修改mach-O Type中的Dynam Library为Static Library
在keychain中将使用的调试证书的信任改为“使用系统默认”
重装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
use_frameworks!
use_modular_headers!
pod deintegrate
+pod install
重新配置一次第三方库