iOS 崩溃报错 dyld: Library not loaded: @rpath

背景:由于业务需要维护大量逻辑相似但是又有细微不同的应用,之前采用多target构建相似App的做法,之后由于业务持续扩大,发现在一个控制器可能会存在多个判断,增加耦合度,增加后续维护难度。之后对项目进行重构,分别对两个项目采用了静态库(.a)和框架(framework)的方式来将相似逻辑抽离成为主干,差异化的地方,各自project中实现。这里说明一下,framework方式下,出现的崩溃错误dyld: Library not loaded: @rpath......


iOS 崩溃报错 dyld: Library not loaded: @rpath_第1张图片
崩溃页面.jpg

在真机运行的时候, bulid成功,但是应用在启动页面就崩溃了。出现的关键错误搜索是:
1、dyld`__abort_with_payload
2、dyld: Library not loaded: @rpath
3、Reason: no suitable image found
我发生的具体错误:

dyld: Library not loaded: @rpath/TYKYGovApprovalFramework.framework/TYKYGovApprovalFramework
  Referenced from: /var/containers/Bundle/Application/CC63B6C4-AF48-4540-9E8F-501FE7F54A4E/ZhongKai.app/ZhongKai
  Reason: no suitable image found.  Did find:
    /private/var/containers/Bundle/Application/CC63B6C4-AF48-4540-9E8F-501FE7F54A4E/ZhongKai.app/Frameworks/TYKYGovApprovalFramework.framework/TYKYGovApprovalFramework: no matching architecture in universal wrapper

显示集成主干Framework错误,苹果官方是允许集成静态库,但是不允许集成动态库,在创建Framework的时候,Xcode 首先选择的是Dynamic Library


iOS 崩溃报错 dyld: Library not loaded: @rpath_第2张图片
Mach-O Type.png

这里改为Static Library 即可。

2018.07.01

Static Library Archive打包成功,但是Export的时候会出现如下错误:
Found an unexpected Mach-O header code: 0x72613c21

iOS 崩溃报错 dyld: Library not loaded: @rpath_第3张图片
Error.png

搜索出的解决方案有:
将静态库的添加从Embedded Binaries改为直接在Link Frameworks and Libraries添加。这样打包出来可以成功,但是依赖Framework的文件资源(图片和xib文件)加载不到。
后面的解决方案:
bebug模式的下的running:Framework为Static Library
Archive(release)将Framework改为Dynamic Library
(有大神有更好的请帮忙指出来,谢谢)

你可能感兴趣的:(iOS 崩溃报错 dyld: Library not loaded: @rpath)