ios很多底层是用C/C++写的,编译之后要变成二进制数据。
但是因为历史原因,ios又分32位和64位版本,每个app需要两套二进制数据。
安卓因为使用java,直接实现了跨平台,只需要一套软代码解释程序基本可以在所有机器上跑,即使安卓有的程序使用了C/C++,也只是某个模块调用,尺寸当然小一些了,
其实这个问题是个
伪问题,真实的情况是这样的:App Store上标注的APP大小是安装之后的大小,Android应用商店大多只是显示安装文件的大小。Android安装APP后,占用空间其实和iOS版相差不大。
技术层面的东西我也不是很了解,但是有一点是可以非常直观的感觉到的。首先就是安卓的apk的压缩率要高于iOS的ipa,这是未安装之前。安装完成之后,安卓会对apk做一定处理,在保留apk文件本身的前提下,解出应用运行所需的部分必要数据。但是iOS方面,直观的说,ipa安装完成后就是一个文件夹,等于是把ipa解压缩了。这当然占用空间比安卓的大了。所以在iOS上搞美化是一件很轻松的事情,直接修改文件就行了,不需要像安卓那样反编译回编译,或者root后修改图片类型的文件,也至少要解压缩,然后再压缩回去。
1、过去的说法
iOS要准备iPhone、iPad两款产品的分辨率图像资源,所以APP占用巨大,但Android对图像的处理要求不高。过去这样理论可能成立,但是安卓已经发展到8.0版本了,现在这个命题是个伪命题。
2、科学分析
既然第一种观点现在不成立,那么我就科学分析下。
首先,进行安装文件分析
Android是apk,iOS是ipa。
两个都是压缩包文件,但是两者的压缩率是不同的,比如安卓版微信apk文件,在Windows系统上大小为44.1MB,解压之后大小为93.7M,而iOS版的微信ipa文件大小为145MB,解压之后为186MB。所以,apk的压缩率是要远大于ipa的。
所以,我们可以得出结论:虽然apk未解压时比ipa小很多,但是解压后这个差距就缩短了。当然不可忽略的是,iOS的APP确是要比Android大很多。
然后,我们再来看看安装机制
从Android 5.0开始,Android开始采用ART虚拟机,apk文件安装到系统的过程中会进行预编译,把apk中的dex文件编译成oat文件,把字节码经过JIT即时编译器转换为机器识别码,所以apk安装包中有关程序部分的文件更像是一堆代码,占用空间较小。
而iOS呢?众多周知,iOS最早是基于OS X同源开发的,所以APP的安装方式也很相似,简单的说,iOS的APP本身就是一个大文件,你从APP Store下载安装到iPhone的过程,更像是一个复制粘贴的过程。
所以,Android的安装机制导致了,无论你APP文件描述上的大小,它永远不代表安装到手机上的大小。而iOS呢,安装文件描述多大,安装完基本也就那么大。
最后,事实真的如此么?我们来亲测下:
测试APP为新浪微博,为什么是微博不是微信,(因为小编经常用微信,卸载重装,里面存的东西有些就没有了!)
首先来看看安卓里的新浪微博,机型为一加3T,在应用商店里的大小为38.56M,然后安装之后大小为87.76M。
然后再来看看iOS里的新浪微博,机型为iPhone 6,商店显示大小为114M,但是实际安装居然更小了,只有101M!原因大概是APP Store里的大小应该是以最新的iPhone 7 Plus作标准的。
这也说明,iOS在下载安装过程中,会根据设备型号来适配必要的文件。
比较安装完成后的Android的87.76M和iOS的101M相比较,相差并不是很大。 所以,Android应用商店显示上的大小只是APK安装文件的大小,不代表安装完的大小;而在App Store上显示的APP大小基本上是真正的大小。