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.
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
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
Instruction d’installation gradle
pour CentOS est sous ce lien
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
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.
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:
check_reqs.js
dans le dossier plates-formes\Android\cordova\libandroidStudioPath
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
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.
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]
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
.profile
.export PATH = "/ Applications/Android Studio.app/Contents/gradle/gradle-4.6/bin":$PATH
source ~/.profle
Cordova construire Android
PS: si [email protected]
provoque une erreur de construction, rétrogradez la version de votre plate-forme en 6.3.0.
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:
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:
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
J'ai essayé beaucoup mais ça n'a pas marché finalement,
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
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.
Run in terminal:
$ Sudo apt-get update
$ Sudo apt-get install gradle
Cela fonctionne pour moi dans Ubuntu 18.04
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)
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'])