web-dev-qa-db-fra.com

cordova: la configuration requise pour Android a échoué: "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 ici :

$ cordova create myApp com.myCompany.myApp myApp
$ cd myApp
$ cordova platform add [email protected] --save
$ cordova requirements Android --verbose

Mais le résultat est:

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 être en mesure de trouver Gradle (je ne sais pas où cela est supposé être).

J'ai vu des 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 suivant (c'est sur 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/                      

METTRE À JOUR:

Il ne semble pas être mentionné nulle part dans la documentation de Cordova ou d'Android, mais si vous utilisez les outils de ligne de commande Android sans Android Studio, vous devez installer Gradle manuellement. Une fois que vous avez terminé, et c'est sur votre CHEMIN, cette erreur disparaîtra.

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

39
JW.

Solution pour Linux avec apt-get (par exemple: Ubuntu, Debian)

J'ai un problème assez similaire. J'ai obtenu une 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. Je l'ai résolu sur Ubuntu par 

Sudo apt-get install gradle

J'ai également trouvé des commandes qui permettent d'installer la dernière version de Gradle dans Ubuntu. Cela fonctionne seulement quand la première commande est exécutée auparavant (certaines dépendances sont probablement 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

Mettre à jour

Maintenant, j'installe gradle par sdkman c'est quelque chose qui ressemble à nvm pour node. 

Installer sdkman

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

Installer gradle

sdk install gradle 4.0.2
52
Daniel

Si vous avez installé Android studio, vous voudrez peut-être essayer: 

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

Cela a résolu mon problème.

33
Surendra Shrestha

J'utilise Cordova version 7.0.1 et Cordova pour Android est la version 6.2.3. Je faisais face au problème lors de la construction d'Android. J'utilise uniquement Cordova CLI et n'utilise pas du tout le studio Android. 

La solution de contournement rapide de ce problème avant que son problème soit résolu à Cordoue est la suivante:

  1. Recherchez le fichier check_reqs.js dans le dossier plates-formes\Android\cordova\lib
  2. Editez la partie else de androidStudioPath variable null check dans 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'); }

REMARQUE: Ce changement doit être effectué à chaque fois que la plate-forme Android est supprimée et ré-ajoutée.

MISE À JOUR: Dans mon cas, j’avais déjà l’emballage de Gradle dans mon SDK Android et j’ai trouvé la nécessité d’installer explicitement Gradle. Par conséquent, j'ai fait cette solution de contournement pour minimiser mon impact et mes efforts

12
Gandhi

Pour les fenêtres:

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

-Créer un dossier et décompresser des fichiers (j'utilise C:\Program Files (x86)\gradle)

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

-Définissez le chemin C:\Program Files (x86)\gradle\bin (dans mon exemple) sur "Variables d'environnement de chemin".

Nom de variable "Path" et valeur de variable "C:\Program Files (x86)\gradle\bin" pour les tables de variables utilisateur et de variables système

Vous devrez peut-être rouvrir la ligne "Invite commad"

Pour tester, tapez gradle dans Invite.

3
Diogo Rodrigues

Pour moi, le problème était que ma version Android était toujours sur 6.1.2, ce qui n’est pas compatible avec le dernier Android Studio 2.3.1.

Donc ce que j'ai fait a été couru

cordova platform rm Android cordova platform add [email protected]

3
julianalimin

J'ai suivi ce tutoriel Qiita pour résoudre mon problème.

Environment:Cordova 8.1.1, Android Studio 3.2, cordova-Android 7.0.0

  1. Définissez gradle PATH dans le fichier .profile.
 export PATH = "/ Applications/Android Studio.app/Contents/gradle/gradle-4.6/bin":$PATH
  1. Exportez le paramètre.
 source ~/.profle 
  1. Maintenant, construisez le projet Cordova.
 Cordova construire Android 

PS: si [email protected] provoque une erreur de construction, rétrogradez la version de votre plate-forme en 6.3.0.

2
Rob JS

Pour répondre à la question de OP:

Puisque vous êtes sous Linux, vous devrez installer vous-même gradle, peut-être en suivant ce guide , puis mettre une entrée dans PATH dans un dossier qui contient gradle exécutable.

Cordova a du code pour rechercher gradle si vous avez Android Studio mais seulement pour Mac et Windows, voir ici:

https://github.com/Apache/cordova-Android/blob/e13e15d3e9aa4b9a61c6ece434e7c023fa5c3553/bin/templates/cordova/lib/check_reqs.js#L101-L132


Semi-liée à la question de OP, car je suis sous Windows.

Après la mise à niveau vers Android Studio 2.3.1, [email protected], [email protected] ([email protected]), des problèmes de construction se sont produits en raison de l'absence de la cible 25 et de Gradle.

Le premier problème a été résolu avec le commentaire de X.Zhang (c.-à-d. Changement Android en avdmanager), BTW semble un engagement à résoudre ce problème que a atterri sur github afin que cordova-Android répare cela en 6.3.0 (mais je ne l'ai pas fait. t test).

Le deuxième problème était le suivant:

Le problème s'est avéré que process.env['ProgramFiles'] est évalué à 'C:\\Program Files (x86)'; alors que j'ai Android Studio dans C:\\Program Files.

Le piratage rapide consiste donc à remplacer cette valeur ou à installer Android Studio à l’autre endroit.

// platforms/Android/cordova/lib/check_reqs.js

module.exports.get_gradle_wrapper = function() {
    var androidStudioPath;
    var i = 0;
    var foundStudio = false;
    var program_dir;
    if (module.exports.isDarwin()) {
        // ...
    } else if (module.exports.isWindows()) {
        // console.log(process.env['ProgramFiles'])';
        // add one of the lines below to have a quick fix...
        // process.env['ProgramFiles'] = 'C:\\Program Files (x86)';
        // process.env['ProgramFiles'] = 'C:\\Program Files';
        var androidPath = path.join(process.env['ProgramFiles'], 'Android') + '/';

Je ne suis pas sûr de la solution qui conviendrait pour gérer les deux dossiers de manière robuste (à part itérer sur les deux dossiers).

Évidemment, cela doit être corrigé dans le projet cordova-Android lui-même; sinon, chaque fois que vous ferez cordova platform rm, vos correctifs disparaîtront.

J'ai ouvert le billet sur Cordova JIRA:

https://issues.Apache.org/jira/browse/CB-12677

2
jakub.g

Extension de https://stackoverflow.com/users/5540715/surendra-shrestha answer pour les utilisateurs de linux (~ mint):
1. Installer Android Studio (de nombreux outils sont obsolètes pour la ligne de commande, ce qui est probablement nécessaire) Si vous suivez les instructions de l’auteur, votre Android Studio sera installé dans/usr/local/Android-studio /. Au moment de la rédaction de ce manuel, la version de Gradle dans Android Studio est 3.2, regardez-la avec ls /usr/local/Android-studio/gradle/.
2. Ajoutez votre commande gradle, cela peut être fait en étendant le PATH, comme @ surendra-shrestha le suggère (devrait être écrit dans ~/.bashrc pour préserver le changement PATH), en ajoutant un alias echo 'export alias gradle=/usr/local/Android-studio/gradle/gradle-3.2/bin/gradle' >> ~/.bashrc && source ~/.bashrc. Ou faire un lien symbolique: Sudo ln -sn /usr/local/Android-studio/gradle/gradle-3.2/bin/gradle /usr/bin/gradle (c'était mon choix).
3. Exécutez cordova requirements pour vérifier que tout va bien, devrait produire quelque chose comme:

Requirements check results for Android:
Java JDK: installed 1.8.0
Android SDK: installed true
Android target: installed Android-26,Android-25,Android-24,Android-23,Android-22,Android-21,Android-19,Google Inc.:Google APIs:19
Gradle: installed /usr/local/Android-studio/gradle/gradle-3.2/bin/gradle
2
jgpATs2w

J'ai essayé beaucoup mais ça n'a pas marché finalement,

  1. J'ai installé Gradle en utilisant le port Macos
  2. J'ai défini le chemin GRADLE_HOME comme indiqué après l'installation de Gradle
  3. J'ai exécuté ::

Sudo chmod -R a+rwx /Library/Java/JavaVirtualMachines *

Sudo chmod -R a+rwx *

Sudo chmod 777 {your-gradle-path}

Il a immédiatement commencé à fonctionner

1
Abhishek Mathur

macOS

Gradle peut être ajouté sur le Mac en ajoutant la ligne ci-dessous à ~/.bash_profile. Si le fichier n'existe pas, veuillez utiliser touch ~/.bash_profile. Ce fichier masqué peut être rendu visible dans le Finder à l'aide de Command + Shift +.

export PATH=${PATH}:/Applications/Android\ Studio.app/Contents/gradle/gradle-4.6/bin/

Utilisez source ~/.bash_profile pour charger directement le nouveau chemin.

1
Coanda

Run in terminal:

$ Sudo apt-get update
$ Sudo apt-get install gradle

Cela fonctionne pour moi dans Ubuntu 18.04

0
mahfuz

Mettez à jour votre cordova à la dernière version et le problème devrait être résolu ..__ Si le problème ne était pas résolu, définissez le chemin dans la variable d'environnement (dans le cas de Windows). Exemple: Variable système Nom de la valeur GRADLE_HOME Valeur D:\Android\Android Studio\gradle\gradle-4.3.1 (veuillez remplacer par votre chemin)

0
Ajit Kumar Singh

Peut-être que vous avez installé la dernière version d'Android Studio 2.3.1, la commande Android list targets a été modifiée en avdmanager list targets.

ajoute le chemin <Android-sdk>/tools/bin à PATH, ceci est pour MacOX.

export PATH="$PATH:/Users/<username>/Library/Android/sdk/tools/bin"

changez votre code de projet cordova <your-cordova-project>/platforms/Android/cordova/lib/Android_sdk.js.

changement

module.exports.list_targets_with_Android = function() {
    return superspawn.spawn('Android', ['list', 'targets'])

à

module.exports.list_targets_with_Android = function() {
    return superspawn.spawn('avdmanager', ['list', 'targets'])
0
Xiaohui Zhang