安卓Gradle插件开发-ASM字节码修改-AutoRegist
2020-07-10 本文已影响0人
呵呵_9e25
自定义一个transform任务 实现jar包和目录扫描
大家跟着我做 反正我敲代码速度也不快
大家可以看到这是android extension 简单翻译就是扩展类

这里有对应了我们android{
}
这个里面的配置项,大家可以看右边这个图
好拿到这个之后我们就可以通过它注册一个自定义的transform任务啦
我们编辑完了 需要更新本地库 所以我们要进行一次upload
然后我们随便选了个任务比如assembleDebug 然后果然输出了transform这个任务信息

试试
现在我们看看我们自定义transform任务能做啥
遍历所有输入文件 其实就是class的存放路径

先遍历jar包 我们看看到底有哪些jar包
//遍历所有输入文件
inputs.each {
//先遍历jar包
TransformInput input->
input.jarInputs.each {
JarInput jarInput->
//咱们先遍历jar包哈
project.logger.warn('jar---'+jarInput.file.absolutePath)
}
}
编写完插件代码 要上传一下 uploadAr..
BUILD SUCCESSFUL in 22s 成功 我们来打印一下jar包 我们执行一下app的一个任务

可以看到 我们可以得到所有的jar包 那我们想要找的类其实也有可能在这里
但是其实我们还有一个地方存在class
就是文件夹 我们去遍历一下
我们可以看到这么一个路径
dir file---C:\Users\Administrator\AndroidStudioProjects\TestPlugin\app\build\intermediates\javac\debug\classes
咱们进去看一下

我们可以看到这里面也有我们的class源文件
这样我们借助transform应该就能拿到所有的class文件 那我们就可以开始aop其实就是找到我们要找的类
然后我们改一下他的字节码
下节课我们开始 把目标类找到 然后完成一些类的存储 后台我们再通过ASM完成代码植入
okbye