React Native Android 在启用调试模式时崩溃
React Native Android crashes on enabling debug mode
摇动android设备并点击调试,每次都立即崩溃。在 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.run(MessageQueueThreadImpl.java:226)
at java.lang.Thread.run(Thread.java:923)
相同的 React Native 代码库,在 ios 上打开调试模式工作正常,但在 Android 上打开调试模式时它总是崩溃。我看不到是什么导致了错误日志。
这是我对本机反应应用程序的依赖项,我正在使用 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"
},
经过更多搜索,发现这是 react-native-reanimated 中的一个已知问题。正如他们 website 指出的那样
Please note that Reanimated 2 doesn't support remote debugging, only
Flipper can be used for debugging.
另一个github issue也指出了这个问题
This is expected, you can't use remote debugging with turbomodules
(which Reanimated v2 is using). Check out Flipper to debug your app.
https://docs.swmansion.com/react-native-reanimated/docs/#known-problems-and-limitations
https://github.com/software-mansion/react-native-reanimated/issues/1990
删除这个库解决了这个问题。
- 删除 package.json
中的 react-native-reanimated 依赖
- 删除 android 的 MainApplication.java
中的相关代码
- yarn 安装或 npm 安装
- 转到 ios 文件夹和 运行
pod install
- 转到 android 文件夹和 运行
./gradlew clean
- 重建应用程序。
yarn android
和 yarn ios
另一种方法是使用 Flipper 进行调试。
将 react-native-reanimated
升级到 2.4.1
可能会解决此问题。
摇动android设备并点击调试,每次都立即崩溃。在 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.run(MessageQueueThreadImpl.java:226)
at java.lang.Thread.run(Thread.java:923)
相同的 React Native 代码库,在 ios 上打开调试模式工作正常,但在 Android 上打开调试模式时它总是崩溃。我看不到是什么导致了错误日志。
这是我对本机反应应用程序的依赖项,我正在使用 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"
},
经过更多搜索,发现这是 react-native-reanimated 中的一个已知问题。正如他们 website 指出的那样
Please note that Reanimated 2 doesn't support remote debugging, only Flipper can be used for debugging.
另一个github issue也指出了这个问题
This is expected, you can't use remote debugging with turbomodules (which Reanimated v2 is using). Check out Flipper to debug your app.
https://docs.swmansion.com/react-native-reanimated/docs/#known-problems-and-limitations
https://github.com/software-mansion/react-native-reanimated/issues/1990
删除这个库解决了这个问题。
- 删除 package.json 中的 react-native-reanimated 依赖
- 删除 android 的 MainApplication.java 中的相关代码
- yarn 安装或 npm 安装
- 转到 ios 文件夹和 运行
pod install
- 转到 android 文件夹和 运行
./gradlew clean
- 重建应用程序。
yarn android
和yarn ios
另一种方法是使用 Flipper 进行调试。
将 react-native-reanimated
升级到 2.4.1
可能会解决此问题。