【问题标题】:React Native Android crashes when trying to debug in Chrome尝试在 Chrome 中调试时 React Native Android 崩溃
【发布时间】:2023-03-07 23:40:01
【问题描述】:

我有一个适用于 iOS 的 React Native 应用程序,我正在尝试让它在 Android 上运行。我在模拟器中启动并运行了该应用程序,我想在 Chrome 中对其进行调试以找出一些问题。

当我打开应用内开发工具并单击“在 Chrome 中调试”选项时出现问题,应用崩溃了几秒钟,我收到一条警告消息,提示“不幸的是,MyApp 已停止”。然后应用程序立即返回红屏并显示“无法与远程调试器连接”。

我相信我已经按照on this page 的指示设置了所有内容。

有没有人遇到过这种问题,如果有,有办法解决吗?

谢谢!

【问题讨论】:

    标签: android react-native


    【解决方案1】:

    在 Android 上也有同样的问题。我刚刚使用react-native init 开始了一个项目,并开始关注 Facebook 教程。

    当我在不调试的情况下运行应用程序时,它运行良好。如果我启用远程调试 JS,它会在 1 分钟后崩溃(什么都不做)。

    在三星 Galaxy S5、react-native-cli 0.2.0、react-native 0.32.1、Windows 7、Chrome 53 上进行测试。

    在 Android Studio 中,我发现了这个堆栈跟踪:

    09-08 13:25:06.322 31080-3735/com.tutorialproject W/libc: pthread_create failed: couldn't allocate 1064960-byte stack: Out of memory
    09-08 13:25:06.322 31080-3735/com.tutorialproject E/art: Throwing OutOfMemoryError "pthread_create (1040KB stack) failed: Try again"
    09-08 13:25:06.332 31080-3735/com.tutorialproject E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher
        Process: com.tutorialproject, PID: 31080
        java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again
            at java.lang.Thread.nativeCreate(Native Method)
            at java.lang.Thread.start(Thread.java:1063)
            at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:920)
            at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1338)
            at okhttp3.ConnectionPool.put(ConnectionPool.java:135)
            at okhttp3.OkHttpClient$1.put(OkHttpClient.java:149)
            at okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:188)
            at okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:129)
            at okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:98)
            at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
            at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
            at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
            at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:109)
            at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
            at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
            at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
            at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
            at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:124)
            at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:92)
            at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:67)
            at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:170)
            at okhttp3.RealCall.access$100(RealCall.java:33)
            at okhttp3.RealCall$AsyncCall.execute(RealCall.java:120)
            at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
            at java.lang.Thread.run(Thread.java:818)
    09-08 13:25:06.372 31080-31080/com.tutorialproject D/SensorManager: unregisterListener ::   
    09-08 13:25:06.852 31080-31185/com.tutorialproject W/unknown:React: Tried to enqueue runnable on already finished thread: 'native_modules... dropping Runnable.
    09-08 13:25:06.852 31080-31185/com.tutorialproject W/MessageQueue: Handler (com.facebook.react.bridge.queue.MessageQueueThreadHandler) {246b7490} sending message to a Handler on a dead thread
           java.lang.IllegalStateException: Handler (com.facebook.react.bridge.queue.MessageQueueThreadHandler) {246b7490} sending message to a Handler on a dead thread
               at android.os.MessageQueue.enqueueMessage(MessageQueue.java:325)
               at android.os.Handler.enqueueMessage(Handler.java:631)
               at android.os.Handler.sendMessageAtTime(Handler.java:600)
               at android.os.Handler.sendMessageDelayed(Handler.java:570)
               at android.os.Handler.post(Handler.java:326)
               at com.facebook.react.bridge.queue.MessageQueueThreadImpl.runOnQueue(MessageQueueThreadImpl.java:61)
               at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
               at android.os.Handler.handleCallback(Handler.java:739)
               at android.os.Handler.dispatchMessage(Handler.java:95)
               at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:31)
               at android.os.Looper.loop(Looper.java:145)
               at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:196)
               at java.lang.Thread.run(Thread.java:818)
    09-08 13:25:06.862 31080-3792/com.tutorialproject W/ContextImpl: Failed to ensure directory: /storage/extSdCard/Android/data/com.tutorialproject/cache
    09-08 13:25:11.362 31080-31088/com.tutorialproject W/art: Suspending all threads took: 5.930ms
    

    这是一个非常简单的项目,只有几个文本组件,所以我没有提出任何要求。所有的网络通信都是由于远程调试。

    由于这是 OutOfMemory 问题,我尝试将 android:largeHeap="true" 添加到 Manifest.xml,但没有任何变化。应用程序达到 32Mb 消耗并死掉。

    我已经修改了应用程序,所以它加载了一个带有图像的组件 5000 次。禁用调试后,该应用程序最多分配 70Mb 并且工作正常。我可以滚动整个屏幕,没有任何崩溃。当我启用远程调试时,我会工作一段时间,直到它尝试分配更多内存并再次崩溃。我可以在启用调试的情况下重新启动应用程序,并且它启动良好,但一段时间后再次崩溃。

    恕我直言,React Native 远程调试功能在分配新内存时存在问题(并且由于某种原因,即使在应用停止时它也会消耗大量内存)。

    【讨论】:

    • 你能解决这个问题吗?我现在看到类似的东西。
    【解决方案2】:

    我也遇到了这个问题(这就是我看到你的帖子的原因)。您是否有机会将您的项目基于React Native Material Kit Demo?在启动 devtools 时,我遇到了并且遇到了完全相同的崩溃问题。

    我现在使用react-native init 从头开始​​重建我的项目,问题似乎已经消失。

    【讨论】:

    • 嗯,好吧,我觉得我说得太早了——即使在我从头开始构建的项目中,它现在也再次抬起了丑陋的脑袋。
    • 无赖...我没有使用过 React Native Material Kit Demo。奇怪的是,它正在为同一个项目的同事工作,但不适合我......这让我相信这是一个环境问题,它在我的计算机上破坏了它......
    • 嗯,我开始使用material kit之后,我的调试器也连接不上了!
    猜你喜欢
    • 2019-11-20
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-20
    相关资源
    最近更新 更多