Aunque tardó en responder, esta es una pregunta difícil para Google (las comillas simples) y no está claro qué está sucediendo. Todavía no tengo la reputación de comentar o pedir alcance (o publicar 3 enlaces), por lo que esta respuesta puede ser un poco tediosa.
Para responder rápidamente, es posible que tenga varios complementos de Gradle en su proyecto.
Sincronizar complementos y envoltorios de Gradle
Mi problema parecía comenzar con un archivo IML dañado. Android Studio (entre el cierre y la reapertura de un proyecto) comenzó a quejarse de que un IML se había ido (no lo estaba) y se debía eliminar un módulo, lo cual rechacé. Persistió, actualicé a AS 0.8.7 (canal canario) y me quedé atascado en el problema OP (Tarea '' no encontrada en el proyecto raíz). Esto bloqueó completamente las compilaciones, así que tuve que profundizar en Gradle.
Mis pasos de reparación en OSX (ajuste para Windows):
- Actualice Android Studio a 0.8.7
- Preferencias | Actualizaciones | Cambie "Canal Beta" a "Canal Canario", luego verifique ahora.
- Es posible que pueda omitir esto.
Verificó el contenedor de Gradle (actualmente 1.12.2; no intente usar 2.0 en este momento).
Suponiendo que no necesita una versión en particular, use la última distribución compatible
$ vi ~/project/gradle-wrapper.properties
...
distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
Esto se puede configurar en Android Studio en Preferencias | Gradle (pero 0.8.7 me estaba dando errores de 'ubicación no válida').
- El 'contenedor' es solo una copia de Gradle para cada proyecto de Android Studio. Te permite tener Gradle 2 en tu sistema operativo y diferentes versiones en tus proyectos. Los documentos para desarrolladores de Android lo explican aquí .
- Luego, ajusta tus archivos build.gradle para el complemento . La versión del complemento de Gradle debe ser compatible con la versión de distribución / envoltura para todo el proyecto. Como la documentación de Herramientas (tools.android.com/tech-docs/new-build-system/user-guide#TOC-Requirements) está un poco desactualizada, puede configurar la versión del complemento demasiado baja (como 0.8.0) y Android Studio arrojará un error con el rango aceptable para el contenedor.
Por ejemplo, en build.gradle, tiene este complemento:
dependencies {
classpath "com.android.tools.build:gradle:0.12.+"
}
Puede intentar cambiarlo a la versión exacta, así:
dependencies {
classpath "com.android.tools.build:gradle:0.12.2"
}
y (después de registrar la versión desde la que está cambiando en cada caso) verificar que cada archivo build.gradle en su proyecto obtenga la misma versión del complemento. Mantener el "+" debería funcionar (para 0.12.0, 0.12.1, 0.12.2, etc.), pero mi compilación tuvo éxito cuando actualicé la biblioteca Volley de Google (originalmente gradle: 0.8. +) Y mi proyecto principal (originalmente 0.12. +) a la versión fija: gradle: 0.12.2.
Otros controles
Asegúrese de no tener dos módulos de aplicación de Android en el mismo proyecto
Esto puede interactuar con la solución final (diferentes versiones de Gradle, arriba) y causar
UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define (various classes)
Para comprobarlo, construya | Make Project no debería abrir una ventana que le pregunte qué aplicación desea hacer.
- Invalidar sus cachés
- Archivo | Invalidar cachés / reiniciar (stackoverflow.com/a/19223269/513413)
- Si el paso 2 no funciona, elimine ~ / .gradle / (www.wuttech.com/index.php/tag/groovy-lang-closure/)
- Salir de Android Studio
- $ rm -rf ~ / .gradle /
- Inicie Android Studio, luego sincronice:
- Herramientas Android | Sincronizar proyecto con archivos Gradle
- Repite esta secuencia completa (salir ... sincronizar) varias veces antes de rendirte.
- Limpiar el proyecto
- Construir | Proyecto limpio
Si ves esto ...
En mis compilaciones recientes, seguí viendo fallas horribles (páginas de excepciones) pero en segundos los mensajes se borraban, la compilación se realizó correctamente y la aplicación se implementó. Como nunca pude explicarlo y la aplicación funcionó, nunca noté que tenía dos complementos de Gradle en mi proyecto. Así que creo que los complementos de Gradle lucharon entre sí; uno se estrelló, el otro perdió su estado y reportó el error.
Si tiene tiempo, el video de 1 hora "A Gentle Introduction to Gradle" (www.youtube.com/watch?v=OFUEb7pLLXw) realmente me ayudó a abordar los archivos de compilación, tareas, decisiones de compilación, etc. de Gradle.
Descargo de responsabilidad
Estoy aprendiendo toda esta pila, en un sistema operativo extranjero, después de trabajar en una carrera diferente ... todo al mismo tiempo y bajo presión. En los últimos meses he golpeado todos los muros que creo que tiene Android; He estado aquí con bastante frecuencia y esta es mi primera publicación. Pensé que esto era una solución difícil, así que me disculpo sinceramente si la calidad de mi respuesta refleja la dificultad que tuve para llegar a ella.