1

在编译 Android 项目期间有什么方法可以调试 R8 吗?

我有一个非常奇怪的错误,随便修复也无济于事

4

2 回答 2

6

假设您已签出 R8 项目(来自https://r8.googlesource.com/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 运行,请传递选项-Dorg.gradle.debug=true--no-daemon在调用 Gradle 时,例如,对于 Android Studio 项目的发布版本:

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

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

注意:对于一系列 3.5.0 aplha 版本的添加r8.jar可能build.gradle会导致 Kotlin 项目出现问题(请参阅问题 129240946)。

于 2019-04-09T20:39:45.537 回答
1

对于R8shrinker,可以将-verbose开关添加到proguard.cfg文件中。有一个选项:

--pg-conf proguard.cfg

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

于 2019-04-09T15:31:05.597 回答