【问题标题】:React Native Android crashes on enabling debug modeReact Native Android 在启用调试模式时崩溃
【发布时间】:2022-01-21 02:16:01
【问题描述】:

摇动安卓设备并点击调试,每次它都会立即崩溃。从 Android Studio logcat 中,它显示 没有加载源 URL,您初始化实例了吗?

java.lang.AssertionError: No source URL loaded, have you initialised the instance?
    at com.facebook.infer.annotation.Assertions.assertNotNull(Assertions.java:35)
    at com.facebook.react.modules.debug.SourceCodeModule.getTypedExportedConstants(SourceCodeModule.java:39)
    at com.facebook.fbreact.specs.NativeSourceCodeSpec.getConstants(NativeSourceCodeSpec.java:35)
    at com.facebook.react.bridge.JavaModuleWrapper.getConstants(JavaModuleWrapper.java:129)
    at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
    at android.os.Handler.handleCallback(Handler.java:938)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:27)
    at android.os.Looper.loop(Looper.java:223)
    at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:226)
    at java.lang.Thread.run(Thread.java:923)

相同的 react native 代码库,在 ios 上打开 dubug 模式可以正常工作,但在 Android 上打开 debug 模式时总是崩溃。我无法通过错误日志查看是什么原因造成的。

这是我对 react native 应用程序的依赖项,我正在使用 redux 和 redux-devtools-extension 进行调试。我是否缺少任何库?

"dependencies": {
  "@react-native-async-storage/async-storage": "^1.15.14",
  "@reduxjs/toolkit": "^1.7.0",
  "expo": "~42.0.1",
  "expo-permissions": "12.1.0",
  "expo-splash-screen": "~0.11.2",
  "expo-status-bar": "~1.0.4",
  "expo-updates": "~0.8.1",
  "react": "17.0.2",
  "react-dom": "17.0.2",
  "react-native": "0.64.1",
  "react-native-fast-image": "^8.5.11",
  "react-native-gesture-handler": "~1.10.2",
  "react-native-navigation": "^7.14.0",
  "react-native-reanimated": "~2.1.0",
  "react-native-screens": "3.2.0",
  "react-native-unimodules": "~0.13.3",
  "react-native-web": "0.16.3",
  "react-redux": "^7.2.6",
  "redux-persist": "^6.0.0",
  "tslint": "^6.1.3",
  "tslint-react": "^5.0.0"
},
"devDependencies": {
  "@babel/core": "^7.9.0",
  "@types/react": "17.0.5",
  "@types/react-native": "0.64.5",
  "babel-preset-expo": "~8.3.0",
  "jest-expo": "~41.0.0",
  "redux-devtools-extension": "^2.13.9",
  "typescript": "4.2.4"
}, 

【问题讨论】:

    标签: android react-native debugging


    【解决方案1】:

    经过一番搜索,发现这是 react-native-reanimated 中的一个已知问题。正如他们的website 指出的那样

    请注意,Reanimated 2 不支持远程调试,仅 Flipper 可用于调试。

    另一个github issue也指出了这个问题

    这是意料之中的,您不能对涡轮模块使用远程调试 (Reanimated v2 正在使用)。查看 Flipper 以调试您的应用程序。

    https://docs.swmansion.com/react-native-reanimated/docs/#known-problems-and-limitations

    https://github.com/software-mansion/react-native-reanimated/issues/1990

    删除这个库解决了这个问题。

    1. 移除 package.json 中的 react-native-reanimated 依赖
    2. 移除android的MainApplication.java中的相关代码
    3. yarn install 或 npm install
    4. 进入ios文件夹并运行pod install
    5. 进入android文件夹并运行./gradlew clean
    6. 重建应用程序。 yarn androidyarn ios

    另一种方法是使用 Flipper 进行调试。

    【讨论】:

      猜你喜欢
      • 2023-03-07
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-12
      • 2021-10-25
      • 1970-01-01
      相关资源
      最近更新 更多