减小iOS应用程序的大小
Q: 怎样才能让我的程序安装包小一点,让程序的下载和安装更快速?
A: 本文收集了一些减小程序安装包大小的相关技巧(当第一次下载和安装程序时)。如果是针对升级程序的话,可以看这篇文章(减小iOS应用程序升级时所需下载的大小)(这与第一次安装使用的工作原理有所不同)。
检查应用程序
首先是检查.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的采样是没有必要的,稍微低一点的比特率也不会降低音频的质量。
转载于:https://blog.51cto.com/zp945/1534070
减小iOS应用程序的大小相关推荐
- [转]25个增强iOS应用程序性能的提示和技巧
在开发iOS应用程序时,让程序具有良好的性能是非常关键的.这也是用户所期望的,如果你的程序运行迟钝或缓慢,会招致用户的差评.然而由于iOS设备的局限性,有时候要想获得良好的性能,是很困难的.在开发过程 ...
- 25个增强iOS应用程序性能的提示和技巧 — 中级篇
本文由破船译自:raywenderlich 转载请注明出处:BeyondVincent的博客 _____________ 在开发iOS应用程序时.让程序具有良好的性能是非常关键的.这也是用户所期望的. ...
- 《iOS创意程序设计家》——第6.2节导航栏控制器UINavigationController
本节书摘来自异步社区<iOS创意程序设计家>一书中的第6章,第6.2节导航栏控制器UINavigationController,作者 林柏全,更多章节内容可以访问云栖社区"异步社 ...
- IOS应用程序发布到苹果APP STORE完整流程使用教程
参考: http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) htt ...
- Charles的iOS应用程序
Charles的iOS应用程序 Charles于2018年推出了iOS应用程序,现在可以在App Store搜索并下载.使用iOS版本的Charles,您可以捕获并检查iOS设备上的网络请求和响应,还 ...
- MindFusion.Diagramming iOS 应用程序
MindFusion.Diagramming iOS 应用程序 MindFusion.Diagramming for iOS 是一个原生 Swift 组件,可以让您渲染任何类型的流程图.组织结构图.类 ...
- ios项目传到github_使用GitHub Actions将iOS应用程序部署到TestFlight或App Store
ios项目传到github In this tutorial, we are going to configure a GitHub repository to deploy iOS app rele ...
- 【原创】第一个iOS应用程序
摘要 第一个iOS应用程序,包括获取控件,绑定事件,设置属性等内容. iOS Objective-C 目录[-] 第一章 窗口与应用程序 第二章 添加视图 2.1 从nib文件初始化视图 2.2 ...
- IOS应用程序发布到苹果APP STORE
参考: http://blog.csdn.net/mad1989/article/details/8167529(xcode APP 打包以及提交apple审核详细流程(新版本更新提交审核)) htt ...
最新文章
- linux服务器每秒并发处理数的计算方法
- avformat_alloc_output_context2 -22错误
- Windows域内的时间同步
- nginx只能访问80端口_nginx 访问不了非80端口
- TCP/IP 免费ARP
- 2、easyUI-创建 CRUD可编辑dataGrid(表格)
- Linux下apache+php+mysql配置攻略
- VM中的Linux安装jdk和tomcat
- 用DELPHI下载官方SVN中的示例原码
- 洗衣机测试点 思维导图
- 学英语尽量不要从背词汇表开始
- 这是一篇随笔 hello world
- PyMOL简单操作图文介绍
- ajax成功后没有执行函数,ajax请求成功但不执行success-function回调函数的问题
- 文本转思维导图(xmind)
- php打印出来乱码_PHP输出中文乱码怎么解决?
- win10 调用计算机,win10系统打开软件总提示是否允许程序修改计算机的解决方法...
- MongoDB 常见问题 - 解决找不到 mongo、mongod 命令的问题
- 微信小程序-MD5加密
- WordPress 函数大全
热门文章
- 2015 圣诞 限免软件分享
- SQL,C#查询Excel数据
- Linux常见问题三则:Executable Path Is Not Absolute
- C++ Primer Plus学习(八)——函数进阶
- 局域网ip冲突检测工具_“网络工程师培训”基础教程五:局域网
- mui获取css参数,Mui-获取时间-调用手机api
- JAVA注解行_java注解
- python django开发新闻聚合检索推荐_Django查询以检索符合相关选项卡上聚合条件的行...
- dedecms进入mysql后台_DEDECMS 爆严重安全漏洞 免账号密码直接进入后台
- python 输出颜色的设置