Unity构建APK的简单压缩

        Unity是一款支持多平台,可以轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型的综合型游戏开发工具,是一个全面整合的专业游戏引擎。

        前一段时间做的一个Unity的项目中有对APK包进行压缩的需求,所以就研究了一下这个APK包体积的压缩,下面就谈谈我对这个APK压缩的理解。

一、对APK中的内容分析:

 在压缩之前,首先要了解APK包中都包含了什么,下面是使用解压工具将APK包中的内容展示出来:

Unity构建APK的简单压缩_第1张图片


Unity构建APK的简单压缩_第2张图片

 其中res这个文件夹中包含的是游戏的图标,这里各个尺寸的游戏图标:

Unity构建APK的简单压缩_第3张图片

下面是关于Unity的设备筛选器,一个空的Unity工程打出来的包体都能打到17M,就是因为这个设备筛选器:

Unity构建APK的简单压缩_第4张图片

这是选择所使用的设备的CPU架构,分别是X86和ARMV7,如果这两种设备都需要用到的话,就需要用到FAT(兼容模式)了。这两种设备兼容器,所占到的内存都是8M左右,一般情况下选择ARMV7的比较多,下面是设备筛选器在APK包中的位置,和对两种CPU架构的详细解释。

Unity构建APK的简单压缩_第5张图片

https://www.google.com/search?q=c&oq=c&aqs=chrome..69i60l3j69i57j69i60j5.1131j0j4&sourceid=chrome&ie=UTF-8

下面是assets中的各种游戏资源:

Unity构建APK的简单压缩_第6张图片

Managed中存放的就是所依赖的各种类库和混淆后的代码:

Unity构建APK的简单压缩_第7张图片

二、对APK进行压缩

1、设备筛选器优化:

首先就是在打包之前确定你所依赖的设备(X86或者ARM架构)数据来自于:http://hwstats.unity3d.com/mobile/cpu.html

可以看到,x86的用户只有1.3%。对于绝大多数用户来说,Device Filter选择ARMv7可以减少.apk包体的大小,同时又不会影响绝大多数用户的使用。或者可以选择发布不同的.apk版本,经由平台判断用户使用的机型,进而下载对应的.apk版本。

2、图集打包:

游戏中最占用内存的就是图片,而对图片处理的最常用的方式就是SpritePacker也就是图集打包(我们项目使用的是UGUI),具体使用方法参考:http://blog.csdn.net/liang_704959721/article/details/77986038

3、对图片进行处理:

Inspector面板中可以对图片的进行一些压缩,在不影响项目质量的情况下可以使用:

Unity构建APK的简单压缩_第8张图片

Format中各种图片格式:

Unity构建APK的简单压缩_第9张图片

各种格式数据可参考官方文档:https://docs.unity3d.com/ScriptReference/TextureFormat.html

4、剔除不必要的资源。

5、优化、压缩网格和动画,减小文件大小。

6、使用AssetBundle进行资源的打包,AssetBundle是Unity引擎提供的—种用于存储资源的文件格式 ,它 可以存储任意一种Unity引擎能够识别的资源 ,例如模型 、纹理 、音频 、动画片段甚至整个场景等 。具体使用方法请参考:http://blog.csdn.net/u011484013/article/details/51253920

以上就是我对优化Unity生成的APK包包体优化的一些理解,希望可以对以后的开发有一些帮助。

Unity官方减少构建大小的文档:

https://docs.unity3d.com/Manual/ReducingFilesize.html

你可能感兴趣的:(Unity构建APK的简单压缩)