iOS三方库、好资料收集

ios 制作.a静态库

2017-03-27  本文已影响39人  747071ac3c1d

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


上一篇下一篇

猜你喜欢

热点阅读