Qué causó IOException y Broken pipe
Mi AVD es de API 15, no sé por qué, pero el siguiente mensaje sigue apareciendo cada vez que ejecuto una aplicación en el emulador. No parece haber causado ningún problema excepto el mensaje de error en la consola.
[2012-06-17 00:03:26 - ddmlib] Broken pipe java.io.IOException: Broken pipe at sun.nio.ch.FileDispatcher.write0(Native Method) at sun.nio.ch.SocketDispatcher.write(SocketDispatcher.java:47) at sun.nio.ch.IOUtil.writeFromNativeBuffer(IOUtil.java:122) at sun.nio.ch.IOUtil.write(IOUtil.java:93) at sun.nio.ch.SocketChannelImpl.write(SocketChannelImpl.java:352) at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213) at com.android.ddmlib.Client.sendAndConsume(Client.java:575) at com.android.ddmlib.HandleHeap.sendREAQ(HandleHeap.java:348) at com.android.ddmlib.Client.requestAllocationStatus(Client.java:421) at com.android.ddmlib.DeviceMonitor.createClient(DeviceMonitor.java:837) at com.android.ddmlib.DeviceMonitor.openClient(DeviceMonitor.java:805) at com.android.ddmlib.DeviceMonitor.processIncomingJdwpData(DeviceMonitor.java:765) at com.android.ddmlib.DeviceMonitor.deviceClientMonitorLoop(DeviceMonitor.java:652) at com.android.ddmlib.DeviceMonitor.access$100(DeviceMonitor.java:44) at com.android.ddmlib.DeviceMonitor$3.run(DeviceMonitor.java:580)
¿Qué podría ser la causa?
- No se puede ejecutar un AVD (emulador)
- AVD Manager no se inicia
- Administrador de dispositivos virtual deshabilitado en Android Studio
- AVD no se puede crear Ok está deshabilitado
- Android: "Error: Invalid --tag default para el destino seleccionado."
- ¿Cómo expandir el tamaño de una instancia de dispositivo virtual Android (emulador)?
- Emulador de Android no se inicia
- Android Studio AVD, CRASH, GRADLE PROBLEMAS, no se puede iniciar
- AVD La orientación de la pantalla no cambia con CTRL + F11 o CTRL + F12
- No se puede utilizar el teclado en el emulador de Android
- AVD - PANIC: No se pudo abrir ... - no es un problema de ruta
- Error de instalación: INSTALL_FAILED_INSUFFICIENT_STORAGE
- Error al iniciar AVD con procesador AMD
Si alguien utiliza tanto eclipse como android studio juntos, entonces este error será lanzado por eclipse. Así que incluso si selecciona el dispositivo a través de DDMS, su va a lanzar este error.
La vieja pregunta, pero sigue siendo relevante y no vi ninguna otra respuesta con esta información:
Para mí sucedió cuando otro Eclipse se estaba ejecutando al mismo tiempo, con DDMS compitiendo en el mismo socket que el eclipse tratando de conectarse al dispositivo Android.
La solución fue cerrar el otro Eclipse. Espero que ayude a alguien.
Actualización : Probablemente una mejor solución es editar el puerto DDMS del otro eclipse a algo que no utilices. Así que está fuera de la carrera.
Esto me sucedió cuando tuve tanto monitor
y Eclipse ADT abierto. Intente cerrar todas las cosas relacionadas con Android y luego haga un adb kill-server && sleep 5 && adb devices
y luego inicie nuevamente su herramienta (Eclipse / Ant / AS).
'Broken pipe' significa que ha escrito datos en una conexión que ya había sido cerrada por el par. Solución: no. Es esencialmente un error de protocolo de aplicación.
Supongo que el cliente (Eclipse) se comunica con el servidor (su emulador) por el protocolo Pipe (este protocolo es bien saber para comunicar 2 proceso en la misma máquina).
A veces puede romperse el canal de comunicación. (Hay 100 razones posibles para eso)
Para resolver este problema: reinicie el emulador (AVD). Tal vez tendrá que esperar un momento (~ 1min?) Para que Eclipse pueda restaurar el canal Pipe y su Log Cat volverá. De lo contrario, reinicie Eclipse y el emulador para eliminar este error.
La razón más común que he tenido para un "tubo roto" es que una máquina (de un par que comunica a través del zócalo) ha cerrado su extremo del zócalo antes de que la comunicación fuera completa. Aproximadamente la mitad de ellos se debieron a que el programa de comunicación en ese socket había terminado.
Si el programa que envía bytes los envía e inmediatamente apaga el zócalo o se termina por sí mismo, es posible que el socket deje de funcionar antes de que los bytes hayan sido transmitidos y leídos.
Trate de poner pausas en cualquier lugar que está cerrando el zócalo y antes de permitir que el programa termine para ver si eso ayuda.
FYI: "pipe" y "socket" son términos que se utilizan indistintamente a veces.
Me di cuenta que esto sucede con frecuencia (cada 5 minutos o así) recientemente. La frecuencia parecía aumentar si tenía un dispositivo físico y un emulador en funcionamiento.
Detener el emulador y sólo usar el dispositivo físico para la depuración lo impedía que ocurriera tan a menudo – ahora solo lo veo una o dos veces al día.
Para resolverlo cuando sucede, no es necesario cerrar el emulador o reiniciar el dispositivo – convertir el modo de depuración USB de encendido y apagado debe hacer que aparezca de nuevo bajo adb.
He estado luchando con este problema durante mucho tiempo. Siempre que quería depurar la aplicación móvil android con la herramienta de depuración de Chrome me desconectaron cada 5 minutos.
Me enteré de que la causa de esto es de hecho otro proceso de conexión con el teléfono móvil que se está ejecutando detrás en el sistema operativo que rompe la comunicación entre el teléfono móvil y el sistema operativo.
Yo uso Macbook Pro y estaba ejecutando IntelliJ IDEA depurador + Android File Transfer (no sabía que esto estaba corriendo detrás) y la herramienta de depuración de Chrome. Cuando cerré el proceso de transferencia de archivos de Android con la herramienta "Monitor de actividad" todo funcionaba bien, no había más desconexión entre el teléfono móvil y el sistema operativo. Mi sugerencia es comprobar siempre si está ejecutando otro proceso de Android.
Yo estaba usando Android Studio y DDMS. El cierre de DDMS arregló el problema para mí.
Reiniciar Android Studio no tuvo ningún impacto.
En caso de que alguien más no encontrar ninguna solución a esto. En eclipses Neon, esto sucedió cuando tenía dos frascos DDMS en el directorio de plugins. Tuve el andmore.ddms.jar y com.android_ddms.jar. Al eliminar uno se resuelve el error, supongo que ambos compiten para conectarse al mismo puerto.
Una excepción de "Broken pipe" se produce cuando una conexión de socket está cerrada por el cliente en el otro lado. La mayoría de las veces esto no es nada de qué preocuparse.
En mi caso, elimino el .android en mi directorio personal. Está bien.
- Android activar / desactivar WiFi HotSpot mediante programación
- ¿Qué es la Log API para llamar desde un programa Android JNI?