网上搜了很久,没发现一篇靠谱的,很多都是版本比较老的Intellij和gradle版本,和现在的都不合适。
这里的教程是指 Intellij 2017,以及Android Studio 2.2以上,gradle 2.14.1以后的版本。
以DexKnifePlugin为例,
1、创建remote调试任务:
选择 Eidt Configurations
点左上角的 + 号,选择 remote(目前为 remove JVM debug)。Name可以随意命名,其他配置可以不用动,端口就5005,点ok关闭
2、打开Terminal窗口(一般在底下的工具栏上),在当前的工程目录下,输入 :
gradlew assembleDebug -Dorg.gradle.daemon=false -Dorg.gradle.debug=true。
assembleDebug 可以为其他的构建命令,但参数-Dorg.gradle.daemon=false -Dorg.gradle.debug=true要有。
或者新建一个cmd或bat文件,放入命令,不用每次都输入。
要确保gradlew 可运行,有问题的上网搜,这里不赘述。
3、在Plugin代码中打好断点:
注意,要调试*.gradle脚本,gradlew assembleDebug 改为 gradlew build。
这里最重要的是被调试的构建过程不使用当前的IDE直接运行,最简单就是使用Terminal。
在Terminal的命令中点回车后,会出现 To honour the JVM settings for this build a new JVM will be forked. 这行提示,并且会一直停在这里,说明在等待调试。
4.开始调试
这时候选择第二步中创建的remote任务,并使用调试启动(下图最右边的调试按钮),而不是make或直接运行:
注意,这时候窗口的焦点实在debug的输出窗口上,Terminal还是被挂起的,要点下Terminal窗口,gradle任务才会继续执行,并进入调试状态。
另外,其他的状况我没遇到过,多请自行研究和解决,并再此评论你遇到的问题和解决方法。