IOS 真机 dyld: Library not loaded 错误Crash

刚刚开始看IOS,编译一个现存项目,模拟器OK,真机 archive打包 crash.搜索了众多解决方案,百度上的太坑了,找不到适合我的,像说什么把 Targets -> Build Phases ->Link Binary With Libraries 中相应.framework 的status 改为 Optional的,我对IOS不熟都觉得不对,这样虽然可以运行,但是你用到lib方法时是找不到lib的,肯定不能这样解决。

先是参考 iOS崩溃捕捉和分析 这篇文章通过xcode : Window ->Devices and Simulators -> Devices 连接真机查看crash文件,

Termination Description: DYLD, Library not loaded: @rpath/xxxxxxxx.framework/xxxxxxxx | Referenced from: /var/containers/Bundle/Application/5C7D2BEE-AC49-45C0-87F0-5728D77B4812/aaaaa.app/aaaaa | Reason: no suitable image found.  Did find: | /private/var/containers/Bundle/Application/5C7D2BEE-AC49-45C0-87F0-5728D77B4812/aaaaa.app/Frameworks/xxxxxxx.framework/xxxxxxx: code signing blocked mmap() of '/private/var/containers/Bundle/Application/5C7D2BEE-AC49-45C0-87F0-5728D77B4812/aaaaa.app/Frameworks/xxxxxxxxxx.framework/xxxxxxxxx'

我遇到的问题的解决方案是,将keychain 中证书的完全信任修改为 系统默认.
我的应该是一个比较小众的问题。
也就是这个答案帮助了我 https://stackoverflow.com/a/30252254

当然,出现这个问题的原因应该是很多的,虽然我没有遇到,但是稍微总结写别人给出的解决方案:
1 Clean .(有些情况clean一下就解决了。https://stackoverflow.com/a/34542847)
2 Targets ->Build Settings ->Build Options ->Embedded Content Contains Swift Code(我的最新版XCode是Always Embed Swifte Standard Libraries) 设置成Yes.(https://stackoverflow.com/a/26949219
3 Targets ->Build Settings ->Linking ->Runpath Search Path 设置成@executable_path/Frameworks (https://stackoverflow.com/a/27433337

4 Targets ->Genral ->Embedded binaries 将你的.framework添加进去(https://stackoverflow.com/a/24345546

5 https://stackoverflow.com/a/43197278在我的测试中,这个答案虽然能运行程序,但访问不到Optional 的.framework.我觉得是一个错误答案。

6 https://stackoverflow.com/a/27326230 这个答案是说证书有问题,重新生成证书(我差点要尝试这个方案了,不过还好通过修改证书 ->信任 解决了,虽然我不清楚原因,有知道的,请留言解释下哦)

如果以上都不能解决你的问题,那你还是在https://stackoverflow.com/search?q=dyld+library+not+loaded 这里自己找找吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值