前面的所有试验中,我们的静态库都支持了所有可能的指令集(i386, x86_64, armv7, armv7s, arm64),最大限

度的匹配了所有可能运行该代码的设备,使代码在当前存在的几乎所有iOS设备上都能以最优的性能运行。然而,这样

做是否真的很好,是否真的必要。

我们来做个试验:参考“Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64”生成各种包含特定指令集

的静态库,查看其占用磁盘空间的大小,结果如下

从上图可以很清楚的看到,生成的二进制文件所支持的指令集越多,其占用的磁盘空间也越大:

支持1种指令集的静态库的大小在53K左右

支持2种指令集的静态库的大小在106K左右

支持3种指令集的静态库的大小在159K左右

支持4种指令集的静态库的大小在212K左右

支持5种指令集的静态库的大小在265K左右

结论:基本上与所支持的指令集的数量成正比

程序的时间与空间之争历来都是存在的,有些程序注重代码执行的效率,也有些程序注重自身代码的大小,尤其是

移动设备上的应用基本上都是靠无线网络(甚至是3G网络)下载安装的,而且iOS应用只能使用静态库,这个限制无疑

又大大增加了程序本身的大小,App Store中一个应用安装包在几十、几百M甚至几个G都是很常见的,所以App瘦身在

iOS应用中的需求也是很多的。

从“Apple移动设备处理器指令集 armv6、armv7、armv7s及arm64”可知,所有指令集都是向下兼容的。到了2014

年,iPhone3G等标配armv6指令集的设备基本已经绝迹了,而且从XCode4.5开始,也都取消了对armv6指令集的支持,所

以当前只需要考虑armv7及以上的指令集即可。

我们可以通过减少支持的指令集数目来减小App的大小(效果还相当好),如果我们的App只支持armv7指令集,在

标配arm64指令集的iPhone5S上是可以正常运行的,只是损失了点点性能,当然在其他的设备上也能够正常运行,从而

达到App瘦身的需求。

事实上,目前AppStore上的一些知名应用也都是这么做的,比如百度地图、腾讯地图通过反汇编工具查看后,也都

只支持armv7指令集。

因此,对于那些性能上没有太高要求的App,尽可能减少其支持的指令集(如只支持armv7指令集),减小其自身大

小,从而在一定程度上增加其下载率。

iOS开发之静态库(六)—— 时空之争的更多相关文章

  1. iOS开发中静态库之".framework静态库"的制作及使用篇

    iOS开发中静态库之".framework静态库"的制作及使用篇 .framework静态库支持OC和swift .a静态库如何制作可参照上一篇: iOS开发中静态库之" ...

  2. iOS开发中静态库制作 之.a静态库制作及使用篇

    iOS开发中静态库之".a静态库"的制作及使用篇 一.库的简介 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的类型? 根据源代码的公开情况,库可以分为2种类 ...

  3. iOS开发之静态库(五)—— 图片、界面xib等资源文件封装到静态框架framework

    编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 由于bundle是静态的,所以可以将 ...

  4. 李洪强iOS开发之静态库的打包一

    李洪强iOS开发之静态库的打包一 //静态库一般做一下几种事情 //1 工具类 算法逻辑 新建工具类LHQTools 定义类方法 + (NSInteger)sumWithNum1: (NSIntege ...

  5. 【转】 iOS 开发之静态库.a和动态库详解 -- 不错

    原文网址:http://blog.csdn.net/lxl_815520/article/details/52154331 一, 简单介绍 1.什么是库 库是程序代码的集合,是共享程序代码的一种方式 ...

  6. iOS开发之静态库(四)—— 静态框架framework制作

    前面介绍过,虽然苹果公司禁止在iOS开发中使用动态库,而且也从XCode中移除了创建静态框架的功能,但我们还是可以通过对XCode进行小小的改动来创建静态框架. 编译环境:Macbook Air + ...

  7. iOS开发之静态库(一)—— 基本概念

    在项目开发过程中,经常出现优秀代码重用现象,又或者提供给第三方功能模块却又不想让其看到源代码,这些时候,通常的做法是将代码封装成库或者框架,这些在Windows编程或Linux编程中非常容易实现的过程 ...

  8. 李洪强iOS开发之静态库

    iOS开发拓展篇—静态库 一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开源库 公开源代码,能看到具体实现 ...

  9. 【iOS开发之静态库、动态库】

    什么是库? 库 就是程序代码的集合, 是共享程序代码的一种方式,库一般分两类:开源库和闭源库.github中共享一般是开源库:闭源库分为:静态库和动态库,闭源库不开放源代码,是经过编译的二进制文件,一 ...

随机推荐

  1. Spring MVC开发环境的搭建和实例

    一.安装jdk 二.安装tomcat 三.安装maven 新增环境变量MAVEN-HOME,并在path变量中添加bin路径 四.安装IntelliJ IDEA 五.创建maven web项目选择jd ...

  2. ORACLE服务端详细安装步骤(配图解)

    ORACLE服务端的安装及配置 l 将下载的安装包解压缩,双击[setup.exe]文件,系统检查监听参数,耐心等待,完成后出现如下界面,电子邮件可不填,"我希望..."建议不勾选 ...

  3. DUILIB CDialogBuilder 使用问题

    频繁调用CDialogBuilder的create接口创建同一个配置文件,会报异常: 正常的处理方式如下: if (!m_dlgBuilder.GetMarkup()->IsValid()) { ...

  4. Sorted Union

    function unite(arr1, arr2, arr3) { //return arr1; var args = Array.from(arguments); var arr = args.r ...

  5. 技术英文单词贴--C

    C category 种类,分类,范畴 cols 列数目 comma 逗号 component 组件,部件,成分 configure 配置,安装 configuration 配置,布局,构造 cons ...

  6. delphi 10.1 berlin最新的开发框架:咏南中间件+咏南开发框架,购买后提供全部的源码

    咏南中间件+咏南开发框架支持最新的delphi 10.1(berlin),老用户提供免费升级. 购买提供:中间件源码 附带福利(赠送): CS开发框架源码BS开发框架源码移动APP源码中间件集群源码二 ...

  7. js原型

    1.js基本类型和对象类型 js的简单类型包括数字(其中NaN为数字类型).字符串(类似'A'为字符,js没字符类型).布尔值.null值和undefined值.其他所有的值都是对象.数字.字符串和布 ...

  8. HDU 1166 敌兵布阵 (数状数组,或线段树)

    题意:... 析:可以直接用数状数组进行模拟,也可以用线段树. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000&quo ...

  9. innodb_ft_max_token_size取值范围

    根据问档中所说,innodb_ft_max_token_size取值范围为10-252,而实际上但我们在配置文件设置innodb_ft_max_token_size=252时,error log会出现 ...

  10. oracle ORA-00911 问题 解决

    书写sql语句 using (OracleConnection conn = new OracleConnection(OracleString)) { conn.Open(); var trans ...