React Native Android отпадает при попытке отладки в Chrome

У меня есть приложение React Native, которое работает в iOS, и я пытаюсь его запустить и запустить для Android. У меня есть приложение, работающее в эмуляторе, и я хотел бы отладить его в Chrome, чтобы выяснить некоторые проблемы.

Проблема возникает, когда я открываю инструменты в приложении dev и нажимаю кнопку "Отладка в Chrome", приложение вылетает на пару секунд, и я получаю сообщение с предупреждением "К сожалению, MyApp остановился". то сразу после этого приложение возвращается с красным экраном и говорит "Не удается подключиться с удаленным отладчиком".

Я считаю, что я настроил все, как указано в на этой странице.

Кто-нибудь видел такую ​​проблему, и если есть способ ее исправить?

Спасибо!

Ответы

Ответ 1

У меня тоже была эта проблема (вот почему я наткнулся на ваш пост). Вы случайно основали свой проект на React Native Material Kit Demo? У меня была и была такая же проблема с сбоем при запуске devtools.

Теперь я перестроил свой проект с нуля, используя react-native init, и проблема, похоже, исчезла.

Ответ 2

Такая же проблема здесь, на Android. Я только что начал проект с react-native init и начал следить за учебником Facebook.

Когда я запускаю приложение без отладки, он отлично работает. Если я включу Debug JS удаленно, он сработает через 1 минуту (ничего не делать).

Тестирование на Samsung Galaxy S5, response-native-cli 0.2.0, реагировать на основе 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, но ничего не изменилось. Приложение достигает 32 Мб потребления и умирает.

Я изменил приложение, так что он загружает компонент с изображением 5000 раз. При отключенной отладке приложение выделяет до 70 Мб и отлично работает. Я могу прокручивать по всему экрану, и ничто не падает. Когда я включаю удаленное отладки, я работаю некоторое время, пока он не попытается выделить больше памяти и снова сработает. Я могу снова запустить приложение с включенной отладкой, и оно начинается хорошо, но через некоторое время происходит сбой.

ИМХО. Реальная функция удаленной отладки имеет проблему для выделения новой памяти (и по какой-то причине она потребляет много памяти, даже когда приложение остановлено).