.a静态库制作

iOS开发之.a静态库制作

以Xcode8.2为例,简单封装图片界面等资源文件到.a静态库。

1.首先将资源文件打包成Bundle的模板

借助于OS X,因为iOS框架中没有创建Bundle的模板

删除工程中多余的文件

由于删除了plist文件,所以必须在Build Settings中删除对它的引用

我们创建项目时选的是OS X中的框架,所以此处需要修改Base SDK为iOS

设置完后,可以把我们需要的资源拷贝过来

按快捷键”Command + B”编译,编译成功后,Products下面的PictureOCRImage.bundle由红色变成了黑色,表示编译成功

可以通过右击 Show in Finder -> 查看文件夹 ->右击显示包内容,查看里面的内容

至此,资源打包成bundle完成.如果只是普通的资源,完全可以创建一个文件夹,把需要封装的资源文件拷贝至该目录下,将其改成后缀名为bundle即可,然后就可以使用NSBundle提供的接口访问其内部的资源文件,当然,也可以通过访问普通文件目录的方法访问其内部的资源。这样写主要是考虑到xib文件打包

2.制作.a文件库

新建项目,点击iOS—Framework&—Cocoa Touch Static Library。

系统自动生成以工程名命名的.h和.m文件,可自定义的在目录下添加或删除文件,注意目录下Products文件夹有一个.a文件为红色,说明文件并不存在。这里我们将系统生成的.h和.m文件删除。

将需要打包的文件添加到工程中

点击Build Phases—Copy Files,左下角点击+号按钮,添加你需要暴露的接口头文件。

点击左上角,选择Edit Scheme,Build Configuration下选择Release,先注意检查下面Release是否为NO:Yes表示只编译选中模拟器设备对应的架构,No则为编译所有模拟器设备支持的cup架构(Debug版本同理),选择NO,然后分别在模拟器和真机下Command+B编译一下,会看到Products文件夹下的.a文件变为黑色,这个.a文件就是我们想要得到的静态库。


可以通过右击 Show in Finder -> 查看文件夹,打开Build—Products文件夹,会看到Release-iphoneos和Release-iphonesimulator文件夹,分别是真机和模拟器的.a文件,为了使用方便我们将两个版本的.a文件合并。
合并真机和模拟器.a文件,在终端输入以下命令行:lipo -create 模拟器.a文件的路径 真机.a文件的路径 -output 合并后的保存路径(例:lipo -create /Users/dcd/Library/Developer/Xcode/DerivedData/TestCocoa_Touch-gjlcdmvelybrhdfbqwxscxvvtsqy/Build/Products/Debug-iphonesimulator/libTestCocoa\ Touch.a /Users/dcd/Library/Developer/Xcode/DerivedData/TestCocoa_Touch-gjlcdmvelybrhdfbqwxscxvvtsqy/Build/Products/Release-iphonesimulator/libTestCocoa\ Touch.a -output /Users/dcd/Desktop/TestCocoaTouch.a)最终会在桌面得到一个合并后的TestCocoaTouch.a文件,再将暴露出来的.h头文件一起复制出来


查看静态库.a对处理器架构的支持,先cd到.a文件的路径下,命令行输入:
lipo -info xxxxx.a

至此,.a库的制作完成了

参考文章:
http://www.cnblogs.com/richard-youth/p/4856841.html
http://www.fx114.net/qa-173-100870.aspx