iOS静态库

1.准备源码

这个就不用说了

2.支持的设备指令集

为了在不同设备上运行需要支持不同的指令集

模拟器的指令集是有限的

常见的指令集如下

1
2
3
4
armv6:iPhone2G/3G、iPod 1G/2G
armv7:iPhone 3GS/4/4s、iPod 3G/4G、iPad 1G/2G/3G、iPad mini
armv7s:iPhone5、iPhone5c、iPad4
arm64:iPhone5s及以后、iPad Air、iPad mini2

从上面可以看出

目前只要支持arm64 armv7 armv7s这三个指令集就可以了

但是为了支持模拟器运行

还需要支持i386 x86_64才行

3.合并真机和模拟器

这是因为真机和模拟器编译出来的支持的指令集不一样

合并之后就能支持更多的指令集了

查看指令集命令

1
lipo -info xxx.a

后面加上静态库地址

这样就能看到静态库文件所支持的指令集了

如果两个静态有重复的指令集就会合并不了

解决的办法有两种

第一种在编译的时候去掉

1
Target->BuildSetting->Architectures->Excluded Architectures

可以选择在Debug或者Release添加需要去除的指令集

因为Xcode可以开发很多东西

所以你需要在里面选择

假如真机和模拟器的指令集冲突

你可以在选择在真机编译的时候去掉一个

就选择Any iOS

或者在模拟器编译的时候去掉一个

就选择Any iOS Simulator

第二种编译好去掉

1
lipo -remove i386 xxx.a -output noi386.a

然后就是合并

1
lipo -create zhenji.a moni.a -output hebing.a

4.测试

直接放进项目里

试一下真机和模拟器

没有问题就可以了