APK xətaları

Hermes: yalnız release-də JS xətası

Xəta mətni

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

Səbəb

Debug-da işləyən tətbiq release-də qırılır. Release-də kod kiçildilir, __DEV__ söndürülür və Hermes bytecode istifadə olunur.

Addım-addım həll

  1. adb logcat ilə real xəta mətnini çıxar.
  2. --dev false ilə bundle yaradıb eyni xətanı təkrarla.
  3. Yalnız debug-da mövcud olan şeylərə (__DEV__, dev-menu) bağlı kodu yoxla.
  4. Şübhəli kitabxananı yenilə: Hermes ilə uyğun versiya lazımdır.
  5. Source map ilə xəta sətrini əsl koda çevir.

Nümunə əmrlər

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

Təkrarlanmasın deyə

Release APK-nı təkcə son gündə yox, hər həftə real telefonda sına.

Müəllif və lisenziya: Nibras Code