如何在编译期间调试R8?

时间:2019-04-09 14:51:40

标签: android android-d8 r8 d8-dexer

在Android项目的编译过程中,有什么方法可以调试R8?

我有一个非常奇怪的错误,临时修复无济于事

2 个答案:

答案 0 :(得分:2)

假设您已经从https://r8.googlesource.com/r8中签出了R8项目,并且正在使用IntelliJ作为调试器,这是调试Gradle构建Android Studio项目的一种方法。

第一个版本r8:

tools/gradle.py r8

r8.jar内置在build/libs中,然后应在主build.gradle文件(在buildscript.repositories部分中)中进行引用,如下所示:

buildscript {

    dependencies {
        classpath files($PATH_TO_R8_JAR)  // Must be before the Gradle Plugin for Android.
        classpath 'com.android.tools.build:gradle:3.4.0-rc03'
     }
}

要调试命令行Gradle运行,请在调用Gradle时传递选项-Dorg.gradle.debug=true--no-daemon,例如一个Android Studio项目的发布版本:

./gradlew assembleRelease -Dorg.gradle.debug=true --no-daemon

gradle命令将等待调试器附加。在IntelliJ中,创建标准的远程调试配置并附加。 gradle命令将继续执行,R8代码中的断点将被击中。

注意:在3.5.0 aplha版本中,向r8.jar添加build.gradle可能会导致Kotlin项目出现问题(请参阅Issue 129240946)。

答案 1 :(得分:0)

对于R8收缩器,可以将-verbose开关添加到proguard.cfg文件中。有一个选择:

--pg-conf proguard.cfg

build.gradle还显示了如何提供默认值proguardArguments