support - cordova-android version
Cordova build changes distributionUrl en el archivo gradle-wrapper.properties (5)
Sigo recibiendo la siguiente excepción de compilación cuando corro
cordova run android --verbose
- ¿Qué salió mal? Se produjo un problema al evaluar el proyecto raíz ''android''.
Error al aplicar el complemento [id ''android''] Se requiere la versión 2.10 de Gradle. La versión actual es 2.2.1. Si usa el envoltorio gradle, intente editar la distribuciónUrl en C: / Users / Project / gradle / wrapper / gradle-wrapper.properties a gradle-2.10-all.zip
La razón de esto es que la línea se cambia cuando ejecuto el comando de construcción cordova;
distributionUrl=http/://services.gradle.org/distributions/gradle-2.1.0-all.zip
a
distributionUrl=http/://services.gradle.org/distributions/gradle-2.2.1-all.zip
Alguna manera de prevenir esto ?
Como se puede adivinar, hay un script que se ejecuta detrás de la escena cuando se emite el comando "Cordova build android". Esta secuencia de comandos 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 encuentra la línea que incluye la siguiente variable en el archivo:
GradleBuilder.prototype.prepEnv
Y compruebe 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 debe cambiar a la URL gradle-2.10-all.zip;
Ahora puede ejecutar el comando de compilación, ¡y listo!
inspirado de los siguientes SO; instalar gradle para usar en cordova construir 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á usando una Mac, por ejemplo, agregue el comando de exportación en .bash_profile
nano ~/.bash_profile
Intenta simplemente abrir el archivo project / platforms / android / build.gradle y actualiza
dependencias {
classpath ''com.android.tools.build:gradle:XXX''
}
y
Contenedor de tareas (tipo: Contenedor) {
gradleVersion = ''X.X''
}
vea la referencia aquí https://developer.android.com/studio/releases/gradle-plugin.html#updating-gradle
para cambiar el XX
Puede probar lo siguiente para resolver el problema,
En Windows, cambie File -> Settings -> Builds,Execution,Deployment -> Build Tools -> Gradle -> Gradle home
En Mac OS, cambie Android Studio -> Preferences -> Builds,Execution,Deployment -> Build Tools -> Gradle -> Gradle home
path
De lo contrario, utilice el gradle wrapper predeterminado y edite el Project/gradle/wrapper/gradle-wrapper.properties file''s distributionUrl
siguiente manera:
distributionUrl=https/://services.gradle.org/distributions/gradle-2.10-all.zip
ACTUALIZACIÓN: 21 de mayo de 2017
Ok, este fue un problema realmente desagradable y me sentí obligado a escribir instrucciones completas para arreglar con la esperanza de que ahorre a los demás las horas que perdí en él. La siguiente es una combinación de googlear, leer la respuesta aceptada y resolver el proceso de prueba y error.
Antes de hacer cualquier otra cosa, asegúrese de cerrar Docker si se está ejecutando. Un síntoma es que en Android Studio, el diálogo de carga del emulador desaparece silenciosamente. Si ejecutó desde el comando de inicio de la aplicación, su aplicación simplemente queda esperando para conectarse al dispositivo (mensaje emitido).
Suponiendo que hayas hecho eso y sigas sin trabajar, sigue leyendo.
Opcional (tal vez) : sólo fyi. Personalmente, utilicé SDK Man para instalar una versión de Gradle en mi máquina.
Supongamos que ya tiene un emulador de Android Studio en funcionamiento con Marshmallow o Nougat (o ambos).
En mi caso, estaba tratando de hacer que Cordova funcionara.
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 corriendo en Mac, así que descargué :)
https://dl.google.com/android/repository/tools_r25.2.5-macosx.zip
Descomprímelo y copie la carpeta de templates
en /Users/arcseldon/Library/Android/sdk/tools
Explicación: Consulte la lógica dentro de la función module.exports.check_gradle
, declarada en platforms/android/cordova/check_reqs.js
para comprender cómo intenta derivar la ruta para el contenedor gradle. Esto lo cubre.
$ echo $ANDROID_HOME
/Users/arcseldon/Library/Android/sdk
Pude ver un subdirectorio de tools
, pero no una carpeta de templates
dentro de eso. Así que copie la carpeta de templates
archivo zip descargado y extraído, y péguelo dentro de $ANDROID_HOME/tools
Deberías terminar con una jerarquía de ruta que incluye:
/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 , revise su aplicación cordova para plataformas / android / build.gradle, y busque la gradleVersion
.
task wrapper(type: Wrapper) { gradleVersion = ''2.14.1'' }
Para su versión, descargue de 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 disco local y haga referencia a ENV. variable. p.ej. (cambiando a su versión)
export CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=file:///Users/myusername/temp/gradle-2.14.1-all.zip
Explicación: si ejecuta una búsqueda, encontrará que esta variable de entorno es una anulación opcional para este env. variable. Consulte la asignación de variable para check_gradle
, declarada en 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 otros motivos.