一方面,在发布android apk版本的时候,往往需要对apk空间进行优化。另一方面,用户在应用市场下载安装时,往往会将apk的大小作为一个考虑因素。所以合理的apk大小是必要的。
近期在新项目调优时,发现apk大小较之前增加了6M多。使用Android Studio自带的apk analysis发现如下图:
举例说明,优化前,drawable文件夹下面的xxhdpi占3.2M。
优化后:,xxhdpi占1.2M。
如果我们对项目中的所有资源文件都同等程度的优化,那么我们的apk将缩小很大的空间,运行也会较之前更快,内存占用也会更小。
这里采用的工具是pngquant,是一个开源的工具,可以对png图片等进行几乎无损的压缩,而且可以自行设置压缩比。为了能一次性压缩文件夹下面的png图片,用python写了个批处理的小脚本。
代码如下:
#!/usr/bin/python
# -*- coding:utf8 -*-
import os
print os.getcwd()
files = os.listdir(r'/root/vic/drawable_sources/src')
display_size = "ls -lht ./temp/*.png"
def command():
return "pngquant -f --ext .png --quality 80-80 ./temp/*.png"
for file in files:
if (not os.path.isdir(file) and (file.endswith('.png') or file.endswith('.PNG'))):
os.system(command())
os.system(display_size)
注意
这里采用压缩比为80%,相对比较保守。报错处理
批处理之后导入项目,编译报错如下:
该报错初步感觉是资源文件出了问题,通过beyandcompare比较之后发现,文件夹下面存在.9.png图片,应该是pngquant工具还不支持对.9.png图片的处理,去掉这类图片的替换,项目就构建成功了。