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 حين تنقص قواعد المكتبة.
الحل خطوة بخطوة
- افتح
build/outputs/mapping/release/missing_rules.txt؛ يكتب R8 القواعد الناقصة هناك. - انسخ تلك الأسطر إلى
proguard-rules.pro. - إن كان الصنف غير لازم فعلًا فاكتب
-dontwarn، وإن كان لازمًا فاكتب-keep. - تحقق هل تحمل المكتبة قواعد
consumer-rulesالخاصة بها، وحدّث إصدارها. - أعد البناء بـ
./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
- APK لا يُثبَّت
- ما هو parse error؟
- ضاع ملف keystore
- التواقيع غير متطابقة
- خطأ في اسم الحزمة
- ملف APK تالف
- Play Protect يحظر التطبيق
- تبدو الحزمة غير صالحة
- لا توجد مساحة كافية
- الهاتف غير متوافق
- النسخة الأقدم لا تُثبَّت
- XAPK لا يُثبَّت
- فشل Gradle sync
- تعذّر حل الاعتمادية (Could not resolve)
- خطأ Duplicate class
- Manifest merger failed
- حد Dex: 65536 دالة
- عدم توافق إصدار JDK
- SDK location not found
- تعارض minSdkVersion
- قيمة compileSdk منخفضة جدًا
- EAS build: فشل Gradle
- خطأ expo prebuild
- Metro: Unable to resolve module
- Hermes: خطأ JS في release فقط
- شاشة بيضاء في release
- شاشة حمراء: لا يتصل بـ Metro
- عدم توافق إصدار Expo SDK
- خطأ Capacitor sync
- Capacitor: شاشة بيضاء
- EAS: خطأ keystore وcredentials
- Keystore tampered / كلمة المرور خاطئة
- اسم alias أو كلمة مرور المفتاح خاطئة
- Play: التوقيع بمفتاح خاطئ
- INSTALL_FAILED_UPDATE_INCOMPATIBLE
- INSTALL_FAILED_VERSION_DOWNGRADE
- INSTALL_FAILED_INSUFFICIENT_STORAGE
- INSTALL_FAILED_NO_MATCHING_ABIS
- خطأ في تحليل الحزمة (Parse error)
- خطأ «App not installed»
- تثبيت ملف AAB على الهاتف
- adb: الجهاز «unauthorized»
- adb: الجهاز غير موجود
- عدم تطابق إصدار خادم adb
- Activity class does not exist
- Play: مستوى targetSdk منخفض
- Play: رفض بسبب سياسة الأذونات
- Play: شرط 64-bit
- Play: versionCode مستخدم من قبل
- انهيار ClassNotFound / NoSuchMethod
- انهيار OutOfMemoryError
- CLEARTEXT communication not permitted
- SecurityException: الإذن مرفوض