当前位置: 首页 > 科技观察

教程:如何减小iOS应用程序的大小?

时间:2023-03-16 12:20:01 科技观察

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