Gradle调试:断点调试Android Builder源码

1,921 阅读1分钟

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'
}

image.png

Sync后可以看到 External Libraries里多了gradle的源码依赖:

image.png

我们进入AppPlugin了,在apply中加个断点。(Android Builder的起始位置)

配置remote,启动gradle调试

  1. 添加配置 Edit Configurations → 添加新配置 → 创建Remote → 设置名字name
    → host: localhost → port: 5005 → OK (除了名字,都是默认的)

image.png

  1. 执行构建命令 在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
  1. 点击调试按钮,即可进行调试

切到刚才的remote配置,点击调试按钮,即可进入apply断点。

image.png

注:调试调试Android Builder源码本质是调试plugin 'com.android.application'这个gradle插件,因此该方法还可以用来调试其他plugin

关于Android Builder源码解析,可以阅读以下文章