调试插件
1、创建配置
点击Edit Configurations,点击+号,然后点击Remote。
生成一个Remote Debug的配置,Name可以随意修改,但红框圈出来的地方不要修改。
2、创建调试环境
在工程的根目录下开启Gradle远程调试,如下所示: export GRADLE_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"
3、调试阶段
将需要调试的插件打上断点,然后在根目录下开始执行插件的任务,如下所示: ./gradlew task --no-daemon -Dorg.gradle.debug=true
这个时候会提示Listening for transport dt_socket at address: 5005
,表示调试环境已经创建完成了。
下一步,我们需要点击debug的断点,开始进入调试。
4、结束调试
当调试结束后,我们需要关闭远程调试,即将GRADLE_OPTS置空。 export GRADLE_OPTS=""
调试第三方插件
第三方插件一般都没有源码,所以在开始上述的调试步骤之前,我们还需要将第三方插件的源码进行导入。第三方插件一般是在工程目录下的build.gradle脚本里面使用classpath进行声明,如下所示:
如果我们需要调试上述的插件,我们需要将classpath换成implementation,即: implementation "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
将该依赖放置到需要调试的模块依赖下,sync同步后,再使用上面步骤开启调试。
在调试第三方插件时,发现没跑到断点任务就中断了,提示的错误信息与上面将插件的依赖导入有一定关联。这个时候可以将依赖注释掉,然后再开启调试,也不知道是不是有缓存的缘故,断点居然也能成功了。但是第二次就不生效了,暂时未想通是什么原因。