我最近在学习封装Framework库,在学习过程中遇到要了如题问题:
当我使用封好的系统默认的动态库时,报如下错误:
<code>dyld: Library not loaded: @rpath/MySDK.framework/MySDK
Referenced from: /var/mobile/Applications/08B6D2C2-5028-4A64-93F5-1252B0B0BCAB/MyApp.app/MyApp
Reason: no suitable image found. Did find:
/private/var/mobile/Applications/08B6D2C2-5028-4A64-93F5-1252B0B0BCAB/MyApp.app/Frameworks/MySDK.framework/MySDK: code signature invalid for '/private/var/mobile/Applications/08B6D2C2-5028-4A64-93F5-1252B0B0BCAB/MyApp.app/Frameworks/MySDK.framework/MySDK'<code>
在网上找到如下2种解决方案,先介绍一下我自己的使用心得:
第一种:在
上图Link Binary With Libraries中的Required改为Optional就没事了,实际真机运行发现不是回事,即使不报错了,但是无法运行该framework里的方法协议。 也就是说,这个库完全不起作用,我自己实现的库,肯定是要使用封装好的功能,所以这个方案Pass,希望大家引以为戒,不要去使用这种方案了,just waste time。
方案2:在
点击1处加号,会自动添加2处也就是copy files,3处选择为frameworks,在4处添加你自己的framework,添加完成后build,ok。
我使用后确实解决了bug问题,封装的SDK也达到了初步能用的地步,但是封装的功能并没有完全可以使用,也有可能是库封装的不完整问题。。
PS:我封装的。a库是可以完美使用的
PPS:
如何创建区分动态库还是静态库:
1、查看MySDK.framework是否为动态库(xcode6下默认是动态库)
2、若不需要使用动态库,则将其改为静态库,并重新生成framework
3、若必须使用动态库,则需要在MyApp的工程中做如下配置(未验证,网上是这么说的)
TO ALL:
以上是我使用系统默认的动态库的方式的使用心得,我认为应该封出静态库,后续学习过程中再续博。。