66 votes

échec des exigences de cordova Android : "Impossible de trouver une version installée de Gradle"

J'essaie de construire un projet Cordova Android en utilisant les outils les plus récents. J'ai suivi les instructions aquí :

$ cordova create myApp com.myCompany.myApp myApp
$ cd myApp
$ cordova platform add android@6.2.1 --save
$ cordova requirements android --verbose

Mais le résultat est là :

Running command: android list targets
Command finished with error code 0: android list,targets

Requirements check results for android:
Java JDK: installed 1.8.0
Android SDK: installed true
Android target: installed android-25,android-23
Gradle: not installed 
Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle 
in your path, or install Android Studio
Error: CordovaError: Some of requirements check failed
    at /usr/local/nodejs_next/lib/node_modules/cordova/src/cli.js:401:45
    at _fulfilled (/usr/local/nodejs_next/lib/node_modules/cordova/node_modules/q/q.js:787:54)
    at self.promiseDispatch.done (/usr/local/nodejs_next/lib/node_modules/cordova/node_modules/q/q.js:816:30)
    at Promise.promise.promiseDispatch (/usr/local/nodejs_next/lib/node_modules/cordova/node_modules/q/q.js:749:13)
    at /usr/local/nodejs_next/lib/node_modules/cordova/node_modules/q/q.js:557:44
    at flush (/usr/local/nodejs_next/lib/node_modules/cordova/node_modules/q/q.js:108:17)
    at _combinedTickCallback (internal/process/next_tick.js:73:7)
    at process._tickCallback (internal/process/next_tick.js:104:9)

Il ne semble pas pouvoir trouver Gradle (je ne sais pas où il est censé se trouver).

J'ai vu rapports de problèmes avec Cordova et Android SDK Tools 25.3, mais cela semble être différent, et j'ai 25.2.3 (voir ci-dessous).

J'ai le problème suivant (sous CentOS 6.8) :

$ cordova --version
6.5.0

$ node --version
v6.10.2

$ npm --version
3.10.10

$ java -version
openjdk version "1.8.0_121"

$ echo $JAVA_HOME
/usr/lib/jvm/java-1.8.0

$ echo $ANDROID_HOME
/usr/local/android-sdk

# I installed the Android SDK from here
# https://developer.android.com/studio/index.html#downloads
# under "Get just the command line tools"

$ /usr/local/android-sdk/tools/bin/sdkmanager --list
Installed packages:
  Path                        | Version | Description                    | Location                    
  -------                     | ------- | -------                        | -------                     
  build-tools;23.0.3          | 23.0.3  | Android SDK Build-Tools 23.0.3 | build-tools/23.0.3/         
  build-tools;25.0.2          | 25.0.2  | Android SDK Build-Tools 25.0.2 | build-tools/25.0.2/         
  extras;android;m2repository | 47.0.0  | Android Support Repository     | extras/android/m2repository/
  extras;google;m2repository  | 46      | Google Repository              | extras/google/m2repository/ 
  patcher;v4                  | 1       | SDK Patch Applier v4           | patcher/v4/                 
  platform-tools              | 25.0.4  | Android SDK Platform-Tools     | platform-tools/             
  platforms;android-23        | 3       | Android SDK Platform 23        | platforms/android-23/       
  platforms;android-25        | 3       | Android SDK Platform 25        | platforms/android-25/       
  tools                       | 25.2.3  | Android SDK Tools 25.2.3       | tools/                      

UPDATE:

Cela ne semble être mentionné nulle part dans la documentation de Cordova ou d'Android, mais si vous utilisez les outils de ligne de commande d'Android sans Android Studio, vous devez installer manuellement Gradle. Une fois que vous l'aurez fait, et qu'il sera dans votre PATH, cette erreur disparaîtra.

Une chose supplémentaire qui me déroutait : dans les anciennes versions des outils Android SDK, il y avait un wrapper Gradle script en tools/templates/gradle/wrapper/gradlew . Cela peut également être utilisé pour installer Gradle, mais j'ai trouvé plus facile de l'installer manuellement. Il semble que cette fonction ait été supprimée dans la dernière version.

72voto

Daniel Points 2194

Solution pour linux avec apt-get (ex. : Ubuntu, Debian)

J'ai un problème assez similaire. J'ai obtenu l'erreur :

Error: Could not find an installed version of Gradle either in Android Studio,
or on your system to install the gradle wrapper. Please include gradle 
in your path, or install Android Studi

mais sans exception. J'ai résolu le problème sur Ubuntu en

sudo apt-get install gradle

J'ai aussi trouvé des commandes qui permettent d'installer la dernière version de gradle sous Ubuntu. Cela ne fonctionne que si la première commande est exécutée avant (probablement certaines dépendances sont incorrectes).

sudo add-apt-repository ppa:cwchien/gradle
sudo apt-get update
sudo apt-get install gradle-ppa

https://wtanaka.com/node/8079

Si cela ne fonctionne pas, essayez :

export PATH=$PATH:/opt/gradle/gradle-3.5/bin

Plus d'informations :

https://askubuntu.com/questions/915980/package-is-installed-and-is-not-detected-gradle/915993#915993

Pour CentOS

Instruction d'installation gradle pour CentOS est sous ce lien

https://gist.github.com/parzonka/9371885

Mise à jour

J'installe maintenant gradle par sdkman c'est quelque chose comme nvm pour le noeud.

Installer sdkman

curl -s "https://get.sdkman.io" | bash 

Installer gradle

sdk install gradle 4.0.2

0 votes

Fonctionne parfaitement sur Debian 9 stretch

2 votes

Bien que cela fonctionne, cela installe un deuxième gradle dans le système, qui à son tour installe OpenJDK. Il n'est pas nécessaire d'ajouter tous ces éléments au système lorsqu'il existe déjà un gradle et un JRE dans le répertoire d'installation d'Android Studio.

0 votes

J'ai sauvé ma journée ! merci :) fonctionne parfaitement sur Linux Ubuntu 16.04 LTS :)

43voto

Surendra Shrestha Points 635

Si vous avez installé Android studio, vous pouvez essayer :

export PATH="$PATH:/home/<username>/android-studio/gradle/<gradle-4.0>/bin" 

Cela a résolu mon problème.

3 votes

Cela devrait être la réponse acceptée ! pas de dépendances et de paquets supplémentaires introduits

2 votes

Cela devrait être la réponse acceptée. Sachez que vous devrez peut-être ajouter la permission +x à l'exécutable gradle pour les utilisateurs réguliers si Android Studio a été installé en tant que Root. C'était mon cas et le répertoire était '/opt/Android-studio/gradle/gradle-4.1/bin' à la place. Cette réponse en bas a également été utile pour moi.

11 votes

Sur Mac, c'est quelque chose comme ça /Applications/Android Studio.app/Contents/gradle/gradle-4.4/bin/ .

37voto

Diogo Rodrigues Points 168

Pour Windows :

-Télécharger la dernière version de Gradle ( https://gradle.org/releases )

-Créez un dossier et dézippez les fichiers (j'utilise C:\Program Fichiers (x86) \gradle )

-Copier le chemin avec le répertoire bin inclus ( C:\Program Fichiers (x86) \gradle\bin )

-Définir le chemin C:\Program Fichiers (x86) \gradle\bin (dans mon exemple) à "Variables d'environnement du chemin".

Nom de variable "Path" et valeur de variable " C:\Program Fichiers (x86) \gradle\bin " pour les deux : Tableau des variables utilisateur et tableau des variables système

Il se peut que vous deviez rouvrir la "ligne de commande Prompt".

Pour tester, tapez gradle dans l'invite.

1 votes

On m'a également demandé de redémarrer le PC bien qu'il ait été ajouté à PATH (et alors qu'il fonctionnait dans cmd).

0 votes

Ce qui a fait la différence pour moi, c'est que vous avez écrit "pour les deux", ce qui signifie qu'il faut le placer à la fois dans les variables utilisateur et dans les variables système - merci !

12voto

Gandhi Points 9464

J'utilise Cordova version 7.0.1 et Cordova Android version 6.2.3. J'ai été confronté à un problème lors de la construction d'Android. J'utilise uniquement Cordova CLI et pas du tout Android Studio.

La solution rapide pour résoudre ce problème avant qu'il ne soit officiellement corrigé dans Cordova est la suivante :

  1. Cherchez check_reqs.js classez sous plates-formes \android\cordova\lib dossier
  2. Modifiez la partie else de androidStudioPath vérification de la variable nulle get_gradle_wrapper comme ci-dessous :

Code existant :

else { //OK, let's try to check for Gradle! return forgivingWhichSync('gradle'); }

Code modifié :

else { //OK, let's try to check for Gradle! var sdkDir = process.env['ANDROID_HOME']; return path.join(sdkDir, 'tools', 'templates', 'gradle', 'wrapper', 'gradlew'); }

NOTE : Ce changement doit être effectué à chaque fois que la plateforme Android est retirée et réintroduite.

UPDATE : Dans mon cas, j'avais déjà un wrapper gradle dans mon SDK Android et je ne trouvais pas nécessaire d'installer gradle explicitement. Par conséquent, j'ai fait cette solution de contournement pour minimiser mon impact et mes efforts.

0 votes

Je pense que ce gradlew dans "templates" a été supprimé dans les SDK Android plus récents. Vous devez donc installer gradle manuellement (voir ma mise à jour de l'article original).

0 votes

@JW merci pour l'info. mais j'ai installé la dernière version d'Android (SDK 25) et j'avais le wrapper gradle. Je ne suis pas sûr qu'il fasse partie des anciens SDK. De plus, cette vérification n'échoue que dans la version récente de Cordova. J'ai donc trouvé la solution la plus simple pour l'instant car je ne trouve pas gradle nécessaire dans mon cas.

0 votes

@JW. J'ai mis à jour ma réponse en conséquence

3voto

julianalimin Points 118

Pour moi, le problème était que ma version d'Android était toujours en 6.1.2, ce qui n'est pas compatible avec la dernière version d'Android Studio 2.3.1.

Donc ce que j'ai fait c'est de lancer

cordova platform rm android cordova platform add android@6.2.1

2 votes

J'avais spécifiquement ajouté la 6.2.1, donc ce n'est pas mon problème.

0 votes

C'est ma faute @JW. Je n'avais pas remarqué que vous aviez mentionné l'utilisation de la 6.2.1 dans votre question.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X