iOS静态库的制作(.a&.framewrok)

2018-02-27  本文已影响9人  woniu

罗辑思维的罗振宇曾经说个关于学习的方法,但凡是学过的知识,我都会用笔写下来,哪怕是做一些简要的分析也是很好的,学的知识要有输出。我们相当于在大脑中做了一个记号,等到下次使用的时候就有线索来回忆这些知识了,同时也节省了大量的时间。

掐指一算已经做了两年多的SDK了,制作SDK已经成了机械性的动作了。虽说制作静态库也不算什么难题,但是其中遇到的问题还是要好好记录下来,毕竟好记性不如烂笔头!在新的一年里希望自己变得更好一点,同诸君共勉!

注意:由于苹果只允许动态库在平时开发的时候使用但是不允许上线,所以各位亲们一定要擦亮双眼。下面我们开始吧!
一、创建静态库工程
.a和framework能实现的功能都是一样的,只不过使用.a文件还要配合着相应的.h文件使用。而framework就方便多了,相当于将.a和.h都封装到一个文件里面了。开发者使用起来也十分方便,不会担心漏掉了某个.h文件。所以,这里还是推荐大家使用framework来制作静态库。


创建framework.png
创建.a.png

2、对静态库进行配置
a:首先我们在Architectures中添加armv7s,这是因为我们的SDK要适配各个处理器,如果不加那么在遇到这个处理器时会报错。
b:Build Active Architectures Only 默认是YES,也就是说之制作的SDK会只针对你所指定的某一款机型。所以,我们设置为NO让所有的手机都可使用。


配置1.png
c:Targeted Device Family默认是(1,2),意思为iPhone 和ipad都可以使用,这个在较早版本的Xcode中是直接用iPhone 和ipad表示的,现在用1、2来表示。
d:iOS Deployment Target意为配置SDK支持的最低版本。
配置2.png
e:Enable Bitcode 设置,默认为Yes,如果你要设置不支持Bitcode的话,就改为NO。
配置3.png

f:Mach-O Type配置我们库类型,Static Libraty(静态库)、Dynamic Library(动态库),这一点要注意下。


配置4.png
g:设置release模式
这里有两种模式debug和release,之前试过debug上线,也没有什么问题,不过还是推荐用release。
release.png
3、向用户暴露相应的头文件
默认所有的.h头文件都在Project中,无法暴露,为了暴露相应的头文件,我们从Project中将相应的.h文件拖入Public中。
暴露头文件.png
4、生成静态库
分别选择真机以及任意一款模拟器,然后Command+B,会生成真机以及模拟器的静态库。
模拟器.png
真机.png
生成的静态库.png
5、合并静态库
为了开发者使用方便,我们提供的静态库是真机和模拟器合并的静态库,合并方法如下:
合并静态库方法:lipo -create 真机静态库 模拟器静态库 -output 合并静态库
查询适配的处理器:lipo -info 静态库
合并静态库.png
适配的处理器.png
上一篇下一篇

猜你喜欢

热点阅读