APK hataları

R8: Missing class

Hata metni

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.

Neden

R8 kodu küçültürken var olmayan bir sınıfa referans görür. Release derlemede kütüphane kuralı eksik olunca olur.

Adım adım çözüm

  1. build/outputs/mapping/release/missing_rules.txt dosyasını aç. R8 eksik kuralları orada yazar.
  2. O satırları proguard-rules.pro dosyasına kopyala.
  3. Sınıf gerçekten gerekmiyorsa -dontwarn, gerekiyorsa -keep yaz.
  4. Kütüphanenin kendi consumer-rules kuralları var mı bak, sürümü güncelle.
  5. ./gradlew assembleRelease ile yeniden derle, uygulamayı telefonda aç.

Örnek komutlar

# 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

Tekrarlanmasın diye

Her kütüphane ekledikten sonra release derlemeyi bir kez al ki hata geç çıkmasın.

Yazar ve lisans: Nibras Code