刚升级Xcode7.2,用起来很是不习惯.前几天打包静态库.a文件时就遇到了问题:
1.把Debug-iphonesimulator 里的.a文件以及.h文件拖拽到项目中,用模拟器编译时,选择iPhone5s及以上都正常,但iPhone5及以下就出现了以下错误,
用 lipo -info [文件路径] :显示静态库文件的架构类型, 只有 x86_64 ,而没有 i386 . 记得当时打包为.a文件时,选择模拟器的 IOS Simulators是iPhone 6s plus ,如果选择iPhone5 及以下,结果恰恰相反(只有i386,而没有x86_64). 纠结这个问题好久,查看了很多资料都没提到.最终在一个国外网站看到有人已经解决,如下.
解决方式一定要把Build Active Architecture only改为NO,如下:
下面简单来说一下静态库的制作:
1.选择FrameWork & Library 下的 "Cocoa Touch Static Library"
2.输入静态库名称
3.添加需要打包的库资源,要实现的方法,属性 ,逻辑处理好
4.选择需要暴露出来的.h文件,.m文件会自动编译到.a文件中
点击+号,添加 .h文件
5.要把Build Active Architecture only改为NO
6. 选择真机设备,然后Command + B编译,libStaticTest.a文件会从红色变为黑色
7.选择模拟器,然后Command + B编译,模拟器和真机环境下用的.a文件是分开的
8.右击"show in Finder",查看制作好的.a文件.
注: 1).Debug-iphoneos 文件夹里面的东西使用在真机上
2).Debug-iphonesimulator 文件夹里面的东西是在模拟器运行的.
9.合并两个文件(不是必须) 如果想让一个.a文件能同时用在真机和模拟器上,需要进行合并
在终端输入指令:lipo -create [文件路径1] [文件路径2] -output [生成文件路径/XXX.a]
注: lipo -info [文件路径] :显示静态库文件的架构类型
花了大半个小时写下这篇博客,希望对不理解的攻城狮有所帮助.