ios封装生成合成.a文件
简介:
1、静态库分为真机—Debug(调试)版本、真机—Release(发布)版本、模拟器—Debug版本、模拟器—Release版本;开发中一般都打包Release(发布)版本,将真机和模拟器版本合并,提供外界。
2、使用场景:在项目开发的过程中,例如两个公司之间业务交流,不可能把源代码都发送给另一个公司,这时候将私密内容打包成静态库,别人只能调用接口,而不能知道其中实现的细节。
生成.a文件
1、新建项目,点击iOS—Framework&—Cocoa Touch Static Library 2、Xcode的参数设置
- "Build Active Architecture Only" 设置为"NO"
- "IOS Deployment Target" 设置为 "IOS 7.0" ,表示支持IOS7.0以上系统版本的编译
- 分别选择真机和Iphone6模拟器进行编译
- 首先找到真机编译成功生成的.a文件,Show In Finder
- 然后找到Iphone6模拟器编译成功生成的.a文件(在真机目录中command+(向上剪头键)返回上一层文件夹路径)
合并.a文件
lipo -create SQY/iOS/iphoneos/libGamePlusAPI.a SQY/iOS/iphonesimulator/libGamePlusAPI.a -output SQY/iOS/libGamePus.a
其中SQY/iOS/iphoneos/libGamePlusAPI.a //为真机库。
SQY/iOS/iphonesimulator/libGamePlusAPI.a //为模拟器库
-output SQY/iOS/libGamePus.a //为两个合并后存放的路径
然后可以输入命令测试下是否成功
lipo -info SQY/iOS/libGamePus.a //下面是输出 armv7 i386 有了两个就表情模拟器和真机都支持 其中armv7为真机架构 i386为模拟器
Architectures in the fat file: SQY/iOS/libGamePus.a are: armv7 i386
这二个库一个是用于真机运行的一个是用于模拟器运行的.其实我们可以利用lipo将这二个文件打包成一个通用的a文件。命令如下:
将/Users/user/Library/Developer/Xcode/DerivedData/UITab-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products替换成你的路径。
将/Users/user/Desktop/libPrint.a替换成合并后的路径。
lipo -create /Users/pjk1129/Library/Developer/Xcode/DerivedData/Print-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products/Release-iphonesimulator/libPrint.a /Users/pjk1129/Library/Developer/Xcode/DerivedData/Print-dgfkluumuexoxhcapzidtsmdgqcj/Build/Products/Release-iphoneos/libPrint.a -output /Users/pjk1129/Desktop/libPrint.a