制作静态库文件(.a文件)
1、创建静态库工程:
在Xcode中new一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static Library。直接next去建立一个静态库工程。(如下图)
2、编写工程:
现在就可以编写静态库要实现的功能(新建文件,编写代码)
3、配置静态库工程对应的Copy Files和Copy Headers:
在工程设置的Build Phases中设置(如下图),选择右下角的Add Build Phases,添加Copy Files和Copy Headers。
其中Copy Files是将其他工程调用静态库时候需要的头文件拷贝到Products Directory下的include文件夹下;Copy Headers用来设置静态库工程中文件的Target Membership,将需要公开的头文件拖到public下面。
4、添加资源文件(包括xib和图片等资源):
网上很多教程都是到上一步就可以编译了,但是仅限于编写一些方法(代码),无法添加资源,这里介绍如何添加资源文件。
采用的方法是,我们将所有的资源文件添加到一个bundle里面,然后把它和静态库一起include到其他工程中使用。下面是创建bundle的步骤:
a、添加bundle:在工程设置的Build Phases中设置,选择右下角的Add Target新建一个target,这里我们选择OS X下面的Framework&Library中的Bundle(如下图)。
b、我们可以看出这个目标模板是用于mac下面的,所以我们需要改下配置,让它可以在ios下面使用,在Build Setting下面的Base SDK值改为ios(最好改给Latest..那项)(如下图)。
c、现在我们可以将资源文件添加到刚才创建的bundle中了:
选择刚才创建的bundle的工程设置,在Build Phases中,将需要添加的资源添加到Link Binary With Libraries中(如下图)
5、编译:
编译器准备:我们编译生成的静态库文件分为release和debug版本,平时调试可以用debug版本,发布时候一定要用release版本(在Edit Schemes中修改,如下图);
现在就可以编译了,编译后的静态库文件、头文件还有bundle文件全都在Products Directory文件夹下。
另外静态库还区分真机版和模拟器版本(编译的时候选择的是设备编译的就是真机版,选择的如果是模拟器编译出来的就是模拟器版本,我们可以在命令行用下面的命令查看静态库的信息:
lipo –info *.a
i386是模拟器版本,armv7是真机版本,下面的命令可以将两个版本的库文件合成一个:
lipo –create path1/lib1.a path2/lib2.a -output path3/newlib.a
6、建立一个调用静态库的应用:
7、链接静态库:把第5步编译生成的后的静态库文件(.a文件)、头文件还有bundle文件添加到新建的应用中,将.a库添加到工程设置Build Phases的Link Binary With Library中,将bundle添加到工程设置Build Phases的Copy Bundle Resources中。
至此,我们已经将静态库添加到应用中了,在需要用库中方法的地方引入头文件,然后就可以调用里面的方法了。