减少iOS应用程序的大小

本文译自:Reducing the size of my Apphtml

Q: 怎样才能让个人程序安装包小一点,让程序的下载和安装更快速?ios

A: 本文收集了一些减少程序安装包大小的相关技巧(当第一次下载和安装程序时)。若是是针对升级程序的话,能够看这篇文章(减少iOS应用程序升级时所需下载的大小)(这与第一次安装使用的工做原理有所不一样)。小程序

检查应用程序

首先是检查.app bundle,看一下程序包里面哪些文件占的空间最大。app

在作任何相关优化以前,咱们须要作一些权衡。经过权衡,能够知道把优化的重点集中在什么地方。本文提到的一些技术缺点咱们也须要作出考虑,咱们必须考虑相关影响,以确保作出正确的决定。若是不作权衡的话,咱们没法知道须要对程序作出什么样的改变。ide

当第一安装iOS程序时,须要下载完整的一个.ipa文件。(注意这不一样于升级)。实际上.ipa文件就是一个.zip结构。优化

咱们能够经过这样的方法来找出程序的.ipa文件:从App Store下载应用,而后利用iTunes对iOS设备作同步处理,接着查看目录:~/Music/iTunes/iTunes Music/Mobile Applications,就能找到.ipa文件了。ui

当让咱们也能够经过使用: Xcode的Archive命令来构造出.ipa文件——该文件与提交到App Store上的格式基本一致加密

检查.ipa文件

简单的将后缀为.ipa文件修改成.zip,而后利用Finder将其解压出来。右键单击解压出来的.app bundle,选择显示包内容,以查看里面的资源文件。经过该方法咱们能够看到哪些文件占的空间最大。记住:.app bundle是通过压缩的,而且有些文件的压缩效果要比别的文件好,因此压缩后的效果才是才是最重要的。不过通常状况下在压缩前最大的文件,在压缩后依旧是最大的文件。咱们能够将某个文件删除,而后在Finder中右键单击,选择压缩,这样能够更加精确的测量文件压缩效果。spa

iOS App Store相关因素

做为提交到App Store中app里的可执行文件是被加过密的。加密的反作用是可执行文件的压缩效果没有以前的好了,由于加密会隐藏一些细节问题。所以,从App Store下载下来的.ipa文件大小要比从本地build出来的.ipa文件大。debug

注意:将长文本内容表数据等从代码中移除,并添加到外部文件中,这样能够减少最终安装包下载的大小——由于这些文件的压缩效果更好。

若是你选择Organizer window中的某个archived,而后点击Estimate Size,Xcode能够对最终分发的程序尺寸作出一个评估。这里并不考虑Mac App Store上面的和企业级部署的iOS程序。

Build Settings

编译选项

将build setting中的Optimization Level设置为Fastest, Smallest [-Os]; 将build setting 中的Strip Debug Symbols During Copy设置为YES(COPY_PHASE_STRIP = YES),这样能够减少编译出二进制文件的尺寸。这里提到的这些设置在Xcode工程中对于Release的配置是默认的。

警告:这些设置会让你的程序很难debug。在通常开发环境build中不建议这样设置,

Target针对较少的CPUs

默认状况下,Xcode工程都配置为:对程序指定的特定CPU类型作优化处理,以生成相对于的可执行文件。不一样的硬件,将运行不一样的可执行代码。虽然这样优化后的程序,只能针对某些设备运行,可是这大大减少可执行程序的大小。

要想只设定特定类型的CPUs,能够修改build setting中的Architectures,将其从Standard $(ARCHS_STANDARD)修改成你但愿支持的列表中对应的特定类型CPU。有效的CPU名称列在Valid Architectures (VALID_ARCHS) build setting中。请不要修改Valid Architectures设置项,最好由Xcode管理。

Assets

对应用程序作一个完整性检查

利用Inspecting Your App中介绍的流程,对.app bundle作一个全面的检查,以了解那些是真正须要用到的。在程序中,常常会包含一些额外的文件,例如readme之类的,这些历来都不会被用到。

将数据从代码中剥离出来

将全部的资源(例如很长的字符串)从代码中剥离出来,并存入外部文件,这样会减少最终文件下载的大小,由于这些文件的压缩效果更好。(参考iOS App Store Specific Considerations中的完整介绍。)

Image Assets

尽可能使用8-bit图片

使用8-bit的PNG图片,比32-bit的图片能减小4倍的压缩率。因为8-bit的图片支持最多256种不一样的颜色,因此8-bit的图片通常只应该用于一小部分的颜色图片。例如灰度图片最好使用8-bit。

针对32-bit的图片尽可能使用高压缩的比率

利用Adobe Photoshop的Save For Web能够减少JPEG和PNG的图片大小。在Xcode中,默认状况下,会自动的使用pngcrush来压缩.png图片。

Audio Assets

音频的压缩

参考WWDC中的Audio Development for Games,里面介绍了如何有效的处理音频。常规来讲,咱们要使用AAC或MP3来压缩音频,而且能够尝试下降一下音频的比特率。有时候44.1khz的采样是没有必要的,稍微低一点的比特率也不会下降音频的质量。

相关文章
相关标签/搜索