问题
- 我在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占用空间的信息。