APK xətaları

R8: Missing class

Xəta mətni

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.

Səbəb

R8 kodu kiçildəndə bir sinfə istinad görür, amma sinif tapılmır. Release quruluşunda kitabxana qaydası çatmayanda belə olur.

Addım-addım həll

  1. build/outputs/mapping/release/missing_rules.txt faylını aç. R8 çatmayan qaydaları orada yazır.
  2. Həmin sətirləri proguard-rules.pro faylına köçür.
  3. Sinif həqiqətən lazım deyilsə, -dontwarn yaz. Lazımdırsa -keep yaz.
  4. Kitabxananın özünün consumer-rules qaydalarının olub-olmadığına bax, versiyanı yenilə.
  5. Sonra ./gradlew assembleRelease ilə yenidən yoxla, tətbiqi telefonda aç.

Nümunə əmrlər

# 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

Təkrarlanmasın deyə

Release quruluşunu hər kitabxana əlavə ediləndən sonra bir dəfə qur, xəta gec çıxmasın.

Müəllif və lisenziya: Nibras Code