Ceci est une solution à l'erreur ci-dessus que je veux documenter. J'ai trouvé d'autres publications similaires, mais aucune n'a décrit comment cette erreur peut être associée à Cordova ou à Ionic.
Si vous ne faites pas attention, il peut y avoir un décalage entre la version de Gradle utilisée par Android Studio et la version de Gradle spécifiée par Cordova/cordova-Android dans son code d'application généré automatiquement. Comme vous le savez, courir
$ cordova platform add Android
(ou $ ionic platform add Android
, si vous construisez une application ionique) crée le code de l'application native sur le projet/plates-formes/Android.
Dans ce dossier, le fichier: /the-project/platforms/Android/cordova/lib/builders/GradleBuilder.js exporte une variable comme indiqué ci-dessous:
var distributionUrl = process.env['CORDOVA_Android_GRADLE_DISTRIBUTION_URL'] || 'http\\://services.gradle.org/distributions/gradle-x.y-all.Zip';
Où x et y ont indiqué la version de Cordova/cordova-Android utilisée pour créer le code d'application natif.
Quand tu cours
$ cordova build Android
La version de Gradle spécifiée dans la variable distributionUrl
est la version utilisée pour la construction.
Maintenant, voici la partie la plus délicate. Lorsque vous importez le projet dans Android Studio, vous recevrez probablement un message vous recommandant vivement de mettre à niveau Gradle vers une version plus récente, comme indiqué ci-dessous:
Si vous procédez ainsi, Android Studio téléchargera une nouvelle version de Gradle, la stockera localement et configurera le projet pour utiliser la distribution Gradle locale récemment téléchargée, qui correspond à l'option radio située sous l'option "Utiliser le wrapper de grade par défaut". , que j'ai fini par désélectionner car cela provoquerait des erreurs.
Cela posera des problèmes, car Android Studio et Cordova essaieront désormais de créer l’application avec différentes versions de Gradle et vous obtiendrez des erreurs de compilation dans Android Studio et également avec.
$ cordova build Android
dans la ligne de commande. La solution avec les applications Cordova est de toujours laisser le projet Android Studio réglé sur "Utiliser l’encapsuleur par défaut" et d’ignorer les messages tentants à mettre à niveau. Si vous souhaitez utiliser une version plus récente de Gradle, vous pouvez toujours modifier la variable distributionUrl dans le fichier mentionné ci-dessus (toutefois, Cordova déconseille fortement de modifier le code dans le dossier des plates-formes car il est facilement écrasé). Au moment de la rédaction de ce document, je ne saurais vous dire s’il existe un moyen de définir la version de Gradle à la place.
$ cordova platform add Android
étape, c'est-à-dire quand vous voulez le faire pour ne jamais modifier directement le code à l'intérieur du projet/des plates-formes
Pour moi, les commandes suivantes ont résolu le problème:
cordova platform remove Android
cordova platform add Android
ionic build Android
J'aimerais juste laisser cela comme un commentaire, mais je ne suis apparemment pas assez digne de confiance ...
Après avoir lu votre documentation, je ne pouvais pas résoudre mon problème en vous suggérant de laisser Android Studio "Utiliser le wrapper par défaut". Ce que j’ai trouvé, c’est que le fait de configurer la variable de session CORDOVA_Android_GRADLE_DISTRIBUTION_URL avant la construction m’a amené un peu plus loin:
root@dev:$ export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.Zip"
root@dev:$ cordova build Android
La prochaine chose que je devais faire était de modifier <project>/platforms/Android/build.gradle
et <project>/platforms/Android/CordovaLib/build.gradle
et de s’assurer qu’ils indiquaient tous les deux une version valide du plugin Gradle.
dependencies {
classpath 'com.Android.tools.build:gradle:2.2.0'
}
... et dans <project>/platforms/Android/CordovaLib/build.gradle
j'ai ajouté jcenter dans les dépôts (car maven.org ne semblait pas avoir la version 2.2.0)
repositories {
mavenCentral();
jcenter()
}
J'ai pu construire alors.
Revenir à «Utiliser l’encapsuleur par défaut» n’a pas fonctionné pour mon projet ionic 1, mais l’exécution
ionic platform remove Android
ionic platform add Android
A travaillé pour moi
vous pouvez modifier la valeur dans platform/Android/cordova/lib/builders/GradleBuilder.js
la valeur que vous avez modifiée, elle sera remplacée par la dernière version de Zip lors de la réinstallation de la plate-forme Android. Vous n'avez donc pas à vous soucier de la modifier.
var distributionUrl = process.env['CORDOVA_Android_GRADLE_DISTRIBUTION_URL'] || 'https\\://services.gradle.org/distributions/gradle-2.14.1-all.Zip';
ou comme les autres ans
export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-2.14.1-all.Zip"
Un autre moyen de résoudre le problème, qui fonctionne également sous Windows:
cordova build Android --release --CORDOVA_Android_GRADLE_DISTRIBUTION_URL=https\://services.gradle.org/distributions/gradle-2.14.1-all.Zip
Je veux prolonger la réponse de @bungler.
J'ai été confondu avec la version de Gradle et la version compatible du plugin Android pour Gradle. Le lien suivant contient la liste des versions compatibles mappées:
Gradle vs plugin Android pour gradle - Liste des versions compatibles
Pour la version actuelle de gradle 3.3+, la version compatible du plugin Android est 2.3.3.
Les réglages finaux ressembleront donc à:
Pour Mac
ÉTAPE 1: Ajoutez les variables suivantes dans les variables env:
option a) mettre à jour la variable env:
export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="https\://services.gradle.org/distributions/gradle-3.3-all.Zip"
ou
option b) vous pouvez télécharger le fichier gradle fichier et le placer dans <project>/platforms/Android/gradle/
et mettre à jour la variable env:
export CORDOVA_Android_GRADLE_DISTRIBUTION_URL="../gradle-3.3-all.Zip"
ÉTAPE 2: Mise à jour suivante dans <project>/platforms/Android/CordovaLib/build.gradle
buildscript {
...
dependencies {
classpath 'com.Android.tools.build:gradle:2.3.3'
}
}
Cela a fonctionné pour moi.
Pour suivre l'erreur:
La version minimum prise en charge par Gradle est 4.1. La version actuelle est la 3.3. Si en utilisant le gestionnaire de niveaux, essayez d’éditer le distributionUrl dans E:\ionic\MyIonicProject\gr adle\wrapper\gradle-wrapper.properties à gradle-4.1-all.Zip for gradle 4.1
Cette commande a fonctionné pour moi:
ionic cordova platform update Android
Suite à la réponse de Chuck Holbrooks, avec la solution suivante, je reçois une erreur lorsque j'essaie d'ajouter une plate-forme Android en disant qu'elle est déjà ajoutée.
ionic cordova platform remove Android
ionic cordova platform add Android
Ma solution de travail:
ionic cordova platform remove Android
ionic cordova platform check Android
ionic cordova platform add Android