Unity减少安装包的大小总结
前段时间整理项目资源时翻译了很多官方文档,实践的时候其实都是Texture的压缩,又继续搜索了很多减少安装包大小的文章,本文来做个总结
一.通用
1.替换jpg,使用psd,减少重复资源(设计说这个应该是使用psd软件来处理,不是用psd替换jpg)
2.剔除不必要的资源
3.打包时查看log纪录,由此判断需要减少的文件类型
4.图片及音频优化
①.图片优化
在Unity Console界面右上角点开Open Editor Log(可能需要先输出一遍安卓包)
找到如下:
知道哪些资源比较大之后 :
- 一个个压缩
- 打包成图集
打包图集策略可以看雨松大大的文章 :
- 第三个方法是群里一个朋友提出的,把全部素材的分辨率调成2的倍数,统一压缩比较好
②.音频优化
5.优化,压缩网格和动画,减少文件大小
6.剔除system.dll和system.xml.dll,尽量不要依赖他们,或用其他组件来代替。
上面介绍的方法,是对于图片的压缩以及资源的减少,不过这些处理都会极大地影响到了游戏的画面质量和运行时的流畅程度,影响到用户的体验度。
针对于目前这种困境,不少的服务商推出了分包技术,而传统的分包是将资源切割,分段下载,进入游戏前进行二次下载;处理游戏包体瘦身时,往往采用删除代码,精简资源甚至作资源取舍的方式;在资源加载时,玩家必须要中断游戏,并在等待中进行缓慢的资源加载。
据说爱加密公司的爱压缩最多能压缩包体的80%,hhhhh,不过就我现在项目这点资源,还用不上这么牛逼的技术
7.分包技术
①.首包(里面包含了最最必要的资源)。
②.首次进入包加载(加载游戏运行必要的资源)。
③.游戏运行中资源加载(按每个游戏不同各自定义,以场景和单位个体为主要,在画面进入时加载资源,加载结束后再运行并显示)。
二.减少Android包大小
1.取消x86架构的兼容选项
一般情况下android平台不需要编译x86的版本,因为设备太少了,需要考虑对应平台的时候可以单独打一个x86版本的包。除非不考虑apk的包大小的时候,才会选择FAT兼顾兼容性。
差不多减少了30M左右
三.减少IPA包大小
unity空项目导出xcode项目安装后104M,优化后,因为是空项目,可能有些参数要比较复杂才会减少的比较可观,因此也放在后面记录下
1.配置编译选项
(Levels选项内)Generate Debug Symbols 设置为NO,这个配置选项应该会让你减去小半的体积。注意这个如果设置成NO就不会在断点处停下
设置为No后90M
2.舍弃架构armv7
armv7用于支持4s和4,4s是2011年11月正式上线,虽然还有小部分人在使用,但是追求包体大小的完全可以舍弃了。valid Architecture
对于我来说,安装设备是需要ARKit支持的,所以完全可以去掉,优化后89.8M,很神奇就减了这么点。。。。哈哈,聊胜于无吧
3.去除符号信息
Strip Debug Symbols During Copy 和 Symbols Hidden by Default 在release版本应该设为yes,可以去除不必要的调试符号。Symbols Hidden by Default会把所有符号都定义成”private extern”,设了后会减小体积。
优化后87.1M
3.XCode工程中将Bitcode由yes改为no (已默认为No)
bit code 解释:http://www.cocoachina.com/ios/20150818/13078.html
xcode相关设置:http://blog.csdn.net/skylin19840101/article/details/51452594
不过我项目打包出来本来就是为No
4.编译器优化级别(没啥变化,可能因为是空项目)
Build Settings->Optimization Level有几个编译优化选项,release版应该选择Fastest, Smalllest[-Os],这个选项会开启那些不增加代码大小的全部优化,并让可执行文件尽可能小。
6.Strip Linked Product(默认为Yes)
DEBUG下设为NO,RELEASE下设为YES,用于RELEASE模式下缩减app的大小;
最后仔细分析了IPA包的大小 :
发现Frameworks文件夹大小为 :32.5M(然后在xcode的framework发现vuforia.framework,ilcpp2.a很大)
Data:12.8M
conntenttest : 25.5M
后续再优化
参考博客:
1.
2.
3.
4.
5.
6.
7.
8.