iOS开发之使用lipo命令制作模拟器与真机通用静态库
2016-01-14 14:17
337 查看
感谢原文作者: http://blog.csdn.net/jinglijun/article/details/8276089
通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac和iPhone的CPU不同,才造成了这种情况。
为了模拟器与真机之间切换调试的方便,制作通用版本非常有必要。
现在有两个版本的静态库libSQLite_i386.a(模拟器)与libSQLite_arm.a(真机)。
1、打开终端,进入到这两个文件所在的目录;
2、执行:lipo -create libSQLite_i386.a libSQLite_arm.a -output libSQLite.a,这时文件就会多出libSQLite.a,这个文件即为通用静态库。
我们可以lipo -info libSQLite.a命令,查看是否是通用的。
可以发现libSQLite.a的大小为libSQLite_i386.a与libSQLite_arm.a之和,建议发布的时候将静态库替换成真机版。
(同理可以合并多个静态库,某些库区分32bit和64bit,可以一并打包)
lipo 是一个在 Mac OS X中处理通用程序(Universal Binaries)的工具。现在发售或者提供下载的许多(几乎所有)程序都打上了“Universal”标志,意味着它们同时具有 PowerPC和 Intel 芯片能够处理的代码。不过既然你可能不在意其中的一个,你就能够使用 lipo来给你的程序“瘦身”。比如你想让“便笺”应用程序只包含 Intel(i386)的代码:
cd /Applications
lipo Stickies.app/Contents/MacOS/Stickies -thin i386 -output Stickies.app/Contents/MacOS/Stickies.i386
cd Stickies.app/Contents/MacOS/
rm Stickies
mv Stickies.i386 Stickies
通常在项目中使用静态库的时候都会有两个版本,一个用于模拟器,一个用于真机,因为Mac和iPhone的CPU不同,才造成了这种情况。
为了模拟器与真机之间切换调试的方便,制作通用版本非常有必要。
现在有两个版本的静态库libSQLite_i386.a(模拟器)与libSQLite_arm.a(真机)。
1、打开终端,进入到这两个文件所在的目录;
2、执行:lipo -create libSQLite_i386.a libSQLite_arm.a -output libSQLite.a,这时文件就会多出libSQLite.a,这个文件即为通用静态库。
我们可以lipo -info libSQLite.a命令,查看是否是通用的。
可以发现libSQLite.a的大小为libSQLite_i386.a与libSQLite_arm.a之和,建议发布的时候将静态库替换成真机版。
(同理可以合并多个静态库,某些库区分32bit和64bit,可以一并打包)
那lipo到底是什么呢
lipo源于mac系统要制作兼容powerpc平台和intel平台的程序。lipo 是一个在 Mac OS X中处理通用程序(Universal Binaries)的工具。现在发售或者提供下载的许多(几乎所有)程序都打上了“Universal”标志,意味着它们同时具有 PowerPC和 Intel 芯片能够处理的代码。不过既然你可能不在意其中的一个,你就能够使用 lipo来给你的程序“瘦身”。比如你想让“便笺”应用程序只包含 Intel(i386)的代码:
cd /Applications
lipo Stickies.app/Contents/MacOS/Stickies -thin i386 -output Stickies.app/Contents/MacOS/Stickies.i386
cd Stickies.app/Contents/MacOS/
rm Stickies
mv Stickies.i386 Stickies
相关文章推荐
- 修改searchBar搜索框的删除按钮颜色值
- iOS之汉字转拼音
- iOS导航栏设置
- 2015移动开发之iOS回顾
- iOS 获取缓存大小 清除缓存
- IOS中xib+代码实现自定义cell中嵌套
- iOS ERROR: unable to get the receiver data from the DB 解决方式
- iOS 企业账号申请
- 网上下载的ios开源有签名---更改为自己的签名方法-----sign----ios---签名---证书
- JSPatch – 动态更新iOS APP
- iOS 中 new 和 alloc init 的区别
- 如何调试 SDWebImage,使用前的准备工作
- ios 首先获取系统当前时间:
- iOS NSDate(一)
- iOS中json解析出现的null,nil,NSNumber的问题
- 获取IOS设备是Iphone几
- ios开发小技巧
- iOS晃动手势
- iOS的View之间的数据传递
- iOS应用状态恢复