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 Мб и отлично работает. Я могу прокручивать по всему экрану, и ничто не падает. Когда я включаю удаленное отладки, я работаю некоторое время, пока он не попытается выделить больше памяти и снова сработает. Я могу снова запустить приложение с включенной отладкой, и оно начинается хорошо, но через некоторое время происходит сбой.
ИМХО. Реальная функция удаленной отладки имеет проблему для выделения новой памяти (и по какой-то причине она потребляет много памяти, даже когда приложение остановлено).
Ответ 3
выглядит как известная проблема
https://github.com/facebook/react-native/issues/9665
не может найти решение на данный момент:(