关于dyld: Library not loaded
2015-09-17 16:45
357 查看
在接入智凡迪的sdk过程中,遇到以下问题:
dyld: Library not loaded: @rpath/SDKFramework.framework/SDKFramework
Referenced from: /private/var/mobile/Containers/Bundle/Application/107B34E6-F250-4511-9FA9-31526F8E7B84/TestSDKUI.app/TestSDKUI
Reason: image not found
智凡迪使用了iOS8中的自定义动态包。在build setting的link library导入SDKFramework.framework后,无法读取framework中的图片资源。
以前iOS上用的framework,实际上都是static library打包成framework结构,图片资源打包为bundle。直接在工程中导入framework和bundle资源即可。然而动态包直接将图片资源编译打包进framework,需要在导入的工程中做配置。
1.网上有一种办法是讲导入的framework设置为optional。
这里说明一下required和optional的区别:
强引用(Required)的framework是一定会被加载到内存的,但是弱引用(Optional)的framework只在需要时才会被载入内存,这对于比较大的framework来说,在最初加载的时候会省很多时间。例如,有一些库如Social.framework 和 AdSupport.framework,是在iOS6之后才被引入的,还有一些更新了新特性的只能在iOS6+上可用。当你添加一个framework到你的工程里,他们被默认强引用(Required),然而,当你最终把程序配置在运行5.0的设备上时,你会发现它通不过最户的加载,原因就在于这些库是不被iOS5.0支持的,就需要我们把这些库的引用改为Optional.
但是这里即便设置为optional,还是会报这个错,表明并非因为加载多余,而是真的没有加载进来。
2.这里如果要正确加载,需要两处设置:
-将包含图片的framework加载到bundle resource
-在build setting界面:target-〉Build Phases -〉左上角+号 -〉New Copy Files Phase 然后在Copy Files下 Destination选择Frameworks -〉添加动态库
这个操作似乎是要求运行时将动态库copy加载到framework当中,供app运行使用(存疑)。
dyld: Library not loaded: @rpath/SDKFramework.framework/SDKFramework
Referenced from: /private/var/mobile/Containers/Bundle/Application/107B34E6-F250-4511-9FA9-31526F8E7B84/TestSDKUI.app/TestSDKUI
Reason: image not found
智凡迪使用了iOS8中的自定义动态包。在build setting的link library导入SDKFramework.framework后,无法读取framework中的图片资源。
以前iOS上用的framework,实际上都是static library打包成framework结构,图片资源打包为bundle。直接在工程中导入framework和bundle资源即可。然而动态包直接将图片资源编译打包进framework,需要在导入的工程中做配置。
1.网上有一种办法是讲导入的framework设置为optional。
这里说明一下required和optional的区别:
强引用(Required)的framework是一定会被加载到内存的,但是弱引用(Optional)的framework只在需要时才会被载入内存,这对于比较大的framework来说,在最初加载的时候会省很多时间。例如,有一些库如Social.framework 和 AdSupport.framework,是在iOS6之后才被引入的,还有一些更新了新特性的只能在iOS6+上可用。当你添加一个framework到你的工程里,他们被默认强引用(Required),然而,当你最终把程序配置在运行5.0的设备上时,你会发现它通不过最户的加载,原因就在于这些库是不被iOS5.0支持的,就需要我们把这些库的引用改为Optional.
但是这里即便设置为optional,还是会报这个错,表明并非因为加载多余,而是真的没有加载进来。
2.这里如果要正确加载,需要两处设置:
-将包含图片的framework加载到bundle resource
-在build setting界面:target-〉Build Phases -〉左上角+号 -〉New Copy Files Phase 然后在Copy Files下 Destination选择Frameworks -〉添加动态库
这个操作似乎是要求运行时将动态库copy加载到framework当中,供app运行使用(存疑)。
相关文章推荐
- Oracle笔记——number(p,s)
- Android移动view动画问题 关于view的位置移动了,但view里面绑定的监听器还在原位
- MySQL 5.7并行复制实现原理与调优
- 图片加载框架Android-Universal-Image-Loader使用及解析
- android 应用实现屏幕下沉(android 4.4及以上)
- 关于编程过程中的一些疑惑及问题
- ACM-STEP Rank
- 《学习日记》---参数化存储结构防止SQL注入攻击
- 算法系列--Rotate Image
- Android在线热更新hot fix - AndFix试用
- VS2010不能添加变量 双击不能添加处理事件 以及如何添加窗口系统事件
- 五年磨一剑:Java 开源博客 Solo 1.0.0 发布了!
- 五年磨一剑:Java 开源博客 Solo 1.0.0 发布了!
- 五年磨一剑:Java 开源博客 Solo 1.0.0 发布了!
- DelegatingRequestProcessor作用
- gradle错误“Could not resolve all dependencies for configuration”
- Boost库安装与使用 http://blog.csdn.net/cybertan/article/details/5770227
- ppp协议的应用
- Servlet源码分析【转】
- 虚函数的实现原理--c++虚函数表解析