A:本文收集了一些减小程序安装包大小的相关技巧(首次下载安装程序时)。如果是升级程序,可以阅读这篇文章(减少iOS应用程序升级所需的下载大小)(这与第一次安装的工作方式不同)。检查应用程序首先检查.app包以查看包中哪些文件占用的空间最多。在进行任何相关优化之前,我们需要进行一些权衡。通过权衡,您可以知道优化的重点。我们还需要考虑本文提到的一些技术缺陷,我们必须考虑相关的影响,以确保做出正确的决定。如果不进行权衡,我们无法知道需要对程序进行哪些更改。首次安装iOS程序时,需要下载一个完整的.ipa文件。(注意这与升级不同)。实际上,.ipa文件是一个.zip结构。我们可以这样找到程序的.ipa文件:从AppStore下载应用,然后用iTunes同步iOS设备,然后查看目录:~/Music/iTunes/iTunesMusic/MobileApplications,你可以找到它的.ipa文件。当让我们也使用:Xcode的Archive命令来构建.ipa文件时——该文件与提交到AppStore的格式基本相同。要查看.ipa文件,只需将.ipa文件修改为.zip,然后使用Finder将其解压缩。右键点击解压后的.appbundle,选择ShowPackageContents,查看里面的资源文件。这样我们就可以看到哪些文件占用的空间最多。请记住:.app包是压缩的,有些文件压缩得比其他文件好,所以压缩很重要。但是,一般来说,压缩前的最大文件仍然是压缩后的最大文件。我们可以删除一个文件,然后在Finder中右击选择压缩,这样我们可以更准确的衡量文件的压缩效果。iOSAppStore相关因素在提交到AppStore的应用程序中被加密为可执行文件。加密的一个副作用是可执行文件不像以前那样压缩,因为加密隐藏了一些细节。因此,从AppStore下载的.ipa文件的大小要大于从本地构建下载的.ipa文件。注意:从代码中删除长文本内容、表格数据等并将它们添加到外部文件将减少最终安装程序下载的大小——因为这些文件压缩得更好。如果你在Organizer窗口中选择了一个archived,然后点击EstimateSize,Xcode就可以对最终分发的程序的大小进行估算。此处不考虑MacAppStore上的iOS程序和企业级部署。BuildSettings编译选项将buildsetting中的OptimizationLevel设置为Fastest,Smallest[-Os];将构建设置中的StripDebugSymbolsDuringCopy设置为YES(COPY_PHASE_STRIP=YES),这样可以减少编译后的二进制文件的大小。这里所说的设置是Xcode工程中Release的默认配置。警告:这些设置会使您的程序很难调试。在一般的开发环境搭建中不推荐这个设置。Target以较少的CPU为目标。Xcode工程默认配置为:优化程序指定的特定CPU类型,生成相应的可执行文件。不同的硬件会运行不同的可执行代码。虽然这样优化后的程序只能在特定的设备上运行,但是却大大减小了可执行程序的体积。要仅设置特定类型的CPU,您可以将构建设置中的Architectures从Standard$(ARCHS_STANDARD)修改为您要支持的列表中对应的特定类型的CPU。有效的CPU名称列在有效架构(VALID_ARCHS)构建设置中。ValidArchitectures设置项请不要修改,最好由Xcode管理。Assets对应用程序进行健全性检查。使用检查您的应用程序中描述的过程对.app包进行全面检查,以了解哪些是真正需要的。在程序中,经常会有一些额外的文件,比如readme,这些文件是永远不会用到的。从代码中剥离数据从代码中剥离所有资源(例如非常长的字符串)并将它们存储在外部文件中,这将减少最终文件下载的大小,因为这些文件压缩得更好。(参考iOSAppStoreSpecificConsiderations中的完整介绍。)ImageAssets尽可能使用8位图像。使用8位PNG图片,与32位图片相比,压缩率可以降低4倍。由于8位图像最多支持256种不同的颜色,因此8位图像通常只应用于少量彩色图像。例如,灰度图像最好使用8位。对于32位图像,尽量使用高压缩率。使用Adob??ePhotoshop的SaveForWeb减小JPEG和PNG图像的大小。在Xcode中,默认情况下,pngcrush会自动用于压缩.png图像。AudioAssets的音频压缩参考WWDC中的AudioDevelopmentforGames,描述了如何有效地处理音频。通常,我们使用AAC或MP3来压缩音频,我们可以尝试降低音频的比特率。有时44.1khz采样不是必需的,稍微低一点的比特率也不会降低音频质量。
