Reaccionar Android nativo se bloquea al intentar depurar en Chrome
Tengo una aplicación React Native que funciona para iOS y estoy tratando de ponerla en funcionamiento para Android. Tengo la aplicación en funcionamiento y en el emulador y me gustaría depurar en Chrome para resolver algunos problemas.
El problema se produce cuando abro las herramientas de dev de aplicación y haga clic en la opción Depurar en Chrome la aplicación se bloquea durante un par de segundos y recibo un mensaje de alerta que dice "Desafortunadamente MyApp se ha detenido". Luego justo después de que la aplicación vuelve a subir con la pantalla roja y dice "No se puede conectar con depurador remoto".
- Error al llamar a RCTDeviceEventEmitter.emit en ReactNative
- Com.android.ddmlib.InstallException: No se pudo establecer la sesión reaccionar-nativa
- Ble-obtener el código de error - 128 al escribir a caracteres
- No se puede reconocer el servidor JS
- React Native Android - Recursos estáticos que no se muestran
Creo que he configurado todo como las instrucciones que se indican en esta página .
¿Alguien ha visto este tipo de problema y si es así hay una manera de solucionarlo?
¡Gracias!
- React Native - packager se bloquea al transformar (100% 393/394) en la aplicación de demostración (Android)
- WebStorm reactiva-depuración nativa no funciona
- ¿Hay alguna guía para implementar JavaScriptModule en react-native?
- Reaccione el componente "Modal" nativo que no cubre toda la pantalla en Android cuando se utiliza el tema de pantalla completa
- Cómo entender el "ReactContext" en "Enviar eventos a Javascript" en React Native
- Requerir módulo desconocido "ReactPerf" al integrar React Native con la aplicación Android existente
- ¿Por qué Reactive Native .flowconfig ignora los archivos .android.js?
- React Native - Error al llamar AppRegistry.runApplication
Tuve este problema también (que es por qué me encontré con su mensaje). ¿Ha fundado su proyecto en la demostración React Native Material Kit ? Yo tenía, y tenía exactamente el mismo problema con el fallo al iniciar devtools.
Ahora he reconstruido mi proyecto desde cero usando react-native init
y el problema parece haberse ido.
El mismo problema aquí en Android. Acabo de comenzar un proyecto con react-native init
y comencé a seguir el tutorial de Facebook.
Cuando ejecuto la aplicación sin depuración, funciona bien. Si habilito Debug JS remotamente , se bloquea después de 1 minuto (no hacer nada).
Pruebas en Samsung Galaxy S5, reaccionar-native-cli 0.2.0, reaccionar-nativo 0.32.1, Windows 7, Chrome 53.
En Android Studio he encontrado este stacktrace:
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
Es un proyecto realmente simple, con sólo un par de componentes de texto, así que no estoy haciendo ninguna solicitud. Toda la comunicación de red se debe a la depuración remota.
Ya que es un problema de OutOfMemory he intentado agregar android:largeHeap="true"
a Manifest.xml, pero nada cambia. La aplicación alcanza el consumo de 32Mb y muere.
He modificado la aplicación, por lo que carga un componente con una imagen 5000 veces. Con la depuración deshabilitada, la aplicación asigna hasta 70Mb y funciona correctamente. Puedo desplazarme por toda la pantalla y nada se bloquea. Cuando habilito la depuración remota, trabajo por un tiempo, hasta que intenta asignar más memoria y se bloquea de nuevo. Puedo empezar de nuevo la aplicación con la depuración habilitada, y se inicia bien, pero de nuevo se bloquea después de un tiempo.
IMHO la característica de depuración remota de React Native tiene un problema para asignar nueva memoria (y por alguna razón, consume mucha memoria incluso cuando la aplicación se detiene).
Parece que es un problema conocido https://github.com/facebook/react-native/issues/9665
No parece encontrar una solución en este momento 🙁
- Varios mensajes push: El contenido del adaptador ha cambiado pero ListView no ha recibido ninguna notificación
- ¿Cómo probar Android Pay con un APK de depuración?