"Android Update SDK" unter Headless Linux

77

Hat es jemand geschafft, Android SDK-Plattformen auf einem kopflosen Linux-Server zu aktualisieren / zu installieren? Ich habe nur folgenden Fehler erhalten:

Es scheint, als ob die Aktion "update sdk" tatsächlich nicht unterstützt wird?

~/android-sdk-linux_86/tools$ ./android --verbose update sdk
No command line parameters provided, launching UI.
See 'android --help' for operations from the command line.
Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-pi-gtk-3550 or swt-pi-gtk in swt.library.path, java.library.path or the jar file
        at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
        at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
        at org.eclipse.swt.internal.gtk.OS.<clinit>(Unknown Source)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
        at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
        at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
        at com.android.sdkuilib.internal.repository.UpdaterWindowImpl.open(UpdaterWindowImpl.java:93)
        at com.android.sdkuilib.repository.UpdaterWindow.open(UpdaterWindow.java:110)
        at com.android.sdkmanager.Main.showMainWindow(Main.java:281)
        at com.android.sdkmanager.Main.doAction(Main.java:251)
        at com.android.sdkmanager.Main.run(Main.java:92)
        at com.android.sdkmanager.Main.main(Main.java:81)

Update : Die Frage wurde vor einiger Zeit gestellt, als das kopflose Update nicht unterstützt wurde. Es ist jetzt möglich, nur eine zu tun android update sdk --no-ui. Danke Leute!

Fokussierer
quelle

Antworten:

52

Das kopflose und automatische Aktualisieren des Android SDK wird unter "Es gibt eine Möglichkeit, die Android-SDK-Installation zu automatisieren" beschrieben

Diego Torres Milano
quelle
4
Und noch viel mehr.
Jim McKeeth
2
Großer Hinweis: android update sdk --no-uiInstalliert ALLE Plattformen, von Eclair bis Marshmallow. Um dies zu verhindern, müssen Sie den Parameter --filter verwenden, z. B. android update sdk --no-ui --filter 1,2nur für die Plattform-Tools und SDK-Tools wie ADB und Fastboot. Die vollständige Liste der Filter finden Sie unter android list sdk tools.android.com/recent/updatingsdkfromcommand-line
Ray Foss
78

Sie können die --no-uiOption verwenden:

android update sdk --no-ui

Wenn Sie es automatisieren möchten, können Sie alle Lizenzen akzeptieren, indem Sie das expectTool mit diesem Hack verwenden (die --accept-licenseOption ist derzeit nicht vollständig in das androidTool integriert):

expect -c '
set timeout -1;
spawn android - update sdk --no-ui;
expect {
    "Do you accept the license" { exp_send "y\r" ; exp_continue }
    eof
}
'
x2on
quelle
9
Um die Lizenz automatisch zu akzeptieren, wird in der nächsten Version ein --accept-licenseFlag hinzugefügt . In der Zwischenzeit können Sieecho "y" | android update sdk --no--ui
Snicolas
@Snicolas hast du eine Quelle dafür? Die Referenzen, die ich gesehen habe, lassen es scheinen, dass eine bestimmte Lizenznummer als Parameter erforderlich ist und wahrscheinlich für den internen Gebrauch bestimmt ist. Würde gerne falsch liegen ...
Kumpel
Ein Beispiel finden Sie hier auf github: github.com/embarkmobile/android-sdk-installer/blob/master/…
Snicolas
@Snicolas Ich habe kein Echo versucht, aber ich wurde zweimal dazu aufgefordert, also würde es definitiv nicht funktionieren.
Tishma
7

Ich bin gerade auf das gleiche Problem gestoßen. Ich habe jedoch eine Problemumgehung gefunden.

Das erste ist ein Cop-out: Laden Sie die Plattformen auf einem Headed-System herunter und kopieren Sie einfach die Plattform-Unterverzeichnisse in Ihr Android SDK / Platforms-Verzeichnis.

Wenn Sie wie ich keinen sofortigen Zugriff auf eine andere Android-Entwicklerumgebung haben, können Sie in den SDK-Archiven von Google eines der anderen SDKs herunterladen, die die Plattformen enthalten. Auf diese Weise können Sie jedoch nur für Android 1.1 und 1.5 entwickeln.

Der Download für Linux-Systeme ist Android 1.5 r3. Natürlich sind die SDK-Download-Seiten von Google nicht luchsfreundlich, daher musste ich den direkten Link von einem anderen GUI-System erhalten.

wget http://dl.google.com/android/archives/android-sdk-linux_x86-1.5_r3.zip

Dann müssen Sie nur noch das Archiv entpacken und die Plattform-Sibdirs in Ihr neueres SDK-Plattformverzeichnis verschieben.

android create avd -t 3 -p path/to/avd/dir -n "name"

Dadurch wird eine AVD für die 1.5-Plattform mit Ihrem angegebenen Namen und Verzeichnis erstellt. Beachten Sie, dass das avd-Verzeichnis nicht existieren sollte. Wenn Sie überschreiben möchten, fügen Sie dem Befehl --force hinzu.

Wenn Sie so weit kommen, ist eine Plattform installiert und eine AVD erstellt. Leider ist der Versuch, eine Version zu erstellen, zu diesem Zeitpunkt für mich fehlgeschlagen, da ich einen 64-Bit-Server verwende und Google nur 32-Bit-Tools veröffentlicht.

Ich habe in der akzeptierten Antwort auf diese Fragesudo apt-get install ia32-libs zum Stapelüberlauf eine Lösung dafür gefunden und damit die 32-Bit-Tools ausführen können.

Dann sollten Sie in der Lage sein, das Android-Tool auf der CLI zu verwenden, um entweder ein Eclipse-Projekt (für 1.5 oder niedriger) in ein Ant-Build-System zu konvertieren, oder Sie können ein neues Projekt erstellen, an dem Sie arbeiten können.

Hoffe das hilft!

Marc
quelle
3

Ja, es funktioniert, aber Sie müssen die GUI-Bibliotheken installiert haben und Ihr DISPLAY muss auf den X-Server eingestellt sein, den es anzeigen soll. Ich habe es jetzt unter CentOS 5.4 und musste die Installationsoption "Server - GUI" gegenüber "Server" verwenden. Dann benutze ich einfach "ssh -X" von dem System, auf dem es angezeigt werden soll.

Jason
quelle
Können Sie ein konkreteres Beispiel geben?
Matthias
3

Ich habe gerade ein kleines Befehlszeilentool erstellt, das das Update in jeder Umgebung (GUI oder Nicht-GUI) ausführt. Ich hatte keine Gelegenheit, es ausgiebig zu testen, aber soweit ich das beurteilen kann, macht es das, was es sollte.

Das Befehlszeilentool aktualisiert ein vorinstalliertes Basis-Android-SDK mit allen derzeit verfügbaren Plattformen, Add-Ons, Extras, Dokumenten, Beispielen und Tools. Dies sollte für einen Build-Server ausreichen (ich benötige dies für meine Hudson CI-Installation mit Maven).

Bitte gehen Sie hier für weitere Details:

http://code.google.com/p/android-sdk-tool

Gepard
quelle