Приложение React native вылетает при уничтожении приложения, только на Android

#android #react-native

#Android #react-native

Вопрос:

При уничтожении приложения происходит сбой приложения с помощью com.facebook.react.bridge.Исключение NoSuchKeyException. Это эксклюзивно для Android. Сбой происходит как при сборке debug, так и при сборке release.

Я попытался обновить все свои пакеты, что не устранило проблему. Я полагаю, что это, вероятно, вызвано сторонней библиотекой, но я не уверен, как отследить ее с помощью имеющейся у меня информации.

Трассировка стека:

 com.facebook.react.bridge.NoSuchKeyException lineNumber 
    ReadableNativeMap.java:124 com.facebook.react.bridge.ReadableNativeMap.getValue
    ReadableNativeMap.java:128 com.facebook.react.bridge.ReadableNativeMap.getValue
    ReadableNativeMap.java:182 com.facebook.react.bridge.ReadableNativeMap.getInt
    JSStackTrace.java:28 com.facebook.react.util.JSStackTrace.format
    ExceptionsManagerModule.java:46 com.facebook.react.modules.core.ExceptionsManagerModule.reportSoftException
    Method.java:-2 java.lang.reflect.Method.invoke
    JavaMethodWrapper.java:372 com.facebook.react.bridge.JavaMethodWrapper.invoke
    JavaModuleWrapper.java:158 com.facebook.react.bridge.JavaModuleWrapper.invoke
    NativeRunnable.java:-2 com.facebook.react.bridge.queue.NativeRunnable.run
    Handler.java:873 android.os.Handler.handleCallback
    Handler.java:99 android.os.Handler.dispatchMessage
    MessageQueueThreadHandler.java:29 com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage
    Looper.java:193 android.os.Looper.loop
    MessageQueueThreadImpl.java:232 com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run
    Thread.java:764 java.lang.Thread.run
 

package.json:

 {
  "name": "rnkirsofficer",
  "version": "2.0.0",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest",
    "version": "react-native-version"
  },
  "dependencies": {
    "@mapbox/polyline": "^1.0.0",
    "@react-native-community/async-storage": "^1.3.3",
    "@react-native-community/netinfo": "^2.0.4",
    "aws-amplify": "^1.1.26",
    "aws-amplify-react-native": "^2.1.10",
    "bugsnag-react-native": "^2.16.0",
    "fuse.js": "^3.4.4",
    "haversine": "^1.1.1",
    "moment": "^2.24.0",
    "native-base": "^2.12.1",
    "prop-types": "^15.7.2",
    "react": "16.8.3",
    "react-native": "0.59.4",
    "react-native-background-geolocation": "^3.0.1",
    "react-native-calendars": "^1.32.0",
    "react-native-gesture-handler": "^1.1.0",
    "react-native-gifted-chat": "^0.7.2",
    "react-native-google-maps-directions": "^2.0.0",
    "react-native-maps": "^0.24.2",
    "react-native-maps-super-cluster": "^1.5.0",
    "react-native-popup-menu": "^0.15.5",
    "react-native-svg": "^9.4.0",
    "react-native-svg-charts": "^5.2.0",
    "react-native-text-ticker": "^0.14.0",
    "react-native-version-number": "^0.3.5",
    "react-navigation": "^3.8.1",
    "react-redux": "^6.0.1",
    "react-timeout": "^1.2.0",
    "redux": "^4.0.1",
    "redux-devtools-extension": "^2.13.8",
    "redux-logger": "^3.0.6",
    "redux-thunk": "^2.3.0",
    "uuid": "^3.3.2"
  },
  "devDependencies": {
    "@babel/core": "7.3.4",
    "@babel/runtime": "7.3.4",
    "babel-jest": "24.5.0",
    "husky": "^1.3.1",
    "jest": "24.5.0",
    "metro-react-native-babel-preset": "0.53.1",
    "react-native-version": "^3.0.0",
    "react-test-renderer": "16.8.3"
  },
  "jest": {
    "preset": "react-native"
  }
}

 

Я ожидаю, что приложение сможет быть уничтожено без сбоев, но в настоящее время оно выходит из строя с помощью исключения NoSuchKeyException.

Комментарии:

1. adb logcat или, если ваша ОС osx, вы можете использовать приложение flipper для отслеживания журнала приложений. fbflipper.com можете ли вы записать журнал приложения на терминале, когда приложение вышло из строя?

2. Вы, вероятно, добавили библиотеки не в один пакет, правильно? Или это произошло с самого начала?

Ответ №1:

Ну,

Проверьте, есть ли у вас функция Use Console.err() где-нибудь в вашем проекте. Если это так, удалите эти Console.err() .