我们在导入友盟,地图,支付等等的SDK时,经常会看到xxx.a或者xxx.framework,这个就是静态库了。
首先,什么是静态库。通俗一点讲呢,就是你要用别人写好的代码,但是人家不想让你知道具体是怎么实现的,就可以打成静态包,只暴露一个.h接口供你使用。当然静态库还有别的作用,比如你的工程中要用到大量的MRC,你又不能一个个手动把release等去掉,那怎么办呢?解决起来很简单,把用到的MRC文件打成静态包就搞定了!
这里插一句,动态库与静态库是相对应的,我们在工程中经常会导入xxx.dylib(ios9之后就是xxx.tbd了,其实是一样的,只是苹果任性,改了个后缀,好在,原先的xxx.dylib运行也正常)和.xxx.framework(framework既可以是静态库,也可以是动态库),导入的就是是动态库。
好了,现在正式开始打包!
1.我们正常创建一个项目,然后(看下图)
2.生成完后,你就能在你的工程里看到如下图
3.现在你就可以在你的StaticDemo.h和.m中添加方法和实现了,注意对外暴露的方法都定义成类方法,如下图:
4.注意 这个时候要选择如下图,然后分别选择真机和模拟器,分别Commond+B一下
5.这个时候你就会看到 静态库libStaticDemo.a 由红变黑,说明已经生成动态库成功了!
6.右击libStaticDemo.a-->show in finder,你会看到如下两个文件(iphoneos是真机,iphonesimulator是模拟器,真机情况下只能用真机的静态库,模拟器情况下只能用模拟器的静态库,否则会报错,有方法可以避免,后面讲)
7.当然,只用这个静态库,你看不到里面的方法还是白搭,所以,点开include,你会看到.h文件
这个时候你自己最好重新新建一个文件夹"lib",将.a和.h文件都放在同一个文件夹下,如果你的静态库里用到了类似图片的资源,那么就建立一个bundle文件夹,将用到的资源统一放在这个文件夹下,再将这个文件夹拖到文件夹"lib"下。
8.这样,一个静态库就算搞定了,你用到静态库的时候,就把lib文件夹拖到你的工程里就OK了。
当然,还有许多其他要注意的点,考虑到篇幅,我就放在下一篇继续讲了。