Cordova Plattform hinzufügen Android funktioniert nicht beim Auflisten von Android-Zielen

76

Ich habe ein Problem, wenn ich meiner phoneGap-Anwendung eine Android-Plattform hinzufügen möchte. Ich habe diese Nachricht in meiner CLI erhalten, als ich den Befehl cordova platform add android ausführte:

Checking Android requirements... (Error: An error occurred while listing Android targets)

Ich versuche bereits, meinen Android SDK-Speicherort in der Pfadvariablen hinzuzufügen.

Bitte hilf mir ! : D.

Ich arbeite unter Windows 7 64 Bit, ich installiere die Android API 17, 18 und 19 mit dem Android SDK. Ich bin auf 3.2 phoneGap Version.

balasta75
quelle
Haben Sie Ant installiert und richtig konfiguriert?
Purus

Antworten:

167

Um zu funktionieren, muss dieser Cordova-Befehl einige Programme verwenden, die sich in Ihrem sdk/toolsVerzeichnis befinden. Sie müssen auch Apache Ant installiert haben .

Dann müssen Sie diese Verzeichnisse zu Ihrer PATHSystemvariablen hinzufügen :

Hintergrund:

  • Nehmen wir an, Sie haben Ihr Android SDK im c:\sdk\androidVerzeichnis installiert
  • Sie haben Ihre Apache-Ameise im c:\tools\apache-antVerzeichnis installiert

Dann müssen Sie zwei Systemvariablen erstellen:

  1. ANDROID_HOMEmit dem c:\sdk\androidWert
  2. ANT_HOMEmit dem c:\tools\apache-antWert

Schließlich müssen Sie die PATHVariable ändern und diese beiden am Ende des PATHWerts ' hinzufügen :

;%PATH%\tools;%ANT_HOME%\bin;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools

HINWEIS: Für diejenigen, die Linux verwenden, unterscheidet sich die Anweisung etwas.

Weitere Dokumentation finden Sie hier .

l.cotonea
quelle
66
Ich verstehe nicht, warum es für das Open Source-Projektteam so schwierig ist, sich um eine gute Dokumentation zu bemühen. Es entsteht immer eine große Lücke zwischen einem ziemlich guten Produkt und seinen Benutzern, sodass Benutzer herumfummeln und Zeit verschwenden, bis die erfahrenen Mitarbeiter etwas Licht ins Dunkel bringen.
Marschall
4
Ich verstehe dich. Ich denke, dass offene Softwareprojekte in den letzten Jahren an Qualität verloren haben. Es ist vielleicht die neueste Modeerscheinung: Jeden Tag gibt es ein 5-Sterne-Projekt unter Github und jeder scheint zu zappen, um das letzte beliebte Projekt zu übernehmen. In unserem Fall (Cordova) halte ich dies jedoch für ein Planungsproblem. Sie müssen schnell einige neue Versionen veröffentlichen, um ein Problem mit Androïd Kit Kat zu beheben. Ich nehme an, dass das Team diese Version in einem primären Ziel stabilisieren möchte, und danach werden sie wahrscheinlich den Dokumentationsteil beenden ...
l.cotonea
Ich stimme @Marshal zu, für den mittelmäßigen Programmierer ist dies der Raketenwissenschaft nahe. Ich verstehe wirklich nicht, warum es Lücken in der Dokumentation gibt (wie Phonegaps), mit denen normale Leute große Probleme haben :(
Cammy
Ich erhalte den gleichen Fehler. Alle meine Variablen sind jedoch definiert. Sie können sie hier sehen. stackoverflow.com/questions/23422961/…
Barış Akkurt
2
Ich hätte dies zum ersten Mal zum Laufen gebracht, wenn ich daran gedacht hätte, mein Eingabeaufforderungsfenster zu schließen und erneut zu öffnen. Verschwendet ungefähr 15 Minuten bevor ich merkte.
0x6C77
42

Für diejenigen, die eine Linux-Entwicklungsumgebung bevorzugen

Bedarf

Zunächst benötigen Sie einige Dinge, um loszulegen. Sie sind: Android SDKund Apache Ant. Natürlich müssen Sie Java SDK(JDK) installiert haben.

Damit das Android SDK für alle Benutzer funktioniert, müssen Sie die /etc/environmentDatei ändern und anschließend Ihren PC neu starten. Aber wenn Sie diesen harten Weg nicht wollen - folgen Sie mir, denken Sie an sich selbst als den einzigen PC-Benutzer. Und verwenden Sie die /home/YOUR_USERNAME/.bashrcDatei zum Bearbeiten.

Erinnern wir uns einmal an Ihren Heimweg, um weitere lange Schlangen zu vermeiden. Fügen Sie dieses zu Ihrem hinzu /home/YOUR_USERNAME/.bashrc:

export HOME="/home/YOUR_USERNAME"

Wir werden dann die $HOMENotation verwenden, wenn wir " /home/YOUR_USERNAME directory" sagen wollen .

Einrichten des Android SDK

Laden Sie das Android SDK-Archiv herunter und entpacken Sie es irgendwo. Nehmen wir an, Sie haben Ihr Home-Verzeichnis $HOME/adt-bundle/.

Fügen Sie diese Zeilen zu Ihrem hinzu $HOME/.bashrc:

export ANDROID_HOME="$HOME/android-bundle/sdk/tools"
export ANDROID_PLATFORM_TOOLS="$HOME/android-bundle/sdk/platform-tools"
export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$PATH"

Ant einrichten

Laden Sie wie beim Android SDK ein Archiv herunter und entpacken Sie es in Ihr Home-Verzeichnis. Fügen Sie diese dann zu Ihrem hinzu .bashrc:

export ANT_HOME="$HOME/ant"
export PATH="$PATH:$ANT_HOME/bin"

Ich habe eine über die installiert, apt-getso dass meine nicht betroffen war .bashrc.

Änderungen anwenden

Damit diese Änderungen funktionieren, sollten Sie entweder in einem neuen Terminalfenster arbeiten (das nach den Änderungen geöffnet wurde ) oder ausführen source ~/.bashrc, um Änderungen im aktuellen Terminalfenster verfügbar zu machen.

Einpacken

Am Ende erhalten Sie:

  1. Zwei Verzeichnisse in Ihrem Home-Verzeichnis - antundandroid-bundle
  2. Ein paar Zeilen, hinzugefügt zu .bashrc:

    export ANDROID_HOME="$HOME/android-bundle/sdk/tools"
    export ANDROID_PLATFORM_TOOLS="$HOME/android-bundle/sdk/platform-tools"
    export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$PATH"
    
    export ANT_HOME="$HOME/ant"
    export PATH="$PATH:$ANT_HOME/bin"
    
Shybovycha
quelle
2
Klarstellung: Dies sollte ein System so vorbereiten, dass keine PATH-Umgebungsmodifikationen für ant benötigt werden: sudo apt-get install ant ant-contrib ant-optional ant-gcj
deinerson1
@ deinerson1 aber bist du sicher, dass Debian / Ubuntu-Repositorys die richtige oder eventuell die erforderliche Ant-Version enthalten? ;)
Shybovycha
1
Dieser Befehl zeigt die Version in den Ubuntu / Debian-Repos an, um die Kompatibilität zu überprüfen (Version: 1.9.2-1 ab diesem Kommentar): apt-cache show ant
deinerson1
@ deinerson1 verschiedene Ubuntu-Versionen verwenden unterschiedliche Paketsätze. So enthält beispielsweise Ubuntu 10.04 LTS nicht die neueste Version von Ant in seinen Repos. Ich habe diesen Prozess vereinheitlicht. Ah ja und gcjist nicht oracle-java7oder was auch immer. Das sind verschiedene Java-Compiler;)
Shybovycha
Ich liebe dich. Sie retten meinen Tag
尤川豪
21

Führen Sie den Befehl "android" in Ihrem Ordner "adt \ sdk \ tools" aus und installieren Sie die neuesten Tools und das neueste SDK. Stellen Sie außerdem sicher, dass Ihr PFAD die richtigen Variablen enthält.

Dazu muss ANT installiert, ein JAVA JDK und ein Android SDK installiert sein

JAVA_HOME (C: \ Programme \ Java \ jdk)

ANT_HOME ({Ameisenort} \ Apache \ Apache-Ameise)

ANDROID_HOME ({android sdk location} \ android-sdk)

Fügen Sie diese zu Ihrer PATH-Variablen hinzu, z. B.% ANT_HOME% / bin;% ANDROID_HOME% \ tools;% ANDROID_HOME% \ platform-tools;% JAVA_HOME% \ bin

Schließen Sie Ihr cmd, öffnen Sie es erneut und führen Sie Ihren Befehl erneut aus.

Ähnlich wie bei PhoneGap / Cordova Android Development

Llewellyn Collins
quelle
3
Prägnante Lösung für die Windows-Plattform. Großartig!
Swdev
1
Diese Antwort gab mir den Hinweis in LINUX, da ich auch einen androidBefehl ausführen kann , um den Android SDK Manager zu öffnen und Andrid SDK Build-tools 19.0.2 zu installieren. Davor habe ich auch Android SDK von ihrer Website installiert ist , und fügen Sie export PATH=${PATH}:/home/YOUR_USER_HERE/adt-bundle/sdk/platform-tools:/home/YOUR_USER_HERE/adt-bundle/sdk/toolszu ~/.bash_profile. Danach ist alles in Ordnung installiert.
Ziiweb
4

Ich bin nicht sicher, ob dies Ihr Problem ist, aber ich habe ähnliche Fehler festgestellt, wenn der Cordova-Bibliothekscache mit etwas Beschädigtem verschmutzt wird. Um das Problem zu beheben, müssen Sie nur den Cordova-Cache löschen. Bei der nächsten Verwendung von 'Cordova' wird er automatisch neu gefüllt.

Unter OS X lautet dieses Verzeichnis ~ / .cordova. Unter Windows gehe ich davon aus, dass es sich immer noch um .cordova im Home-Verzeichnis Ihres Benutzers handelt.

Jason Farnsworth
quelle
4

Die Antwort lautet "All of the Above". Gehen Sie wie bei den Umgebungsvariablen erwähnt wie folgt vor:

C: \ Benutzer {IHR_NAME} .cordova \ lib \ android \ cordova \ 3.5.0 \ Framework Bearbeiten Sie die Datei project.properties und ändern Sie target = android-19 in target = android-20.

Vermutlich muss dies auch für die nächste Wiedergabe von Android SDKs geändert werden, bis dieses kleine Problem behoben ist.

Tristan Isfeld
quelle
3

Ich hatte das gleiche Problem, obwohl die Pfadvariablen genau gemäß den Anweisungen festgelegt wurden. Nachdem ich mehrere Dateien durchgesehen hatte, wurde es endlich gelöst. Für mich (Windows 7 Enterprise 64 Bit) musste ich check_reqs.js und create.js aus dem Ordner "C: \ Users \ .cordova \ lib \ android \ cordova \ 3.5.0 \ bin \ lib \" ändern , um den absoluten Pfad einzuschließen für die android.bat. Mein Android SDK befindet sich unter "C: \ Android \ android-sdk".

In check_reqs.js habe ich geändert

child_process.exec('android list targets', function(err, stdout, stderr) {

zu

child_process.exec('C:\\Android\\android-sdk\\tools\\android.bat list targets', function(err, stdout, stderr) {

In create.js habe ich die Anweisung geändert

return exec('android update project --subprojects --path "' + projectPath + '" --target ' + target_api + ' --library "' + path.relative(projectPath, targetFrameworkDir) + '"');

zu

return exec('C:\\Android\\android-sdk\\tools\\android.bat update project --subprojects --path "' + projectPath + '" --target ' + target_api + ' --library "' + path.relative(projectPath, targetFrameworkDir) + '"');

Vergessen Sie auch nicht das doppelte "\\" im absoluten Pfad

508Ninja
quelle
2

Nach einem langen Kampf, nachdem ich alle oben genannten Vorschläge mehr als einmal mit wachsender Verzweiflung gemacht hatte, öffnete ich einfach mein cmd als Administrator. es funktionierte. Ich glaube, ich habe mich einfach zu sehr an "sudo" gewöhnt, bevor ich diesen PC bekam.

Yuval Perelman
quelle
2

Für diejenigen, die auf dieses Problem gestoßen sind, füge ich etwas hinzu, das hilfreich sein kann. In meinem Fall waren alle Variablen richtig konfiguriert und dies war immer noch nicht in der Lage, eine Android-Plattform hinzuzufügen, und ich habe mein Avast-Antivirus und Puff deaktiviert! Alles verlief reibungslos. Es geschah, dass das Antivirenprogramm die Erstellung der Plattform blockierte.

Für mich war es auch wichtig, den PC neu zu starten. ;)

Grüße.

Darq Roya
quelle
Gleiches gilt für Comodo ... [>. <]
Jeffrey Nicholson Carré
1

Ich habe das Problem mit Cygwin / Windows 7 festgestellt. Das Problem ergibt sich aus der etwas anderen Art und Weise, wie Cygwin- und MS-DOS-Shells .bat-Dateien behandeln.

Während "Plattform hinzufügen" ruft Cordova "Android" auf:

C:\Users\xxx\.cordova\lib\android\cordova\3.4.0\bin\lib\check_reqs.js

Wo es "Android-Liste Ziele" nennt (in Zeile 73)

"android" sollte in /xx/android-sdk/tools/android.bat oder xx: \ android-sdk \ tools \ android.bat aufgelöst werden. (Und tatsächlich kann ich "android" auf der MS-DOS-Befehlsshell ausführen - aber nicht in der Cygwin-Shell. Dort muss ich ".bat" hinzufügen.)

"android" ohne ".bat" schlägt in der Cygwin-Shell fehl, weil android.exe nicht existiert (nur .bat). Wenn Sie Zeile 73 ändern, um "android.bat list target" aufzurufen, wird Ihr Problem behoben (oder es wird eine angemessene Fehlermeldung angezeigt).

Eine andere Problemumgehung besteht darin, Cordova in einer MS-DOS-Shell anstelle der Cygwin-Shell auszuführen.

Charlie Dalsass
quelle
0

Wir haben hier eine Liste von Lösungen, also füge ich meine hinzu. Das war mir erst klar, als ich es einfach versuchte. Sie sollten% ANT_HOME% \ bin;% ANDROID_HOME% \ tools;% ANDROID_HOME% \ platform-tools zur Variablen USER PATH hinzufügen, nicht zu einer Systemvariablen. Die System-PATH-Variable verkettet automatisch die USER-PATH-Variable und übersetzt Variablen in ihren Wert. Hoffe das hilft jemandem. PS Mein Betriebssystem ist Win 7x64

BillyZ
quelle
0

Dieses Problem ist normalerweise darauf zurückzuführen, dass für das Android SDK keine PATH-Variable festgelegt wurde.

export HOME="/home/yourname"
export ANDROID_HOME="$HOME/android-bundle/sdk/tools"
export ANDROID_PLATFORM_TOOLS="$HOME/android-bundle/sdk/platform-tools"
export PATH="$ANDROID_HOME:$ANDROID_PLATFORM_TOOLS:$PATH"
export ANT_HOME="$HOME/ant"
export PATH="$PATH:$ANT_HOME/bin"
Bastin Robin
quelle
Ich habe dies und immer noch den gleichen Fehler. Ich habe jedoch kein $ ANT_HOME, da es auf osx kein bin dir gibt? $ welche ant / usr / lokal / bin / ant $ ls / usr / lokal / bin / ant / usr / lokal / bin / ant $ ant -v Apache Ant (TM) Version 1.9.4 kompiliert am 29. April 2014 $ cordova - -Version 4.0.0
Mylord