2021-04-16Xcode dyld: Library not loaded: @rpath/xxx/xxx 错误解决

今天跑一个项目,Alamofire莫名报 Library not loaded: @rpath,另一个项目一模一样的podfile没事,最后看到下面这篇博客,按照以下方法:

1.有条件的话,清理非付费开发人员账号生成的证书与配置文件,改为付费人员对应的证书

2.打开Cocoa Pods的Podfile文件,注释掉use_frameworks!

3.在Podfile文件中添加一句use_modular_headers!

4.执行pod deintegrate+pod install重新配置一次第三方库

解决方法:直接注释掉Podfile文件中的use_frameworks!,再pod install 即可!

以上方法依旧没有解决,于是我把use_frameworks又放开,注释use_modular_headers,再次pod install,在我的iOS12系统上运行,竟然神奇的好了,阿弥陀佛,整了3天终于解决了,真棒!

在此感谢作者!

以下是转载

----------------------------------------------------------------------------------------------------------------------------------------

之前遇到了dyld: Library not loaded: @rpath/xxx/xxx这个问题虽然解决了(直接注释掉Podfile文件中的use_frameworks!即可),但是不知掉原因,后来在作者ic3w33kXcode真机调试中活久见的BUG——【code signature invalid for Framework】中找到了原因。

一:问题解决

依据关键词dyld: Library not loaded: @rpath/xx.framework/xx搜索,大部分的解答都认为是没有找到对应框架,需要嵌入操作(embed),然后进行过如下几种尝试:

cmd + shift + k清理工程

清空/Users/xx/Library/Developer/Xcode/DerivedData目录

general – embeded binaries 嵌入文件

在 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

How to run an iOS app that causes runtime error for frameworks “code signature invalid”

简单来说,新版Xcode和iOS系统,在当我们使用非付费开发人员账号时,都有概率对嵌入的动态库发生无效签名。而解决的方式有:

1.有条件的话,清理非付费开发人员账号生成的证书与配置文件,改为付费人员对应的证书

2.打开Cocoa Pods的Podfile文件,注释掉use_frameworks!

3.在Podfile文件中添加一句use_modular_headers!

4.执行pod deintegrate+pod install重新配置一次第三方库

解决方法:直接注释掉Podfile文件中的use_frameworks!,再pod install 即可!

二:上面的方法依然不能解决

按照上面的方法利用cocospods 使用静态库的方式添加三方时有时候依然无法解决问题,是因为有的三方库是以xx.framework 文件进行管理的,所以还需要对xx.framework文件进行处理,方法如下:

1.先将对应的三方库从Podfile文件中移出,然后直接将对应的xx.framework文件拖到代码中进行手动管理。

2.切换到Build Phases -> Link Binary With Libraries -> xx.framework 将Status设置为Optional即可

PS:最简单的方法时直接使用付费开发人员账号即可!

更优的方法:

可以查看我的这篇文章:Xcode Unable to install "xx" 解决办法以及解决方案:

将iPhone中所以自带的应用升级到最新版本,即可解决dyld: Library not loaded: @rpath/xxx/xxx相关问题。

作者:九凤泠鸢

链接:https://www.jianshu.com/p/7c951a39f335

来源:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(2021-04-16Xcode dyld: Library not loaded: @rpath/xxx/xxx 错误解决)