Ошибки 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__ выключен и работает байткод Hermes.

Решение по шагам

  1. Достань реальный текст ошибки через adb logcat.
  2. Собери bundle с --dev false и воспроизведи ту же ошибку.
  3. Проверь код, зависящий от debug-вещей (__DEV__, dev-меню).
  4. Обнови подозрительную библиотеку: нужна версия, совместимая с Hermes.
  5. Преврати строку ошибки в реальный код с помощью source map.

Примеры команд

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

Как не повторить

Проверяй release APK на реальном телефоне каждую неделю, а не в последний день.

Автор и лицензия: Nibras Code