如何在编译过程中调试 R8?
How Can I debug R8 during compilation?
有什么方法可以在 Android 项目编译期间调试 R8 吗?
我遇到了一个非常奇怪的错误,随意修复也无济于事
对于R8
收缩器,可以在proguard.cfg
文件中添加-verbose
开关。有一个选项:
--pg-conf proguard.cfg
它 build.gradle 还显示了如何提供默认值 proguardArguments
。
假设您已检出 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 运行 在调用 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)。
有什么方法可以在 Android 项目编译期间调试 R8 吗?
我遇到了一个非常奇怪的错误,随意修复也无济于事
对于R8
收缩器,可以在proguard.cfg
文件中添加-verbose
开关。有一个选项:
--pg-conf proguard.cfg
它 build.gradle 还显示了如何提供默认值 proguardArguments
。
假设您已检出 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 运行 在调用 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)。