为什么要检测图片资源?
- 避免不小心把未压缩 , 不合适的图片资源打入apk中 , 造成apk过大
- 图片打入apk前 , 可以自动化转换 , 压缩
- 思路一:使用gradle在aapt编译期 , 扫描汇总资源的文件夹 , 过滤出不符合要求的图片资源 , 并抛出异常中断编译
- 思路二:是思路一的进阶 。还是在使用gradle在aapt编译期 , 查找有没有合适的gradle task , 提供给我们遍历所有资源的机会
简单对gradle插件实现进行复习插件搭建
- 新建一个模块
- 配置好该模块的上传配置(mvn.gradle)
- 在build中 , 对gradleApi进行依赖
- scss复制代码
- Apply plugin: 'kotlin' //插件如果使用kotlin实现 , 需要依赖kotlindependencies { implementation gradleApi() implementation localGroovy() implementation 'com.Android.tools.build:gradle:3.4.2'}
- 在mAIn下面新建resources.META-INF.gradle-plugins文件夹
- 在该文件夹中创建一个和module同名的.properties文件 , 在里面配置上你的插件入口类
- 例:
- arduino复制代码
- implementation-class=com.xxx.checkbigimage.image.ImagePlugin
可以使用以下方法 , 从我们使用插件的地方获取到对插件的配置
Python/ target=_blank class=infotextkey>Python复制代码project.extensions.create("config", Config::class.JAVA)mConfig = project.property("config") as Config
Config是一个java bean数据类"config"是我们在build中的配置名称
这样一个简单gradle插件就实现了图片资源检测插件实现上面说了为什么要实现这样一个插件和该如何实现一个gradle插件 , 那么下面就具体介绍该插件的实现过程
想要的功能
- 检测和拦截功能
- 检测是否有大小超标的图片
- 检测是否有宽高超标的图片
- 拦截非webp资源 , 并进行提示
- 自动化压缩
- 自动压缩png , jpg等资源
- 白名单设置
- 一些统计功能
瞄准task挂钩既然是要hock android打包的编译过程 , 那就要寻找android打包时 , 合适的task
想hock task , 首先应该拿到任务task集合在android插件编译生成apk的过程中 , 有好多task都可以生成apk , 它们的名字基于Build Types 和 Product Flavor 生成 。那么我们怎么拿到具体生成apk的task组呢?
为了解决这个问题 。android插件有几个属性 , 就是我们平常配置的变体(所谓的环境) , androd中有三类变体
- applicationVariants(只适用于 app plugin)
- libraryVariants(只适用于 library plugin)
- testVariants(app、library plugin 均适用)
属性名
属性类型
说明
name
String
Variant 的名字 , 唯一
description
String
Variant 的描述说明
dirName
String
Variant 的子文件夹名 , 唯一 。可能有不止一个子文件夹 , 例如 “debug/flavor1”
baseName
String
Variant 输出的基础名字 , 必须唯一
outputFile
File
Variant 的输出 , 该属性可读可写
processManifest
ProcessManifest
处理 Manifest 的 task
aidlCompile
AidlCompile
编译 AIDL 文件的 task
renderscriptCompile
RenderscriptCompile
编译 Renderscript 文件的 task
mergeResources
推荐阅读
- 把Android手机变成电脑摄像头,开发者倒苦水:40行代码搞定,但需要40个项目文件支持!
- 调料配方分析检测 检测调料配方需要到哪里检测
- 甲醛检测治理方法 甲醛检测治理方法有哪些
- 联想笔记本未检测到电池 笔记本未检测到电池
- tds水质检测多少为饮用水 水质检测多少可以直饮
- 怎么检验新iphone是不是翻新机 新苹果手机怎么检测是否翻新机
- 核酸检测怎么做的疼不疼 核酸检测怎么做痛苦吗
- 支付宝如何预约上门核酸检测报告 支付宝如何预约上门核酸检测
- 做核酸检测之前吃了东西会影响结果吗 核酸检测前吃了东西怎么办
- e视力表标准检测方法有哪些 e视力表标准检测方法