Gradle 源码调试,详细步骤
加断点能更好的理解过程,因为可以看到运行时,各变量的值,原本你不好理解的地方,看了变量值后,可能就能理解了。
本文的背景是,打包的过程中报出 Duplicate class 错误,就是一个类在多个aar中出现了,造成了冲突,就想通过源码去了解 gradle 是怎么去处理的,在看源码的过程中,有些地方可能不好理解,那么 debug 可以实时看到变量值,很好的提升代码的理解。
1、先配置
菜单栏 Run->Edit Configurations
点击左上角的+,点Remote
取名字 ok
把gradle的源码拉到本地,从而可以查看
在模块下依赖一下gradle的源码,这样同步过后,可以在 External Libraries 中找到,注意一点,这里最好用 compileOnly 的方式把 gradle 的源码引进来,不然很大可能在 debug 的过程中报错,就会造成还没运行到你的断点,就终止了,错误信息如下:
2、执行gradle命令
./gradlew app:checkDebugDuplicateClasses(任务名) -Dorg.gradle.daemon=false -Dorg.gradle.debug=true 复制代码
执行这个命令后,输出如下:
再去点debug按钮,然后在你想要调试的地方加断点,比如我想调试 checkDebugDuplicateClasses 这个task,看看gradle是怎么去检测依赖冲突的,就在必经之地加个断点:
作者:HuntX
链接:https://juejin.cn/post/7021435457074364429