减小程序安装包大小的相关技巧

转载 2015年11月18日 20:29:46

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

在做任何相关优化之前,我们需要做一些权衡。通过权衡,可以知道把优化的重点集中在什么地方。本文提到的一些技术缺点我们也需要做出考虑,我们必须考虑相关影响,以确保做出正确的决定。如果不做权衡的话,我们无法知道需要对程序做出什么样的改变。

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

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

当让我们也可以通过使用: Xcode的Archive命令来构造出.ipa文件——该文件与提交到App Store上的格式基本一致。

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

iOS App Store相关因素
作为提交到App Store中app里的可执行文件是被加过密的。加密的副作用是可执行文件的压缩效果没有之前的好了,因为加密会隐藏一些细节问题。因此,从App Store下载下来的.ipa文件大小要比从本地build出来的.ipa文件大。

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

如果你选择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的采样是没有必要的,稍微低一点的比特率也不会降低音频的质量。

谈谈 Qt 程序安装包的大小,以及简要打包指南

(本文是水木社区KDE与Qt编程技术版版主的文章,我觉得写的很好,就转载过来了,原文地址:http://hgoldfish.com/blogs/article/103/)经常看到网上有些论调说 Qt ...

Android程序安装包APK的制作

完成Android项目后,需要将程序打包成APK文件(Android Package),其后缀名为".apk"。打包的APK文件可以在Android模拟器或者Android手机上安装运行。 Andr...
  • qualcent
  • qualcent
  • 2011年11月11日 13:53
  • 10316

C#软件winform程序安装包制作

转自:http://jingyan.baidu.com/article/b2c186c8e26f2ac46ef6ff3a.html 使用vs2010 winform程序开发的软件的人比较多,程序的开...
  • mountzf
  • mountzf
  • 2015年08月30日 15:59
  • 2567

Android应用程序安装包签名

转载自:点击打开链接 1.Android 应用程序都必须被签名,系统不会安装没有进行签名的应用程序。 2.ADT 工具会自动用默认密钥和证书(~/.android/debug.keystore...

Oracle oledb 打包并集成到程序安装包(VC ADO访问Oracle)

VC ADO访问Oracle Oracle oledb 打包并集成到程序安装包 安装程序集成oracle发布
  • plfl520
  • plfl520
  • 2014年05月10日 15:33
  • 1287

QT程序安装包制作(windows)

QT程序设计完毕时,我们就要发布自己的程序,发布程序有两种方法:一是静态编译,二是制作程序安装包。 静态编译好麻烦,我从来没有成功过,所以我用了动态编译方法,设计完成时,用release方式编译...

用inno Setup做应用程序安装包的示例脚本(.iss文件)

用innoSetup做应用程序安装包的示例脚本(.iss文件),具体要看innoSetup附带的文档,好象是pascal语言写的脚本。 示例1(应用程序.exe,客户端安装):;{089D6802-...
  • Augusdi
  • Augusdi
  • 2013年02月02日 10:06
  • 3756

android 开发之 使用Android系统隐藏api 读取*.apk 程序安装包信息

android 开发之 使用Android系统隐藏api 读取*.apk 程序安装包信息 原文在这里 http://www.devdiv.com/forum.php?mod=viewthre...

NSIS:制作C#应用程序安装包

——摘录自  轻狂编程资源网            NSIS 是“Nullsoft 脚本安装系统”(Nullsoft Scriptable Installation System)的缩写,它是一个免...

一次.NET Web应用程序安装包的制作经历:Sql数据库安装的3种方式

一次难得的安装包制作经历,因为之前从没有制作过安装包,那就免不了遇到问题,在摸索和学习中获得了不少宝贵经验,在这里我将用图文并茂的形式详细描述一下流程及主要难点问题的解决方法,希望对需要的朋友有所帮助...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:减小程序安装包大小的相关技巧
举报原因:
原因补充:

(最多只允许输入30个字)