iOS中静态库的制作——使用创建静态库项目的方式创建静态库

最近公司要求写SDK,我就想把它弄成静态库的方式

我的理解:所谓静态库,就是把所有的.m文件打包成一个.a文件,这样使分享代码的时候更加简洁,重要的是别人也不会看到你.m文件中的傻B代码了

环境是Xcode6.2 iOS8.2

首先,创建一个静态库项目

删掉Xcode自动创建的同名文件,然后导入你需要做成静态库的文件

在这里我导入一个简单的输出字符串的文件

然后选择运行的设备进行编译,这里我有不理解的地方:在Xcode6.2中,当我首先选择模拟器,然后编译文件的时候,.a文件依然是红色的,说明静态库没有生成,但是当我把运行设备改成iOS Device之后,.a文件就变成黑色了,这是为什么?

编译结果

在.a文件上右键,选择在文件夹中显示

可以看到文件夹中的.a文件

这是在用真机调试的时候需要导入的静态库,这时候神奇的事情又来了,在Debug-iPhoneos文件夹的下面有一个Debug-iphonesimulator文件夹,打开之后,里面也有一个静态库文件

这里的.a文件是用模拟器调试的时候用的

这连个.a文件用于不同的调试设备,当你用错的时候,Xcode会报错

调试的时候,两个静态库切换会很麻烦,而且给别人使用也不方便,这里可以把两个.a文件打包成一个.a文件

打包方式:

这是截取别人的博客,我自己的路径太长,博客地址,http://www.cnblogs.com/qingjoin/archive/2013/01/31/2886985.html

总之,生成的.a文件对于模拟器和真机都是适用的

然后,这里有一个查看.a文件支持模拟器还是真机的方法:

在终端输入

这里的x86_64指该静态库支持模拟器,如果是arm7或arm8,那么该静态库就是支持真机调试的

我们用终端合成的.a是会同时显示出来x86_64,arm7和arm8的

以上说的都是在Xcode6.2环境下,生成的调试用静态库,因为静态库所在的文件夹是以Debug开头的,我在看教程的时候看到过以release开头的,这个应该是用来发布程序用的静态库,这个我还不是很清楚他们的区别

2015-9-9日更新!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

今天又打包了一个静态库,并且做了合并,在使用的时候报错

我查看了静态库信息,支持的是

Architectures in the fat file: /Users/chebao/Desktop/i386+arm/libTestCocoapodsWithAFN.a are: armv7 i386 arm64

 这个静态库的模拟器部分是用iPhone4s打包的,这里的i386可能指的是4s的处理器,不支持64位

当我用5s的模拟器打包的时候,静态信息是

Architectures in the fat file: /Users/chebao/Desktop/64+arm/libTestCocoapodsWithAFN.a are: armv7 x86_64 arm64

然后在项目中运行就没有问题了

原文地址:https://www.cnblogs.com/chebaodaren/p/4569370.html