原理
在项目编译期间遍历intermediates/res下的图片资源,对于符合压缩条件的进行webp压缩,不符合的进行简单的png或者jpg压缩。
实现思路
- 排除icon图片 解析AndroidManifest.xml 获得icon(google不推荐对icon图标转webp)
- 获得需要打包的图片资源,通过android gradle 插件 api获得预处理资源目录 build/intermediates/res/merged
- 遍历res目录获得所有图片,根据minSdkVersion选择压缩/转换 图片
限制:不能开启aapt2,aapt2目前对合并的资源做了除了,导致遍历时无法识别到对于资源。(android-gradle 3.0.0之后: android.enableAapt2=false)
目前demo已经实现,但是前提是不开启aapt2的情况下,aapt2所做的事情可以查看相应文档:https://developer.android.com/studio/command-line/aapt2