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