Ошибки APK

R8: Missing class

Текст ошибки

ERROR: R8: Missing class com.example.Foo (referenced from: void com.example.Bar.run())
Missing classes detected while running R8. Please add the missing classes or apply additional keep rules.

Причина

При сжатии R8 видит ссылку на класс, которого нет. Бывает в release-сборке, когда у библиотеки нет нужных правил.

Решение по шагам

  1. Открой build/outputs/mapping/release/missing_rules.txt: R8 пишет недостающие правила там.
  2. Скопируй эти строки в proguard-rules.pro.
  3. Если класс правда не нужен, напиши -dontwarn; если нужен, -keep.
  4. Проверь, есть ли у библиотеки свои consumer-rules, и обнови её версию.
  5. Пересобери ./gradlew assembleRelease и открой приложение на телефоне.

Примеры команд

# app/build/outputs/mapping/release/missing_rules.txt faylına bax
# proguard-rules.pro
-keep class com.example.Foo { *; }
-dontwarn com.example.Foo
./gradlew assembleRelease

Как не повторить

Собирай release после добавления каждой библиотеки, чтобы ошибка не всплыла поздно.

Автор и лицензия: Nibras Code