أخطاء 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