ios 制作.a静态库
1.第一步 新建静态库工程 然后创建一个测试的文件 路径和暴露的文件都是可以选择的
2.你build 一下就可以看到你要的静态文件 然后showInFinder 我的此时是在7plus的模拟器下生成,此时生成的是支持x86_64架构的模拟器,此时在5s-7ps的模拟器上运行都是没有问题的,但是如果你要运行到4s的模拟器上,就会报i386的问题 这其实是打包的静态库的问题 ,稍后我会讲解决方案,请耐心往下看(ps:模拟器 4s-5是i386的架构, 5s-7ps是x86架构 真机:3gs-4s是armv7架构 5/5c是armv7s架构 不过armv7兼容armv7s架构, 5s-7ps是arm64架构 )
3.如何让你的编译出来的.a的静态文件同时支持所有的模拟器,修改build setting里面的配置项 把build Active...那一项修改为No, 这个配置的意思是你编译出来的.a只在某个设备下Active,那么这个.a只能在这个模拟器对应的架构下其他设备是可以用的,可以使用lipo -info + .a的路径查看他支持的架构,有点绕口。(eg:比如说我是在7ps上编译删生成的.a的静态文件,这个配置还是YES,这个静态文件只能在x86对应的模拟器下可以使用,在i386的模拟器下就不能使用;如果我这个配置我改成NO,我在build一下, 生成的.a的静态文件在所有的模拟器下都是可以使用的)
4.上面的编译出来的只是debug模式下的 支持模拟器的静态文件,在真机上还是不能使用的 ,更换如下设备,在build一下,生成的就是真机下的静态文件, 不过这些都是debug模式下 只能调试使用,如果你想要合成debug模式下支持模拟器的.a的静态文件和真机下的.a的静态文件 进入product路径下 lipo -create + 真机.a路径 + 模拟器.a路径 -output 你的名称.a 这样生成的静态文件只能调试使用,发布时不能使用的
5.如何生成release模式下的静态文件,在如下的位置修改为release 编译出来就是release模式下的静态文件,接下来的步骤和上面步骤一样,搞出一个真机下的静态文件和一个模拟器下的真机文件,至于你你要不要合并成一个静态文件,看自己需求,我是比较喜欢合并成一个.a的静态文件
6.如果按照上面的步骤操作后会有如下结果,1是我debug下的模拟器和真机下的静态文件,2是release模式下的真机和模拟器下的静态文件 3是我把release模式下真机和模拟器合并后的.a的静态问价,接下就可以测试了,拖的时候是记得把TestStaticLib.h(这个是我的文件名字)中的.h文件也拖过去(如下图所示)
7.如果你合并好了,有些架构你不想要支持某个结构 你可以通过如下指令 删除指定的架构 lipo -remove i386 + 要处理的.a路径 -output XXX.a
或者说你想要从合并好的静态文件中剥离某个静态库 可以使用下面的指令 lipo -thin arm64 要处理的静态文件.a -output arm64.a