本文会讲解如何在 IDE(AS、Intellij)下 debug 断点调试注解处理器 APT(Annotation Processing Tool) 和 gradle plugin,帮你摆脱只能打印日志调试的窘境。
调试步骤
- 设置 Remote configuration
- 打开 Edit Configurations,
- 点击左上角 + 号,创建一个 Remote configuration,上面名字随便写,我写了 debug,port 端口设置为 5005,点击 ok 即可。
- 在 IDE Terminal 下,输入如下命令:
1 | ./gradlew clean :moduleName:assembleDebug -Dorg.gradle.debug=true --no-daemon |
之后这个进程就会一直等待,知道我们 attach 我们的调试进程进来。执行命令后如图:
- 下断点
这一步需要你去具体代码里打上断点,比如:android apt 去具体 abstractProcessor 处理器类打断点。
- 启动远程调试器
- 点击 debug 按钮连接上远程调试器进行调试
- 可以看到 connected to target VM 等信息输出就表示已连接到了远程服务器,之后就是正常的调试了
- 连接上远程服务器之后,可以发现我们刚刚运行的命令已经开始执行了,这时候静代码执行到我们断点处
最后附上一张调试的图片:
遇到的错误
- Android APT 死活不能自动生成?
由于 Android Gradle 构建版本问题引起,之前设置的是 gradle 版本 5.1.1 + android gradle 3.4.1,修改成 4.4 + 3.1.4 解决。建议 3.3.2 + 4.10.1 以下都可以。具体可以参考这篇博客。
总结
调试步骤其实很简单,分如下两步即可:
- 新建 remote target
- 在命令行输入执行
./gradlew --no-daemon -Dorg.gradle.debug=true :moduleName:assembleDebug
- 之后选择刚刚创建的 remote target,然后点击调试按钮即可