Solución:
Como podría adivinarse, hay un script que se está ejecutando detrás de la escena cuando emite el comando “Cordova build android”. Este script debe encontrarse para ver la configuración especificada para la versión de Gradle.
Debe ir y verificar el siguiente archivo js:
$PROJECT_ROOT/platforms/android/cordova/lib/builders/GradleBuilder.js
Luego busque la línea que incluye la siguiente variable en el archivo:
GradleBuilder.prototype.prepEnv
Y verifique la variable distributionUrl:
var distributionUrl = process.env['CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'] || 'http\://services.gradle.org/distributions/gradle-2.2.1-all.zip';
Eso es lo que está buscando y lo que necesita cambiar a la URL gradle-2.10-all.zip;
Ahora puede ejecutar el comando de compilación, ¡y listo!
inspirado en el siguiente SO; instalar gradle para usar en cordova build android
Creo que es mejor exportar la variable CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL
Ejemplo:
export
CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=http\://services.gradle.org/distributions/gradle-2.14.1-all.zip
Si está utilizando una Mac, por ejemplo, agregue el comando de exportación en el .bash_profile
nano ~/.bash_profile
ACTUALIZACIÓN: 21 de mayo de 2017
Ok, este fue un problema realmente desagradable y me sentí obligado a escribir instrucciones completas para solucionarlo con la esperanza de que les ahorre a otros las horas que desperdicié en él. Lo siguiente es una combinación de buscar en Google, leer la respuesta aceptada y resolver las cosas a partir de prueba y error.
Antes de hacer cualquier otra cosa, asegúrese de cerrar Estibador si está funcionando. Un síntoma es que en Android Studio, el cuadro de diálogo de carga del emulador desaparece silenciosamente. Si ejecutó desde el comando de inicio de la aplicación, su aplicación simplemente se deja esperando para conectarse al dispositivo (mensaje emitido).
Suponiendo que lo ha hecho y aún no funciona, siga leyendo.
Opcional (tal vez): fyi only – Personalmente, utilicé SDK Man para instalar una versión coincidente de Gradle en mi máquina.
Suponga que ya tiene un emulador de Android Studio que funciona con Marshmallow o Nougat (o ambos).
En mi caso, estaba intentando que Cordova trabajara.
Dependiendo de si desea comenzar de nuevo (recomendado), entonces:
cordova platform rm android
cordova platform add android
Primero se necesita una descarga. Descargue lo siguiente según su sistema operativo:
https://dl.google.com/android/repository/tools_r25.2.3-windows.zip
https://dl.google.com/android/repository/tools_r25.2.5-linux.zip
(Estaba ejecutando en Mac, así que descargué 🙂
https://dl.google.com/android/repository/tools_r25.2.5-macosx.zip
Descomprímalo y copie el templates
carpeta en /Users/arcseldon/Library/Android/sdk/tools
Explicación: Ver la lógica en el interior module.exports.check_gradle
función, declarada bajo platforms/android/cordova/check_reqs.js
para comprender cómo está tratando de derivar la ruta para la envoltura de Gradle. Esto lo co-erige.
$ echo $ANDROID_HOME
/Users/arcseldon/Library/Android/sdk
Pude ver un tools
subdirectorio, pero no templates
carpeta dentro de eso. Así que copia el templates
carpeta del zip descargado y extraído, y péguelo dentro $ANDROID_HOME/tools
Debe terminar con una jerarquía de ruta que incluya:
/Users/arcseldon/Library/Android/sdk/tools/templates/gradle/wrapper
Esto ahora satisface la búsqueda de ruta desde la perspectiva del script.
en segundo lugar, verifique su aplicación cordova para plataformas / android / build.gradle, y busque el gradleVersion
.
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
Para su versión, descargue desde la URL de la siguiente manera:
https://services.gradle.org/distributions/gradle-XYZ-all.zip
reemplazando X, Y, Z según sea necesario para que coincida con su versión.
En mi caso,
https://services.gradle.org/distributions/gradle-2.14.1-all.zip
Otros ejemplos:
https://services.gradle.org/distributions/gradle-3.3-all.zip https://services.gradle.org/distributions/gradle-2.4-all.zip
Luego, una vez descargado, colóquelo en su unidad local y haga referencia con ENV. variable. p.ej. (cambiando a tu versión)
export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=file:///Users/myusername/temp/gradle-2.14.1-all.zip
Explicación: Si realiza una búsqueda, encontrará que esta variable de entorno es una anulación opcional para este env. variable. Consulte la asignación de variables para check_gradle
, declarado bajo platforms/android/cordova/lib/builders/GradleBuilder.js
Ahora solo ejecuta:
cordova run android --verbose
Todo va bien, ahora todo debería “funcionar” para Android. En mi caso, iOS estaba listo para usar, pero usé Xcode 8.2 en lugar de Xcode 8.3 por otras razones.