iOS 封装framework

来源:互联网 发布:极限矩阵 海尔 编辑:程序博客网 时间:2024/06/04 19:50

1.先创建一个工程类型选择iOS framework

2.将要封装的代码加进来后分别选择模拟器和真机情况下进行build。

3.选中生成的framework,Show in finder,找到对应的路径

4.将两个路径分别在命令行中进行验证lipo -info ./name.framework/name      输出(真机下输出armv7 arm64,模拟器下输出i386 x86_64)

5.进行合并lipo -create ./真机/name.framework/name  ./模拟器/name.framework/name -output ./name  得到一个name文件

6.将真机下的framework包拷贝出来,将包里边的name文件用新生成的替换掉就得到了合并后的framework


说明

模拟器:iphone4s-5 : i386 , iphone5s-6plus : x86_64

真机:iphone3gs-4s : armv7 , iphone5-5c : armv7s (静态库只要支持了armv7,就可以跑在armv7s的架构上),

            iphone5s-6plus : arm64。
armv6, armv7, armv7s是ARM CPU的不同指令集,原则是向下兼容的。例如iPhone4S CPU支持armv7, 但它同时兼容armv6,只是使用armv6指令可能无法充分发挥它的特性


问题:将自己封装的framework引入工程的时候出现错误

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

原因是

在build setting的link library导入SDKFramework.framework后,无法读取framework中的图片资源。

自定义的动态包直接将图片资源编译打包进framework,需要在导入的工程中做配置。

解决方案:

-在build setting界面:target-〉Build Phases -〉左上角+号 -〉New Copy Files Phase 然后在Copy Files下 Destination选择Frameworks -〉添加自定义framework