أخطاء APK

Hermes: خطأ JS في release فقط

نص الخطأ

E/ReactNativeJS: TypeError: undefined is not an object (evaluating 'a.b.c')
Hermes: Execution of bytecode failed in release build only

السبب

يعمل التطبيق في debug وينكسر في release. يقلّص release الشيفرة ويعطّل __DEV__ ويشغّل bytecode الخاص بـ Hermes.

الحل خطوة بخطوة

  1. استخرج نص الخطأ الحقيقي بـ adb logcat.
  2. أنشئ bundle بـ --dev false وأعد إنتاج الخطأ نفسه.
  3. افحص الشيفرة التي تعتمد على أشياء debug فقط (__DEV__ وقائمة المطور).
  4. حدّث المكتبة المشتبه بها؛ تحتاج إصدارًا متوافقًا مع Hermes.
  5. حوّل سطر الخطأ إلى الشيفرة الأصلية بخريطة المصدر.

أوامر للمثال

adb logcat -s ReactNativeJS:V ReactNative:V
npx react-native bundle --platform android --dev false --entry-file index.js --bundle-output /tmp/i.bundle --sourcemap-output /tmp/i.map
cd android && ./gradlew assembleRelease

كيف لا يتكرر

اختبر APK من نوع release على هاتف حقيقي كل أسبوع لا في اليوم الأخير.

المؤلف والترخيص: Nibras Code