Gradle系列7--调试Gradle插件

前面几篇关于Gradle插件的开发。在开发过程中,遇到问题就需要找出问题出在哪里。这个问题是自定义插件中还是其他地方?通常报错会给提示:

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

然后添加--info--debug选项或许可以解决。有时我们需要深入源代码找出问题发生时的情况,又或者想要跟踪代码的执行过程以了解原理等等。这种方式仍然称为“断点调试”。

工具

IntelliJ IDEA、Android Studio或者类似环境

断点调试

点击Edit Configurations

《Gradle系列7--调试Gradle插件》 debug-gradle-1.png

点开左边的“+”号,点击“Remote”

《Gradle系列7--调试Gradle插件》 debug-gradle-2.png
《Gradle系列7--调试Gradle插件》 debug-gradle-3.png

  1. 修改名称(不改默认Unnamed)
  2. Use module classpath这一项如果要调试顶级build.gradle保持默认就可以了,如果是gradle插件工程中的代码就选插件所在的模块。
  3. 默认远程调试的服务器是localhost:5005
  4. 点击”OK”

选中远程调试任务如图

《Gradle系列7--调试Gradle插件》 debug-gradle-4.png

在需要调试的地方打上断点,然后命令行执行调试任务

./gradlew tasks -Dorg.gradle.debug=true --no-daemon

上面执行tasks任务并打开Gradle的“调试模式”。运行时你会发现Gradle停止在远程配置调试器连接之前。

 > Starting Daemon

点击调试按钮就可以开始连接远程调试了。

概括

  1. IntelliJ(Android Studio) Edit Configurations点击+找到Remote点击创建远程配置
  2. 填写信息. Name自定义, 默认远程调试localhost:5005
  3. Search sources using module's classpath选择需要调试的插件模块
  4. 命令行执行任务调试: ./gradlew tasks -Dorg.gradle.debug=true --no-daemon,等待连接调试
  5. 源代码断点, 选择刚创建的调试配置, 点击 Debug Xxx(Shift+F9)

远程调试同样适用于注解处理器(Annotation Processor)

问题

Remote Configuration debugger **can not be attached.

  • 这是因为端口(默认5005)已经被另一个正在运行的Gradle守护进程占用了,简单的停止即可
    ./gradlew --stop
    

参看How to debug Gradle Plugins with IntelliJ

    原文作者:cntlb
    原文地址: https://www.jianshu.com/p/952f5aa52bb5
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞