前面的所有试验中,我们的静态库都支持了所有可能的指令集(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. eclipse构建及运行maven web项目

    1:环境 eclipse indigo, JDK1.6, maven 3.2.1, tomcat7.0.42 2:安装eclipse maven插件 m2eclipse 第一种方法:从网上下载m2ec ...

  2. EasyUI 后台接受DataGrid传来的参数

    string ad = Context.Request.QueryString["rows"];不行 string aedf = Context.Request.Form[&quo ...

  3. [VS2013]如何闪开安装VS2013必须要有安装IE10的限制

    来源:http://blog.163.com/qimo601@126/blog/static/1582209320143354446462/   已阻止安装程序,此版本的Visual Studio需要 ...

  4. hdoj 1874 畅通工程续

    Problem Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行 ...

  5. C# 基本算法

    1.冒泡排序 排序 ,,,,,, }; ; i < ArrayList.Count(); i++) { for (int j = i; j < ArrayList.Count(); j++ ...

  6. ansible 2.2的源码编译安装

    ansible代码下载地址:http://releases.ansible.com/ansible/ # git clone git://github.com/ansible/ansible.git ...

  7. 修改默认MYSQL数据库data存放位置

    随着业务量的增长,mysql默认安装所在分区大小出现瓶颈,通常需要将datadir换到较大的分区 示例原目录:/usr/local/mysql/data/示例新目录:/data/mysqldata/ ...

  8. 如何使用grunt工具

    本文来源于同事的笔记,也是在网上查找的资料,记录分析的特别详细,对初学者来说简直不能再通俗易懂了,感谢原作者! 1.前言 选择Grunt原因 管理我们的文件依赖 随心所欲的批处理任务 整合常用的前端工 ...

  9. 比较有价值的参考文档-----------------URL

    http://www.wendangku.net/doc/f7b4349108a1284ac85043bf.html             曙光服务器的IPMI http://noob.blog.1 ...

  10. 关于用CSS3画图形的一些思考

    众所周知,用CSS3的圆角.转换可以画出各种不同的形状,制作不同的图案,早些前先驱者已画出经典的叮当猫,iphone手机等展示CSS3的强大实力,趁最近有空我也对CSS3进行了一些实践,颇有收获. 用 ...