TinyPngPlugin

Introduction: android tiny png plugin
More: Author   ReportBugs   
Tags:

TinyPngPlugin是一个 Android Gradle 插件,可以批量压缩项目中的图片

  • 兼容 Android Gradle Plugin 2.x-3.x
  • 自动识别 sourceSets,无需为 tinypng plugin 配置资源路径
  • 可配置若干 api key,压缩失败自动更换 api key,避免每月 500 上限
  • 可配置图片白名单
  • 可配置压缩失败时是否终止 Task
  • 默认不压缩 9.png 图片
  • 同名替换文件,新增文件都会压缩

使用方式

  • 在工程根目录中的build.gradle文件中的 buildscript.dependencies中添加classpath "com.wanjian.plugin:tinypng:0.0.6" 例如:
buildscript {
    repositories {
        google()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
        classpath "com.wanjian.plugin:tinypng:0.0.6"
    }
}
  • 在各 module 的build.gradle文件添加apply plugin: "com.wanjian.tinypng",同时在该文件中配置如下。

enable控制该 module 是否开启图片压缩。

abortOnError控制压缩失败时是否终止 Task。

skip9Png是否不压缩 9.png 图片,默认不压缩。tinypng 压缩的 9.png 图片可能导致打包失败

appendCompressRecord是否在 compressed_pictures 文件中追加压缩后的图片的 MD5 值。默认 false。false:当 productFlavors 中配置的资源路径不同时,编译不同的 flavor 时,压缩的图片的 md5 值会相互覆盖。true:只追加记录,不删除

keys配置压缩图片需要的 tiny png api key,每个 key 每月最多可以压缩 500 张图片。 可以去这Tiny Developers Page 申请 key,每个 key 需要一个邮箱,可是使用临时邮箱

tinyPng {
    //http://www.bccto.me/  临时邮箱申请 key
    //把下面的 keys 换成你申请的 key,建议多配置几个
    enable true
    abortOnError false
    skip9Png true
    appendCompressRecord false
    keys = ["FBYz4WZR5tj9S4Jv4tCL5m3KgrQnXBgP",
            "1sQXBgXvvhfx5j1l10DKRvVvrlD3rcS4",
            "DdMZxbJ7W9K15hSZ6G5QVNbqh7PKGxjX",
            "xS2CNP0w7Sp4Xz7P1DvcCZNsQ9QJNsyb",
            "X7z8kgM3zw1Fr3R8RQTkhN3Kynx8xpdX",
            "mT1td5Qt6JW7yy0n2pkJd6ZwBxmHsjBy",
            "ctW1PG2wJhpJYxDhcj4NSgQ14WFxC7gb",
            "SWxfXRhZ6H1wnXnd3j5HmbK8wCpvdH0X",
    ]
}
  • 可以在各 module 下添exclude_pictures.txt文件,资源根目录下的 drawable-xx 文件夹及 mipmap 文件夹中的图片路径(以该 module 作为根路径)包含该文件配置的路径的图片不会压缩
  • 也可以手动调用 ./grawablew tinyPngxxx 压缩图片
  • 各 module 下的compressed_pictures文件是 tinypng plugin 自动生成的,不要手动修改里面的内容,该 module 中压缩后的图片的 md5 值都记录在这里面
Support Me
Apps
About Me
Google+: Trinea trinea
GitHub: Trinea