APK hataları

Hermes: yalnızca release'te JS hatası

Hata metni

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

Neden

Debug'da çalışan uygulama release'te kırılır. Release'te kod küçültülür, __DEV__ kapanır ve Hermes bytecode çalışır.

Adım adım çözüm

  1. adb logcat ile gerçek hata metnini çıkar.
  2. --dev false ile bundle üretip aynı hatayı tekrarla.
  3. Yalnız debug'da olan şeylere (__DEV__, dev menüsü) bağlı kodu kontrol et.
  4. Şüpheli kütüphaneyi güncelle: Hermes ile uyumlu sürüm gerekir.
  5. Source map ile hata satırını gerçek koda çevir.

Örnek komutlar

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

Tekrarlanmasın diye

Release APK'yı son gün değil, her hafta gerçek telefonda dene.

Yazar ve lisans: Nibras Code