Ich versuche, ein Cordova Android-Projekt mit den neuesten Tools zu erstellen. Ich habe die Anweisungen hier befolgt:
$ cordova create myApp com.myCompany.myApp myApp
$ cd myApp
$ cordova platform add [email protected] --save
$ cordova requirements Android --verbose
Aber das Ergebnis ist:
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)
Es scheint nicht in der Lage zu sein, Gradle zu finden (nicht sicher, wo das sein soll).
Ich habe Berichte von Problemen mit Cordova und Android SDK Tools 25.3 gesehen, aber das scheint anders zu sein, und ich habe 25.2.3 (siehe unten).
Ich habe folgendes (dies ist auf 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:
Es wird anscheinend nirgendwo in Cordovas oder Android-Dokumenten erwähnt. Wenn Sie jedoch die Android-Befehlszeilenprogramme ohne Android Studio verwenden, müssen Sie Gradle manuell installieren. Sobald Sie dies getan haben und sich auf Ihrem PFAD befindet, wird dieser Fehler behoben.
Eine weitere Sache, die mich verwirrte: In älteren Versionen von Android SDK-Tools gab es ein Gradle-Wrapper-Skript in tools/templates/gradle/wrapper/gradlew
. Dies kann auch zur Installation von Gradle verwendet werden, aber ich fand es einfacher, es einfach manuell zu installieren. Dies scheint seit der neuesten Version entfernt worden zu sein.
Ich habe ein ganz ähnliches Problem. Ich habe einen Fehler erhalten:
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
aber ohne Ausnahme. Ich habe es auf Ubuntu von gelöst
Sudo apt-get install gradle
Ich habe auch Befehle gefunden, mit denen die neueste Version von Gradle in Ubuntu installiert werden kann. Es funktioniert nur, wenn der erste Befehl zuvor ausgeführt wurde (wahrscheinlich sind einige Abhängigkeiten falsch).
Sudo add-apt-repository ppa:cwchien/gradle
Sudo apt-get update
Sudo apt-get install gradle-ppa
Wenn es nicht funktioniert, versuchen Sie Folgendes:
export PATH=$PATH:/opt/gradle/gradle-3.5/bin
Mehr Info:
https://askubuntu.com/questions/915980/package-is-install-und-is-not-detected-gradle/915993#915993
Die Installationsanweisung gradle
für CentOS befindet sich unter diesem Link
Nun installiere ich gradle von sdkman es ist so etwas wie nvm für node.
Installieren Sie sdkman
curl -s "https://get.sdkman.io" | bash
Gradle installieren
sdk install gradle 4.0.2
Wenn Sie Android Studio installiert haben, sollten Sie Folgendes versuchen:
export PATH="$PATH:/home/<username>/Android-studio/gradle/<gradle-4.0>/bin"
Das hat mein Problem gelöst.
Ich verwende Cordova Version 7.0.1 und Cordova Android Version ist 6.2.3. Ich war mit dem Problem während der Ausführung von Android konfrontiert. Ich verwende nur Cordova-CLI und verwende kein Android-Studio.
Die schnelle Problemumgehung für dieses Problem, bevor es in Cordova behoben wurde, lautet wie folgt:
check_reqs.js
-Datei im Ordner platform\Android\cordova\libandroidStudioPath
-Variablennullprüfung in der get_gradle_wrapper
-Funktion wie folgt:Vorhandener Code:
else { //OK, let's try to check for Gradle! return forgivingWhichSync('gradle'); }
Modifizierter Code:
else { //OK, let's try to check for Gradle! var sdkDir = process.env['Android_HOME']; return path.join(sdkDir, 'tools', 'templates', 'gradle', 'wrapper', 'gradlew'); }
HINWEIS: Diese Änderung muss jedes Mal durchgeführt werden, wenn die Android-Plattform entfernt und erneut hinzugefügt wird
UPDATE: In meinem Fall hatte ich bereits einen gradle-Wrapper in meinem Android-SDK und ich möchte nicht unbedingt gradle explizit installieren. Daher habe ich diese Problemumgehung vorgenommen, um meine Auswirkungen und Anstrengungen zu minimieren
Für Windows:
-Laden Sie die letzte Version von Gradle herunter ( https://gradle.org/releases )
-Erstellen Sie einen Ordner und entpacken Sie Dateien (ich verwende C:\Programme (x86)\gradle)
- Kopieren Sie den Pfad mit dem enthaltenen bin-Verzeichnis (C:\Programme (x86)\gradle\bin).
- Setzen Sie den Pfad C:\Programme (x86)\gradle\bin (in meinem Beispiel) auf "Pfadumgebungsvariablen".
Variablenname "Path" und Variablenwert "C:\Programme (x86)\gradle\bin" für beide: Tabelle der Benutzervariablen und Tabelle der Systemvariablen
Möglicherweise müssen Sie die "Prompt-Kommandozeile" erneut öffnen.
Geben Sie zum Testen gradle in Prompt ein.
Für mich bestand das Problem darin, dass meine Android-Version noch auf 6.1.2 war, die nicht mit dem neuesten Android Studio 2.3.1 kompatibel ist.
Was ich also gemacht habe, war laufen
cordova platform rm Android
cordova platform add [email protected]
Ich folgte diesem Qiita Tutorial, um meine Probleme zu lösen.
Umgebung:Cordova 8.1.1
, Android Studio 3.2
, cordova-Android 7.0.0
.profile
-Datei.export PATH = "/ Applications/Android Studio.app/Contents/gradle/gradle-4.6/bin":$PATH
source ~/.profle
Cordova Build Android
PS: Wenn [email protected]
Buildfehler verursacht, downgraden Sie Ihre Plattformversion auf 6.3.0.
Um die Frage von OP zu beantworten:
Da Sie unter Linux sind, müssen Sie gradle selbst installieren, vielleicht nach this guide und dann einen Eintrag in PATH
in einen Ordner einfügen, der gradle
ausführbare Datei enthält.
Cordova hat einen Code, nach dem Gradle gesucht werden soll, wenn Sie Android Studio haben, jedoch nur für Mac und Windows. Siehe hier:
Teilweise mit OPs Frage verbunden, da ich unter Windows bin.
Nach dem Upgrade auf Android Studio 2.3.1
, [email protected]
, [email protected]
([email protected]) hatte ich Build-Probleme aufgrund fehlender Ziele 25 und Gradle.
Das erste Problem wurde mit einem Kommentar von X.Zhang gelöst (dh Android
in avdmanager
). Übrigens scheint es eine Verpflichtung zu sein, zu beheben, dass auf github gelandet ist also sollte Cordova-Android das in 6.3.0 beheben (aber ich habe es nicht t test).
Die zweite Ausgabe war wie folgt:
Das Problem stellte sich heraus, dass process.env['ProgramFiles']
zu 'C:\\Program Files (x86)';
ausgewertet wird, wohingegen ich Android Studio in C:\\Program Files
verwendet.
Der schnelle Hack besteht also darin, diesen Wert entweder zu überschreiben oder Android Studio an einem anderen Ort zu installieren.
// 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') + '/';
Ich bin nicht sicher, was der richtige Fix wäre, um beide Ordner auf robuste Weise zu handhaben (abgesehen von dem Durchlaufen beider Ordner).
Natürlich muss dies im Cordova-Android-Projekt selbst behoben werden. Andernfalls sind Ihre Fixes weg, wenn Sie cordova platform rm
ausführen.
Ich habe das Ticket auf Cordova JIRA geöffnet:
Erweitern von https://stackoverflow.com/users/5540715/surendra-shrestha answer für Linux-Benutzer (~ mint):
1. Installieren Sie Android Studio (Viele Tools wurden für die Befehlszeile nicht mehr verwendet, daher ist dies wahrscheinlich erforderlich). Wenn Sie die Anweisungen des Autors befolgen, wird Ihr Android Studio in/usr/local/Android-studio/installiert. Zum Zeitpunkt des Schreibens ist die Gradle-Version in Android Studio 3.2. Schauen Sie sich Ihre Version mit ls /usr/local/Android-studio/gradle/
an.
2. Fügen Sie Ihren Gradle-Befehl hinzu. Dies kann durch Erweitern des PATH erfolgen, wie @ surendra-shrestha vorschlägt (sollte in ~/.bashrc geschrieben werden, um die PATH-Änderung beizubehalten), und einen Alias echo 'export alias gradle=/usr/local/Android-studio/gradle/gradle-3.2/bin/gradle' >> ~/.bashrc && source ~/.bashrc
hinzufügen. Oder einen symbolischen Link erstellen: Sudo ln -sn /usr/local/Android-studio/gradle/gradle-3.2/bin/gradle /usr/bin/gradle
(dies war meine Wahl).
3. Führen Sie cordova requirements
aus, um zu überprüfen, ob alles in Ordnung ist. Es sollte etwa Folgendes ausgegeben werden:
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
gleiches problem aber sehr einfach auf mac mit brew:
Ich habe viele ausprobiert, aber es hat nicht funktioniert.
Sudo chmod -R a+rwx /Library/Java/JavaVirtualMachines *
Sudo chmod -R a+rwx *
Sudo chmod 777 {your-gradle-path}
Es fing sofort an zu arbeiten
Gradle kann auf dem Mac hinzugefügt werden, indem die folgende Zeile zu ~/.bash_profile
hinzugefügt wird. Wenn die Datei nicht vorhanden ist, verwenden Sie bitte touch ~/.bash_profile
. Diese versteckte Datei kann im Finder mit Command + Shift +
sichtbar gemacht werden.
export PATH=${PATH}:/Applications/Android\ Studio.app/Contents/gradle/gradle-4.6/bin/
Verwenden Sie die Quelle ~/.bash_profile
, um den neuen Pfad direkt zu laden.
In Terminal laufen:
$ Sudo apt-get update
$ Sudo apt-get install gradle
Das funktioniert für mich in Ubuntu 18.04
Aktualisieren Sie Ihr Cordova auf die neueste Version, und das Problem sollte behoben werden .. Falls das Problem nicht behoben wurde, geben Sie den Pfad in der Umgebungsvariablen an (im Falle von Windows). Beispiel: Systemvariable Wertname GRADLE_HOME Wert D:\Android\Android Studio\gradle\gradle-4.3.1 (bitte durch Pfad ersetzen
Möglicherweise haben Sie das neueste Android Studio 2.3.1 installiert, der Befehl Android list targets
wurde in avdmanager list targets
geändert. So können Sie es beheben:
füge Pfad <Android-sdk>/tools/bin
zu PATH
hinzu, dies ist für MacOX.
export PATH="$PATH:/Users/<username>/Library/Android/sdk/tools/bin"
Ändern Sie Ihren Cordova-Projektcode <your-cordova-project>/platforms/Android/cordova/lib/Android_sdk.js
.
veränderung
module.exports.list_targets_with_Android = function() {
return superspawn.spawn('Android', ['list', 'targets'])
zu
module.exports.list_targets_with_Android = function() {
return superspawn.spawn('avdmanager', ['list', 'targets'])