前言:
- 使用ASM在编译期修改字节码来完成各种功能(统计方法耗时、全埋点统计...),就需要开发Gradle插件。开发插件中遇到问题排查使用日志输出效率太低了,能断点调试的话就更好了。其实已经有很多文章写了调试插件的方法,但是自己照着他们的步骤下来还是遇到一些问题,把这些问题记录下来方便大家少走弯路。
- Android Studio版本是3.5.2,Gradle版本是3.5.1
1.点击【Run】->【Edit Configurations...】:
2.然后点击左上角的【+】,选择【Remote】:
3.名字随便起,把命令行参数复制下来,【Use module classpath】选择要调试的插件,其他默认即可,然后点击【OK】:
这样服务端就搞好了,稍后我们需要配置客户端调试器让其连接过来,就可以调试了
4.在目标项目新建gradle任务并连接到服务端
在目标项目(即引入插件的那个项目),打开gradle目录,启动模块一般都是app,所以我们展开到【:app】->【Tasks】右击【build】选择create
5. 在打开的界面把第3步复制下来的内容粘贴到【VM options】,并且将suspend=n改为suspend=y然后点击【OK】:
6. 【:app】->【Tasks】->【Run Configgurations】会生成一个任务,最终在最终就是下边这个样子:
7. 现在可以开始调试了,在插件代码里面需要调试的地方打好断点,双击我们新建的gradle任务:
8.将工具栏的运行选项改成我们新建的远程调试那个选项,没有取名字的话默认就是【unnamed】,然后点击启动调试的图标:
启动成功会有如下输出:
9.目标项目的调试器很快就会连接到我们建立的服务端并自动跳转,遇到断点则会断下来:
问题:
- 断点只能进入Plugin的apply方法,不能进入Transform的transform方法,clean项目再执行上面步骤7、8