android app的构建过程中有时候会报错,而看到的log里只显示是gradle的问题,此时我们需要跟进gradle源码去查看具体问题,接下来就看下如何断点调试Android Builder源码。
gradle 源码依赖
想要调试Android Builder源码,首先需要进行源码依赖。
在工程根目录下创建一个目录,命名buildSrc(写过gradle插件的都知道这个文件夹的作用),然后创建一个build.gradle文件,这样就完成了源码依赖,具体如下。
repositories {
google()
jcenter()
}
dependencies {
//版本根据实际情况
implementation 'com.android.tools.build:gradle:4.1.1'
}
Sync后可以看到 External Libraries里多了gradle的源码依赖:
我们进入AppPlugin了,在apply中加个断点。(Android Builder的起始位置)
配置remote,启动gradle调试
- 添加配置
Edit Configurations → 添加新配置 → 创建Remote → 设置名字name
→ host: localhost → port: 5005 → OK (除了名字,都是默认的)
- 执行构建命令
在Terminal中输入如下:(携带
-Dorg.gradle.daemon=false -Dorg.gradle.debug=true作为参数)
./gradlew :app:assemnble -Dorg.gradle.daemon=false -Dorg.gradle.debug=true
此时的结果如下:
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/6.1.1/userguide/gradle_daemon.html.
> Starting Daemon
- 点击调试按钮,即可进行调试
切到刚才的remote配置,点击调试按钮,即可进入apply断点。
注:调试调试Android Builder源码本质是调试plugin 'com.android.application'这个gradle插件,因此该方法还可以用来调试其他plugin
关于Android Builder源码解析,可以阅读以下文章