react-native APK 崩溃并出现“未知”错误
Posted
技术标签:
【中文标题】react-native APK 崩溃并出现“未知”错误【英文标题】:react-native APK crash with "Unknown" error 【发布时间】:2019-10-30 06:09:04 【问题描述】:我的 react-native 开发环境是在 Windows 7 上;直到昨天都可以正常工作,但是 APK 在加载捆绑包后突然报告错误。
错误信息:
Unknown
run
NativeRunnable.java
handleCallback
Handler.java:873
dispatchMessage
Handler.java:99
dispatchMessage
MessageQueueThreadHandler.java:29
loop
Looper.java:193
run
MessageQueueThreadImpl.java:232
run
Thread.java:764
我为错误做了谷歌,但没有运气。我尝试使用npm start -- --reset-cache
清除缓存,但错误仍然存在。
我找到并尝试了similar posts,但他们的解决方案也不起作用。
错误日志:
06-16 14:30:16.144 5885 6735 E unknown:ReactNative: Exception in native call
06-16 14:30:16.144 5885 6735 E unknown:ReactNative: com.facebook.jni.UnknownCppException: Unknown
06-16 14:30:16.144 5885 6735 E unknown:ReactNative: at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
06-16 14:30:16.144 5885 6735 E unknown:ReactNative: at android.os.Handler.handleCallback(Handler.java:873)
06-16 14:30:16.144 5885 6735 E unknown:ReactNative: at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 14:30:16.144 5885 6735 E unknown:ReactNative: at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
06-16 14:30:16.144 5885 6735 E unknown:ReactNative: at android.os.Looper.loop(Looper.java:193)
06-16 14:30:16.144 5885 6735 E unknown:ReactNative: at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:232)
06-16 14:30:16.144 5885 6735 E unknown:ReactNative: at java.lang.Thread.run(Thread.java:764)
06-16 14:30:16.152 5885 6735 E ReactNativeJNI: Attempting to call JS function on a bad application bundle: RCTDeviceEventEmitter.emit()
06-16 14:30:16.155 5885 6735 E unknown:ReactNative: Exception in native call
06-16 14:30:16.155 5885 6735 E unknown:ReactNative: java.lang.RuntimeException: Attempting to call JS function on a bad application bundle: RCTDeviceEventEmitter.emit()
06-16 14:30:16.155 5885 6735 E unknown:ReactNative: at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
06-16 14:30:16.155 5885 6735 E unknown:ReactNative: at android.os.Handler.handleCallback(Handler.java:873)
06-16 14:30:16.155 5885 6735 E unknown:ReactNative: at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 14:30:16.155 5885 6735 E unknown:ReactNative: at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
06-16 14:30:16.155 5885 6735 E unknown:ReactNative: at android.os.Looper.loop(Looper.java:193)
06-16 14:30:16.155 5885 6735 E unknown:ReactNative: at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:232)
06-16 14:30:16.155 5885 6735 E unknown:ReactNative: at java.lang.Thread.run(Thread.java:764)
06-16 14:30:16.155 5885 6735 E ReactNativeJNI: Attempting to call JS function on a bad application bundle: AppRegistry.runApplication()
06-16 14:30:16.156 5885 6735 E unknown:ReactNative: Exception in native call
06-16 14:30:16.156 5885 6735 E unknown:ReactNative: java.lang.RuntimeException: Attempting to call JS function on a bad application bundle: AppRegistry.runApplication()
06-16 14:30:16.156 5885 6735 E unknown:ReactNative: at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
06-16 14:30:16.156 5885 6735 E unknown:ReactNative: at android.os.Handler.handleCallback(Handler.java:873)
06-16 14:30:16.156 5885 6735 E unknown:ReactNative: at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 14:30:16.156 5885 6735 E unknown:ReactNative: at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
06-16 14:30:16.156 5885 6735 E unknown:ReactNative: at android.os.Looper.loop(Looper.java:193)
06-16 14:30:16.156 5885 6735 E unknown:ReactNative: at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:232)
06-16 14:30:16.156 5885 6735 E unknown:ReactNative: at java.lang.Thread.run(Thread.java:764)
06-16 14:30:16.165 5885 5885 D ReactNative: CatalystInstanceImpl.destroy() start
06-16 14:30:16.181 1571 1571 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 3936256
06-16 14:30:16.187 1571 1571 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 3936256
06-16 14:30:16.189 5885 6734 D ReactNative: CatalystInstanceImpl.destroy() end
06-16 14:30:16.193 1571 1571 D gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 3936256
06-16 14:30:16.224 5885 5885 D ReactNative: CatalystInstanceImpl.destroy() start
06-16 14:30:16.224 5885 5885 D ReactNative: CatalystInstanceImpl.destroy() start
06-16 14:30:16.233 5885 5885 W unknown:ReactNative: Tried to enqueue runnable on already finished thread: 'js... dropping Runnable.
06-16 14:30:16.233 5885 5885 W MessageQueue: Handler (com.facebook.react.bridge.queue.MessageQueueThreadHandler) ef3c15 sending message to a Handler on a dead thread
06-16 14:30:16.233 5885 5885 W MessageQueue: java.lang.IllegalStateException: Handler (com.facebook.react.bridge.queue.MessageQueueThreadHandler) ef3c15 sending message to a Handler on a dead thread
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.os.MessageQueue.enqueueMessage(MessageQueue.java:546)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.os.Handler.enqueueMessage(Handler.java:745)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.os.Handler.sendMessageAtTime(Handler.java:697)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.os.Handler.sendMessageDelayed(Handler.java:667)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.os.Handler.post(Handler.java:395)
06-16 14:30:16.233 5885 5885 W MessageQueue: at com.facebook.react.bridge.queue.MessageQueueThreadImpl.runOnQueue(MessageQueueThreadImpl.java:70)
06-16 14:30:16.233 5885 5885 W MessageQueue: at com.facebook.react.bridge.ReactContext.runOnJSQueueThread(ReactContext.java:306)
06-16 14:30:16.233 5885 5885 W MessageQueue: at com.facebook.react.uimanager.events.EventDispatcher$ScheduleDispatchFrameCallback.doFrame(EventDispatcher.java:302)
06-16 14:30:16.233 5885 5885 W MessageQueue: at com.facebook.react.modules.core.ReactChoreographer$ReactChoreographerDispatcher.doFrame(ReactChoreographer.java:166)
06-16 14:30:16.233 5885 5885 W MessageQueue: at com.facebook.react.modules.core.ChoreographerCompat$FrameCallback$1.doFrame(ChoreographerCompat.java:84)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:947)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.view.Choreographer.doCallbacks(Choreographer.java:761)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.view.Choreographer.doFrame(Choreographer.java:693)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:935)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.os.Handler.handleCallback(Handler.java:873)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.os.Looper.loop(Looper.java:193)
06-16 14:30:16.233 5885 5885 W MessageQueue: at android.app.ActivityThread.main(ActivityThread.java:6669)
06-16 14:30:16.233 5885 5885 W MessageQueue: at java.lang.reflect.Method.invoke(Native Method)
06-16 14:30:16.233 5885 5885 W MessageQueue: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
06-16 14:30:16.233 5885 5885 W MessageQueue: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
06-16 14:30:16.251 2042 2042 I GoogleInputMethod: onFinishInput() : Dummy InputConnection bound
06-16 14:30:16.252 2042 2042 I GoogleInputMethod: onStartInput() : Dummy InputConnection bound
06-16 14:30:16.255 5885 5902 D EGL_emulation: eglMakeCurrent: 0xe5dc78a0: ver 2 0 (tinfo 0xe7055d70)
编辑:我已经从上面的日志中排除了与修复错误时相同的部分。
【问题讨论】:
我没有接受答案,希望得到解决方案,但现在我会接受我自己的答案,因为似乎解决问题是唯一的方法??? 【参考方案1】:调试后;禁用@babel/plugin-transform-arrow-functions
插件(版本7.2.0
)然后清除缓存(如another answer 中的建议)为我修复了它:
步骤:
禁用@babel/plugin-transform-arrow-functions
插件,例如,我只是在babel.config.js
文件中将其注释掉,如下所示:
module.exports =
presets: ['module:metro-react-native-babel-preset'],
plugins: [
['@babel/plugin-proposal-decorators', decoratorsBeforeExport: false ],
// Below plugin is unable to handle some of our arrow-functions,
// which results in "Unknown" error after the app is launched.
// ```
// ['@babel/plugin-transform-arrow-functions', spec: true ]
// ```
]
;
当 Packager 已经运行时,使用 process-manager 关闭和/或终止它
对于react-native
init
方法(没有expo
),运行:
npm start -- --reset-cache
(那些使用expo-cli
的人应该而不是上面运行expo start -c
)
上面提到的命令对我来说等于删除%temp%/metro-cache
目录。
但是,按照建议here 删除~/.babel.json
文件(在Windows 上的%userProfile%/.babel.json
文件)不会有什么坏处,我的意思是,我已经测试并且上述命令没有删除和/或更改@ 987654337@文件。
修复后的Logcat:
06-16 14:55:48.670 5885 6650 D ReactNative: CatalystInstanceImpl.destroy() end
06-16 14:55:49.374 5885 6652 W ReactNativeJS: Require cycle: node_modules\react-native-reanimated\src\utils.js -> node_modules\react-native-reanimated\src\core\AnimatedBlock.js -> node_modules\react-native-reanimated\src\utils.js
06-16 14:55:49.374 5885 6652 W ReactNativeJS:
06-16 14:55:49.374 5885 6652 W ReactNativeJS: Require cycles are allowed, butcan result in uninitialized values. Consider refactoring to remove the need fora cycle.
06-16 14:55:49.374 5885 6652 W ReactNativeJS: Require cycle: node_modules\react-native-reanimated\src\base.js -> node_modules\react-native-reanimated\src\core\AnimatedCond.js -> node_modules\react-native-reanimated\src\utils.js -> node_modules\react-native-reanimated\src\core\AnimatedValue.js -> node_modules\react-native-reanimated\src\base.js
06-16 14:55:49.374 5885 6652 W ReactNativeJS:
06-16 14:55:49.374 5885 6652 W ReactNativeJS: Require cycles are allowed, butcan result in uninitialized values. Consider refactoring to remove the need fora cycle.
06-16 14:55:49.374 5885 6652 W ReactNativeJS: Require cycle: node_modules\react-native-reanimated\src\utils.js -> node_modules\react-native-reanimated\src\core\AnimatedValue.js -> node_modules\react-native-reanimated\src\utils.js
06-16 14:55:49.374 5885 6652 W ReactNativeJS:
06-16 14:55:49.374 5885 6652 W ReactNativeJS: Require cycles are allowed, butcan result in uninitialized values. Consider refactoring to remove the need fora cycle.
06-16 14:55:49.375 5885 6652 W ReactNativeJS: Require cycle: node_modules\react-native-reanimated\src\core\AnimatedValue.js -> node_modules\react-native-reanimated\src\derived\evaluateOnce.js -> node_modules\react-native-reanimated\src\core\AnimatedValue.js
06-16 14:55:49.375 5885 6652 W ReactNativeJS:
06-16 14:55:49.375 5885 6652 W ReactNativeJS: Require cycles are allowed, butcan result in uninitialized values. Consider refactoring to remove the need fora cycle.
06-16 14:55:49.375 5885 6652 W ReactNativeJS: Require cycle: node_modules\react-native-reanimated\src\base.js -> node_modules\react-native-reanimated\src\core\AnimatedCond.js -> node_modules\react-native-reanimated\src\utils.js -> node_modules\react-native-reanimated\src\core\AnimatedValue.js -> node_modules\react-native-reanimated\src\derived\evaluateOnce.js -> node_modules\react-native-reanimated\src\base.js
06-16 14:55:49.375 5885 6652 W ReactNativeJS:
06-16 14:55:49.375 5885 6652 W ReactNativeJS: Require cycles are allowed, butcan result in uninitialized values. Consider refactoring to remove the need fora cycle.
06-16 14:55:49.375 5885 6652 W ReactNativeJS: Require cycle: node_modules\react-native-reanimated\src\base.js -> node_modules\react-native-reanimated\src\core\AnimatedCond.js -> node_modules\react-native-reanimated\src\utils.js -> node_modules\react-native-reanimated\src\core\AnimatedValue.js -> node_modules\react-native-reanimated\src\derived\interpolate.js -> node_modules\react-native-reanimated\src\base.js
06-16 14:55:49.375 5885 6652 W ReactNativeJS:
06-16 14:55:49.375 5885 6652 W ReactNativeJS: Require cycles are allowed, butcan result in uninitialized values. Consider refactoring to remove the need fora cycle.
06-16 14:55:49.478 5885 6652 I ReactNativeJS: Running application "StormHoundsApp" with appParams: "rootTag":201. __DEV__ === true, development-level warning are ON, performance optimizations are OFF
06-16 14:55:49.749 5885 5885 I ReactNative: [GESTURE HANDLER] Initialize gesture handler for root view com.swmansion.gesturehandler.react.RNGestureHandlerEnabledRootView32e1596 V.E...... ......ID 0,0-768,1136 #c9
06-16 14:55:51.469 1831 1854 W audio_hw_generic: Not supplying enough data toHAL, expected position 5387280 , only wrote 5234400
06-16 14:55:52.561 1912 2108 I GnssLocationProvider: WakeLock acquired by sendMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b89f9d4)
06-16 14:55:52.562 1912 1926 I GnssLocationProvider: WakeLock released by handleMessage(REPORT_SV_STATUS, 0, com.android.server.location.GnssLocationProvider$SvStatusInfo@b89f9d4)
06-16 14:55:52.566 2537 2951 W ctxmgr : [AclManager]No 2 for (accnt=account#-517948760#, com.google.android.gms(10015):IndoorOutdoorProducer, vrsn=13280000,0, 3pPkg = null , 3pMdlId = null , pid = 2537). Was: 3 for 57, account#-517948760#
为了有一个更清晰的日志,我已经从上面排除了与出现错误时相同的部分。
【讨论】:
q= (-_- ) 我禁用插件只是因为react-native
无法显示它不喜欢的明确错误! (很好,我现在切换到Flutter
- 不再浪费时间与令人困惑的错误)。以上是关于react-native APK 崩溃并出现“未知”错误的主要内容,如果未能解决你的问题,请参考以下文章
单击登录按钮后,React 本机发布签名的 apk 文件崩溃
React-Native FBSDK LoginButton 仅在 iOS 中崩溃应用程序