前言
因为疫情的原因,春节至今只能在家用自己的非付费开发人员账号进行真机调试,从而发现这个问题,新建的简单项目一直无法进行真机调试,断断续续卡了我好几天。
关键词:
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,最终找到:
简单来说,新版Xcode和iOS系统,在当我们使用非付费开发人员账号时,都有概率对嵌入的动态库发生无效签名。而解决的方式有:
有条件的话,清理非付费开发人员账号生成的证书与配置文件,改为付费人员对应的证书
打开Cocoa Pods的Podfile文件,注释掉use_frameworks!
在Podfile文件中添加一句use_modular_headers!
执行pod deintegrate+pod install重新配置一次第三方库
关于找一找教程网
本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。
本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。
[Xcode真机调试中活久见的BUG——【code signature invalid for Framework】]http://www.zyiz.net/tech/detail-108254.html