2015-12-18 12 views
14

Ho un'applicazione React Native che funziona per iOS e sto provando a installarlo e farlo funzionare per Android. Ho installato l'app in esecuzione nell'emulatore e vorrei eseguirne il debug in Chrome per scoprire alcuni problemi.React Native Android si arresta in modo anomalo durante il tentativo di eseguire il debug in Chrome

Il problema si verifica quando apro gli strumenti di sviluppo dell'app e faccio clic sull'opzione Debug in Chrome. L'app si arresta in modo anomalo per un paio di secondi e viene visualizzato un messaggio di avviso con la scritta "Purtroppo MyApp è stato arrestato". subito dopo l'app riappare con la schermata rossa e dice "Impossibile connettersi con il debugger remoto".

Credo di aver impostato tutto come indicato nelle indicazioni on this page.

Qualcuno ha visto questo tipo di problema e, in caso affermativo, c'è un modo per risolverlo?

Grazie!

risposta

2

Ho avuto anche questo problema (motivo per cui ho trovato il tuo post). Hai per caso basato il tuo progetto su React Native Material Kit Demo? Avevo, e stavo avendo esattamente lo stesso problema con l'arresto anomalo all'avvio di devtools.

Ora ho ricostruito il mio progetto da zero utilizzando react-native init e il problema sembra essere andato via.

+0

Hmm, beh penso che ho parlato troppo presto - è ora s'impennò di nuovo la sua brutta testa ancora nel mio progetto costruito da zero. –

+0

Bummer ... Non ho usato la demo del kit di materiali nativi di React. La cosa strana è che sta lavorando per un collega sullo stesso progetto ma non per me ... Il che mi porta a credere che sia una cosa ambientale che sta infrangendo sul mio computer ... – jasonmerino

+0

beh, dopo aver iniziato a usare il kit di materiali, il mio debugger non può connettersi troppo! –

2

Lo stesso problema qui su Android. Ho appena iniziato un progetto con react-native init e ho iniziato a seguire il tutorial di Facebook.

Quando eseguo l'applicazione senza eseguire il debug, funziona correttamente. Se abilito Debug JS in remoto, si blocca dopo 1 minuto (senza fare nulla).

test sul Samsung Galaxy S5, reagisce-native-cli 0.2.0, reagire nativo 0.32.1, Windows 7, Chrome 53.

In Android Studio ho trovato questo 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 

È un progetto molto semplice, con solo un paio di componenti di testo, quindi non sto facendo alcuna richiesta. Tutta la comunicazione di rete è dovuta al debug remoto.

Poiché si tratta di un problema OutOfMemory, ho provato ad aggiungere android:largeHeap="true" a Manifest.xml, ma non cambia nulla. L'app raggiunge il consumo di 32 Mb e muore.

Ho modificato l'app, quindi carica un componente con un'immagine 5000 volte. Con il debug disabilitato, l'app alloca fino a 70 Mb e funziona perfettamente. Posso scorrere tutto sullo schermo e niente si blocca. Quando abilito il debug remoto, lavoro per un po ', fino a quando non tenta di allocare più memoria e si arresta di nuovo. Posso riavviare l'app con il debug abilitato, e inizia bene, ma di nuovo si blocca dopo un po '.

IMHO la funzione di debug remoto React Native presenta un problema per l'allocazione di nuova memoria (e per qualche motivo consuma molta memoria anche quando l'app viene arrestata).

+0

sei riuscito a risolvere questo? Sto vedendo qualcosa di simile ora. – Christine

Problemi correlati