Ich möchte die Android-Entwicklungsumgebung über die Befehlszeile einrichten und auf das folgende Problem stoßen:
wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz
Führen Sie nach dem Extrahieren der Datei aus
tools/android update sdk --no-ui
Beim Laufen ist es jedoch zu langsam
Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml
Das Ergebnis ist, dass nichts in Ordner-Build-Tools, und ich möchte, aapt und apkbuilder ist, da ich apk über die Befehlszeile ohne ant erstellen möchte.
quelle
--all
Option in den offiziellen Tipps nicht erwähnt . Danke dir.echo "yes"
kann auf verkürzt werdenecho "y"
, aber das funktioniert sowieso nicht in allen Fällen. In einigen Fällen können Sie je nach Filter und bestimmten Paketen mehr als eine Eingabeaufforderung für eine Lizenz erhalten.echo "y"
antwortet nur auf die erste Eingabeaufforderung, nicht jedoch auf den Rest. Ich versuche, es mityes
Befehl zum Laufen zu bringen, ohne Erfolg.Wie in anderen Antworten erwähnt, können Sie die
--filter
Option verwenden, um die installierten Pakete einzuschränken:android update sdk --filter ...
In den anderen Antworten wird nicht erwähnt, dass Sie für die Filteroptionen konstante Zeichenfolgenbezeichner anstelle von Indizes (die sich ändern) verwenden können. Dies ist hilfreich für unbeaufsichtigte oder Skriptinstallationen. Mann für
--filter
Option:android list sdk --all --extended
::Anschließend können Sie die Zeichenfolgen-IDs als Filteroptionen verwenden, um die gewünschten Versionen genau anzugeben:
android update sdk --filter tools,platform-tools,build-tools-19.0.3
uswquelle
--extended
Option, um zu verdeutlichen, was für CI-Skripte installiert werden soll.android update
erfordert auch die--all
Option, andernfalls wird die Verwendungshilfe angezeigt. Zum Beispiel:android update sdk --no-ui --all --filter build-tools-21.1.0
(und +1 für die--extended
Option, mit der Sie die Aliase wie sehen könnenbuild-tools-21.1.0
)--filter
und--extended
Optionen?--extended
Option gesucht, um ein Skript zu schreiben und es in meinem Continuous Integration Server zu verwenden, wo es die SDK-Ressourcen selbst aktualisieren kann. Netter Tipp!Version 25.2.3 (und höher) des
Android SDK Tools
Pakets enthält das neue Tool sdkmanager, das die Installation von Build-Tools über die Befehlszeile vereinfacht.Es befindet sich im
android_sdk/tools/bin
Ordner.Verwendung (aus Dokumentation ):
Anwendungsbeispiel (auf meinem Mac):
Sie können auch verschiedene Optionen angeben , um beispielsweise alle Verbindungen zur Verwendung von HTTP (
--no_https
) zu zwingen oder um den Proxyserver (--proxy_host=address
und--proxy_port=port
) zu verwenden.Verwenden Sie das
--help
Flag, um die verfügbaren Optionen zu überprüfen . Auf meinem Computer (Mac) lautet die Ausgabe wie folgt:quelle
Warning: Unknown argument --package_file
?--package_file=packages.txt
.ADB Build-Tools werden nicht automatisch mit dem Befehl android update sdk --no-ui heruntergeladen
Für die Installation des Buil-Tool-Typs (in der Konsole):
Merken Sie sich die Nummer, die vor dem Artikel aufgeführt ist, und führen Sie Folgendes aus:
Befehle sollten in / YourFolder / android-sdk-linux / tools eingegeben werden
Geben Sie auch für den Remote-Ordner (z. B. von ssh geöffneter Server) Folgendes ein:
Für eine einfache Liste der ADB-Pakete geben Sie das Terminal ein:
für die Installation aller Pakete:
Oder mit Filtern (Komma ist Trennzeichen):
quelle
Eine großartige Informationsquelle, auf die ich beim Versuch gestoßen bin, alles, was mit Android SDK zu tun hat, über die Befehlszeile zu installieren, war diese Docker-Datei. In der Docker-Datei können Sie sehen, dass der Autor einen einzelnen Befehl zum Installieren
platform tools
undbuild tools
ohne weitere Interaktion ausführt . In dem Fall, in dem das OP vorgetragen hat, würde der Befehl angepasst werden an:quelle
--all
FlaggeIch hatte gerade eine verdammte Zeit damit, Android SDK-Abhängigkeiten über die Befehlszeile zu installieren, und da die Dokumentation, die mit den Tools und online geliefert wird, leider fehlt, dachte ich, ich würde hier posten, was ich entdeckt habe.
Ich arbeite mit
android sdk r24.4.1
fürlinux
. Es gibt zwei Befehle, die Sie ausführen können, um die verfügbaren Pakete aufzulisten:android list sdk
und das erschöpfendere:
android list sdk --all
Die Paketnummern für bestimmte Pakete unterscheiden sich für jeden Befehl oben! Zum Beispiel listet das erstere Paket
API 23.1 revision 3
als Paket auf#3
und das letztere listet es als auf#29
.Jetzt gibt es zwei verschiedene Möglichkeiten, um mit dem Android-Befehl zu installieren.
tools/android update sdk --no-ui --filter <package number>
und
tools/android update sdk -u -a -t <package number>
Welche Paketnummer verwenden Sie, da die Installationsbefehle jeweils die Paketnummer als Parameter verwenden können? Nach langem Online-Suchen und Ausprobieren habe ich das entdeckt
android update sdk --no-ui --filter
verwendet die Paketnummern vonandroid list sdk
und
android update sdk -u -a -t
verwendet die Paketnummern vonandroid list sdk --all
Mit anderen Worten - zur Installation
API 23.1 revision 3
können Sie entweder:android update sdk --no-ui --filter 3
oder
android update sdk -u -a -t 29
Verrückt, aber es funktioniert.
quelle
-a
ist die Kurzversion von--all
, deshalb wird diese Paketnummer verwendet. (-u
ist kurz für--no-ui
und-t
ist kurz für--filter
.)usage()
Text nicht auf dem neuesten Stand der Realität hält.Die meisten Antworten scheinen die Tatsache zu ignorieren, dass Sie das Update möglicherweise in einer kopflosen Umgebung ohne Superuser-Rechte ausführen müssen, was bedeutet, dass das Skript alle
y/n
Lizenzaufforderungen automatisch beantworten muss .Hier ist das Beispiel, das den Trick macht.
Unabhängig davon, wie viele Eingabeaufforderungen Sie erhalten, werden alle diese beantwortet. Diese
while/sleep
Schleife sieht aus wie eine Simulation des Befehls yes , und tatsächlich ist es fast so . Das Problem dabeiyes
ist, dass es stdout überflutet'y'
und es praktisch keine Verzögerung zwischen dem Senden dieser Zeichen gibt und die Version, mit der ich mich befassen musste, keinerlei Timeout-Option hatte. Es wird stdout "verschmutzen" und das Skript wird sich nicht über falsche Eingaben beschweren. Die Lösung besteht darin, eine Verzögerung zwischen dem Senden'y'
an stdout zu setzen, und genau das machtwhile/sleep
Combo.expect
ist in einigen Linux-Distributionen standardmäßig nicht verfügbar und ich hatte keine Möglichkeit, es als Teil meiner CI-Skripte zu installieren. Ich musste also die allgemeinste Lösung verwenden und nichts kann allgemeiner sein als ein einfaches Bash-Skript, oder?Tatsächlich habe ich darüber gebloggt ( NSBogan ). Weitere Informationen finden Sie hier, wenn Sie interessiert sind.
quelle
Wenn Sie
sdkmanager
installiert haben (ich verwende MAC)Ausführen,
sdkmanager --list
um verfügbare Pakete aufzulisten.Wenn Sie Build-Tools installieren möchten, kopieren Sie die bevorzugte Version aus der Liste der verfügbaren Pakete.
Um die bevorzugte Version zu installieren, führen Sie
quelle
Ja, ich hatte das gleiche Problem. Einige der Dateidownloads sind extrem langsam (oder zumindest in den letzten Tagen). Wenn Sie alles herunterladen möchten, können Sie nicht viel dagegen tun.
Hast du es bis zum Ende laufen lassen?
Sie können die Pakete, die heruntergeladen werden, mithilfe des
-t
Schalters filtern .Beispielsweise:
Als ich dies neulich versuchte, bekam ich Version 18.0.0 der Build-Tools installiert. Aus irgendeinem Grund ist die neueste Version 18.0.1 nicht in diesem Filter enthalten, und der einzige Weg, dies zu erreichen, bestand darin, alles mit dem
--all
Switch zu installieren .quelle
Ich bevorzuge es, ein Skript zu erstellen, das meine Abhängigkeiten installiert
Etwas wie:
https://github.com/caipivara/android-scripts/blob/master/install-android-dependencies.sh
quelle
Ich hatte gerade dieses Problem und schrieb schließlich eine 1-Zeilen-Bash-Dirty-Lösung, indem ich die Liste der verfügbaren Tools las und analysierte:
quelle
Inspiriert von den Antworten von @ i4niac & @ Aurélien Lambert, habe ich mir das ausgedacht
Erläuterung
android list sdk --all
Befehls sind (Veraltete Pakete ignorieren).quelle
Laden Sie das Android SDK von developer.android.com herunter (derzeit eine 149-MB-Datei für Windows). Es ist erwähnenswert, dass Android die sdkmanager-GUI entfernt hat, aber eine Befehlszeilenversion des sdkmanagers im bin-Ordner hat, der sich im tools-Ordner befindet.
sdkmanager
Sie die Eingabetaste ein.sdkmanager
(space), double hyphen (--
), type list aussdkmanager --list
(hier werden alle Pakete im SDK-Manager aufgelistet).Weitere Informationen finden Sie im offiziellen Dokument hier
Ich hoffe das hilft. :) :)
quelle
Wenn Sie Android Studio nicht benötigen, können Sie die grundlegenden Android-Befehlszeilentools von developer.android.com im Abschnitt Nur Befehlszeilentools herunterladen .
von CLI sollte es so aussehen wie:
oder
Danach entpacken Sie einfach das Archiv in den Zielordner
Und jetzt können wir alles installieren, was Sie brauchen ...
Mit dem Befehl können Sie eine vollständige Liste der Pakete abrufen
./tools/bin/sdkmanager --list
Einige Pakete erfordern die Annahme der Lizenzvereinbarung. Sie können es interaktiv akzeptieren oder einfach "y" an den Eingabestream übergeben, wie folgt (zwei Vereinbarungen für den Fall):
Natürlich können Sie auch Variablen wie ANDROID_HOME oder ANDROID_SDK_ROOT exportieren (einschließlich in ~ / .profile oder ~ / .bash_profile) oder den PATH patchen Variable - dies liegt in Ihrem Ermessen.
Skriptbeispiel:
Anforderungen: locken (oder wget) und entpacken
Fehlerbehebung:
Wenn Sie sehen
Warning: Could not create settings
, müssen Sie dastools
Verzeichnis innerhalb descmdline-tools
Verzeichnisses im ANDROID_HOME haben (erstellen Sie es bei Bedarf mit genau diesem Namen). Siehe Android-Befehlszeilentools. sdkmanager zeigt immer Folgendes an: Warnung: Es konnten keine Einstellungen erstellt werdenquelle
Build-Tools konnten standardmäßig nicht automatisch heruntergeladen werden, wie Nate in https://stackoverflow.com/a/19416222/1104031 post sagte .
Aber ich habe ein kleines Tool geschrieben, das alles für dich macht
Ich habe das Tool "Expect" als Danb in https://stackoverflow.com/a/17863931/1104031 verwendet . Sie brauchen nur android-sdk und
python27
,expect
.Dieses Skript installiert alle Build-Tools, alle SDKS und alles, was Sie für die automatische Erstellung benötigen:
quelle
echo "yes" | ./android update sdk --no-https --no-ui --filter 1,6
?Wie in anderen Antworten angegeben, muss für die Build-Tools das
--all
Flag installiert sein. Sie verwenden auch besser a-t
Filter-Flag verwenden, um die Installation ALLER Pakete zu vermeiden. Es gibt jedoch keine Möglichkeit, alle Build-Tools zu filtern.Es gibt bereits Funktionsanforderungen für diese beiden Punkte im AOSP-Bug-Tracker. Fühlen Sie sich frei, für sie zu stimmen, dies könnte sie eines Tages passieren lassen:
quelle
Ich habe versucht, dies alles zu aktualisieren, und es hat funktioniert!
quelle
Versuchen
1. Listen Sie alle Pakete auf
2. Installieren Sie Pakete mit dem folgenden Befehl
quelle
android update sdk
Dieser Befehl aktualisiert und installiert alle neuesten Versionen für SDK-Tools, Build-Tools und SDK-Plattform-Tools.
Es ist Arbeit für mich.
quelle