ios 静态库编译总结

在用xcode6编译静态库文件的时候,若在TARGETS中Valid Architectures 中选择NO时则会编译选择的其他类型架构,若是YES,则只编译对应机型的对应架构类型。而在模拟器下编译得到的.a只支持模拟器的情况,即是i386 x86_64。这时候如果编译完成则会在目录/Users/wuwenyu/Library/Developer/Xcode/DerivedData/ImageFilters-escsmhxpuofqrbbovoowylsghugo/Build/ 下得到对应的编译版本的.a文件,此时只需把编译的得到的对应的.a文件合并为最终想要分发的.a文件即可,合并命令为:

lipo -create Release-iphoneos/libbaidumapapi.a Release-iphonesimulator/libbaidumapapi.a -output libbaidumapapi.a 即可在当前目录下得到合并之后的.a文件。此.a文件可以在模拟器和真机下同时使用,否则只能在真机或者模拟器上使用对应的.a文件。(关于xcode中自带的脚本合并静态库的功能,这里先不描述,后续再添加)

注意:在最新版的xcode6中,已经默认不支持编译armv7s的架构,所以若要支持armv7s,则需要手动去添加,可以在Architectures中添加一项armv7s,这样的话就能同时支持armv7s的了。

下面是在xcode6下编译静态库的步骤:

1:首先打开xcode,File/New/Project,在弹出的面板中选择Framework & Library,如下图:

点击next,填好相关信息就next


创建完成之后得到初始的两个文件,如果不用可以删除掉,然后添加自己想要打包的文件进来即可:


可以看到一开始Products下的.a是红色的,说明此时还未开始编译.a文件。

2:创建完成之后,现在应该加入自己想要打包的类文件,右键工程选择add file,或者直接拖入工程,在这里我把原始文件删掉然后拖入一个图片处理类进来:


3:点击工程中的TARGETS,在Bulid Settings中的Build Active Architecture Only中选择NO(这样就能同时编译到别的架构,否则将只能编译得到当前设备的架构类型):


4:查看Build Phases 中确认想要打包的对应的.m文件是否都已经加入:



5:一切正常之后,接下来就可以开始编译.a文件了,选择build:


如果是真机下可能会报错,原因是没有选择证书之类的,只要去工程设置下即可:



6:证书选择完成之后再次build,发现build成功,这时候Products中的.a文件不再是红色的了,已经生成对应的.a文件了:


7:可以到目录:/Users/username/Library/Developer/Xcode/DerivedData/中找到对应的工程信息,在build-Products下可以看到一个文件夹为Debug-iphonesos,

点击进去可以看到相应的.a文件,要查看该.a文件支持的架构类型,可在命令行中输入

lipo -info libStaticLibraryDemo.a

8:如果想要同时支持模拟器的话,则选择模拟器下,然后build,然后最后将这两个.a合并就好了。

9:创建bundle文件可参考此博文:http://xummer26.com/blog/Build-Static-lib-on-iOS.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值