Как я могу отлаживать R8 во время компиляции?

#android #android-r8 #android-d8

#Android #android-r8 #android-d8

Вопрос:

Есть ли какой-либо способ отладки R8 во время компиляции проекта Android?

У меня действительно странная ошибка, и случайное исправление не поможет

Ответ №1:

Предполагая, что у вас есть извлеченный проект 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 run передайте параметры -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).

Ответ №2:

Для R8 сжимателя можно добавить -verbose переключатель в proguard.cfg файл. есть вариант:

 --pg-conf proguard.cfg
  

Это build.gradle также показывает, как proguardArguments можно указать значение по умолчанию.