关注

为什么流式资源文件会让APK占用空间那么大?

 

问题

  • 我在StreamingAssets 文件夹中的文件并没有在APK中压缩。

 

原因

APK通常是zip文件。在这个文件中的文件可以使用各种压缩方法,最常用的是deflate 和 store

  • Deflate 是一个常见的zlib/lz77压缩算法。
  • Store 是未经压缩的原始数据。

Unity生成的APK会包含这两种文件,而历史资源文件总是使用store压缩方法。

Unity会在APK文件里面读取数据(通常是压缩过的)。但是,流式资源文件没有经过压缩处理,而是直接拷贝到文件结构中去的。

同样要注意其他与Unity格式无关的文件。如这一种情况,在StreamingAssets 文件夹下放一个很大的PSD图片文件,以便在提取内容和查找资源文件夹的时候可以在APK中找到它。

 

解决方案

如果需要对StreamingAssets文件夹中的文件压缩,这个压缩必须是对文件自身的压缩,例如:

  • 使用一个压缩过的文件(如PNG何JPG) - 不必使用占用空间大的格式(如PSD),因为这种格式是未经压缩处理的。
  • 使用压缩过的AssetBundles。
  • 使用如PNG Crush这样的压缩工具来减少资源文件的占用空间。

 

更多信息

请查看Android开发者指南reducing APK size来了解更多关于减少APK占用空间的信息。

 

这篇文章有帮助吗?
0 人中有 0 人觉得有帮助
还有其它问题?提交请求

0 评论

登录写评论。