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

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

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

2 ответа

Решение

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

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

--pg-conf proguard.cfg

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

Другие вопросы по тегам