安卓Gradle插件开发-ASM字节码修改-AutoRegister实现3

自定义一个transform任务 实现jar包和目录扫描
大家跟着我做 反正我敲代码速度也不快
大家可以看到这是android extension 简单翻译就是扩展类


image.png

这里有对应了我们android{
}
这个里面的配置项,大家可以看右边这个图
好拿到这个之后我们就可以通过它注册一个自定义的transform任务啦

我们编辑完了 需要更新本地库 所以我们要进行一次upload

然后我们随便选了个任务比如assembleDebug 然后果然输出了transform这个任务信息


image.png

试试

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

image.png

先遍历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的一个任务

image.png

可以看到 我们可以得到所有的jar包 那我们想要找的类其实也有可能在这里
但是其实我们还有一个地方存在class
就是文件夹 我们去遍历一下

我们可以看到这么一个路径
dir file---C:\Users\Administrator\AndroidStudioProjects\TestPlugin\app\build\intermediates\javac\debug\classes
咱们进去看一下

image.png

我们可以看到这里面也有我们的class源文件

这样我们借助transform应该就能拿到所有的class文件 那我们就可以开始aop其实就是找到我们要找的类

然后我们改一下他的字节码

下节课我们开始 把目标类找到 然后完成一些类的存储 后台我们再通过ASM完成代码植入

okbye

你可能感兴趣的:(安卓Gradle插件开发-ASM字节码修改-AutoRegister实现3)