Android Studio: Falló la ejecución de Gradle. Causa: Tubo roto

Siempre que construyo / ejecuto mi proyecto de android en android-studio obtengo un cuadro de mensaje diciendo: Failed to complete Gradle execution.Cause: Broken pipe y luego la versión antigua de la aplicación comienza a correr en mi dispositivo. Traté de limpiar el proyecto, pero recibo el mismo mensaje. He probado la solución aquí, pero no ayuda. También he intentado la solución aquí . Tengo la siguiente salida del gradlew compileDebug --stacktrace --info :

 Task 'compileDebug' is ambiguous in root project 'Wifi'. Candidates are: 'compileDebugAidl', 'compileDebugJava', 'compileDebugNdk', 'compileDebugRenderscript', 'compileDebugTestAidl', 'compileDebugTestJava', 'compileDebugTestNdk', 'compileDebugTestRenderscript'. * Try: Run gradlew tasks to get a list of available tasks. Run with --debug option to get more log output. * Exception is: org.gradle.execution.TaskSelectionException: Task 'compileDebug' is ambiguous in root project 'Wifi'. Candidates are: 'compileDebugAidl', 'compileDebugJava', 'compileDebugNdk', 'compileDebugRenderscript', 'compileDebugTestAidl', 'compileDebugTestJava', 'compileDebugTestNdk', 'compileDebugTestRenderscript'. at org.gradle.execution.TaskSelector.getSelection(TaskSelector.java:69) 

Sigo recibiendo el mismo error. Alguien puede ayudarme porfavor?

Editar:

Mi build.gradle es como sigue:

 apply plugin: 'com.android.application' android { compileSdkVersion 15 buildToolsVersion "20.0.0" defaultConfig { applicationId "com.example.pervysage.wifi" minSdkVersion 15 targetSdkVersion 15 versionCode 1 versionName "1.0" } buildTypes { release { runProguard false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) } 

He tenido un problema similar, pero noté que el problema se produjo cuando configuré mi computadora portátil Linux como un enrutador. El caso de uso aquí es que entonces la ruta de tráfico WiFi de mi teléfono a través de mi portátil y sniff HTTP solicitudes durante la depuración. Esto parecía confundir gradle y / o estudio de android.

Quitar los comandos iptables necesarios, killall -9 java y reiniciar android studio para que el problema se vaya.

Los comandos linux que causan el problema (estos y otros comandos similares causarán el problema):

  1. iptables -t nat -A POSTROUTING -j MASQUERADE
  2. echo 1 > /proc/sys/net/ipv4/ip_forward

En linux, simplemente hago lo siguiente:

  1. iptables -t nat -F
  2. echo 0 > /proc/sys/net/ipv4/ip_forward

Tenga en cuenta que la solución anterior puede estropear su firewall por lo que no juegue con estas cosas a menos que sepa lo que está haciendo.

Tuve el mismo problema con ADS en Fedora 20.

Todo funciona bien hasta que habilites MASQUERADING.

El problema es una regla de cortafuegos, que obliga a un SNAT (MASQUERADE) en la conexión tcp a localhost.

 # iptables -L POST_public_allow -t nat -v Chain POST_public_allow (1 references) pkts bytes target prot opt in out source destination 73446 4498K MASQUERADE all -- !lo any anywhere anywhere 

El daemin gradle, iniciado por ADS, acepta conexiones sólo desde 127.0.0.1 (dirección loopback). Pero la regla del cortafuegos fuerza el uso de la dirección pública de la interfaz. El daemon gradle rechaza la conexión y se produce el error "Broken pipe".

Hay dos soluciones para el problema:

1.) desactivar MASQUERADING en absoluto:

 # sudo firewall-cmd --remove-masquerade 

2.) fijar la regla nat:

 # iptables -I POST_public_allow -t nat ! -i lo ! -o lo -j MASQUERADE 

Para una tercera solución, vea el comentario # 2 en este hilo .

La única solución para mí es usar ipv6 en lugar de ipv4: en bin / studio.vmoptions o bin / studio64.vmoptions (dependiendo de si estás en 32 o 64 bits), cambia la línea -Djava.net.preferIPv4Stack = true by -Djava.net.preferIPv6Stack = true

Es un poco feo, pero no estropea ninguna configuración IPv4 existente.

Como no podía encontrar a nadie que tuviera el mismo problema incluso después de googlear, decidí aprender sobre lo que significa "Broken pipe". Después de leer aquí , sólo pensé que algún proceso en mi sistema debo morir. Acabo de reiniciar mi sistema y que arreglaron el problema. Todos los derechos reservados

Para aquellos que vienen aquí de Google para ver algunas actualizaciones, aquí es lo que pueden intentar hasta que se fija por el equipo de Gradle.

El problema es que el daemon Gradle está tratando de usar IPv4 en lugar de IPv6.

Solución 1: En Linux, ponga lo siguiente en su ~ / .profile o ~ / .bash_profile: export _JAVA_OPTIONS = "- Djava.net.preferIPv6Addresses = true"

Solución 2: en el archivo vmoptions de Android Studio, cambie la línea -Djava.net.preferIPv6Addresses = true a -Djava.net.preferIPv6Addresses = true

Ver detalles aquí en el sitio oficial: http://tools.android.com/knownissues#TOC-Mac-OS-X-Performance

  • Cómo deshacerse de la advertencia de Android Studio "Resultado de getException () no lanzado"?
  • Migrar el proyecto a error gradle
  • ¿Cómo importa un proyecto de Eclipse en Android Studio ahora?
  • Depuración de "Android Studio": muestra variables como hexadecimal
  • Android Gradle Apache HttpClient no existe?
  • Permisos de geolocalización insuficientes
  • Uso de SDK de Amazon Web Service para Android en Android Studio
  • Cómo resolver el proyecto de carga de estudio de Android? No se puede cargar el proyecto: java.lang.IllegalStateException: método @NotNull
  • Cómo resolver java.util.zip.ZipException?
  • La última actualización de Android Studio - BROKEN
  • Cómo dividir un fragmento en Android en dos colores
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.