2010-01-28 8 views
74

Hat es jemand geschafft, Android SDK-Plattformen auf einem kopflosen Linux-Server zu aktualisieren/zu installieren? Alles, was ich habe, ist der folgende Fehler:"android update sdk" auf kopflos linux

Es scheint wie die Aktion "Update Sdk" wird eigentlich nicht unterstützt?

~/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) 

aktualisieren: Die Frage wurde vor einer Weile gefragt, wann kopflos Update unterstützt nicht. Es ist jetzt möglich, nur eine android update sdk --no-ui zu tun. Danke Leute!

+3

möglich Duplikat (http://stackoverflow.com/questions/ 4681697/is-there-a-way-to-automatisieren-die-android-sdk-installation) –

Antwort

3

Ja, es funktioniert, aber Sie müssen die GUI-Bibliotheken installiert haben und Sie müssen Ihr DISPLAY-Set auf den X-Server, den es angezeigt werden soll. Ich habe es jetzt auf CentOS 5.4 und musste die "Server - GUI" Vers "Server" Installationsoption verwenden. Dann verwende ich einfach "ssh -X" von dem System, wo ich es anzeigen möchte.

+0

Können Sie ein konkreteres Beispiel nennen? – Matthias

7

Ich lief gerade in das gleiche Problem. Ich habe jedoch einen Workaround gefunden.

Die erste ist ein Cop-Out: Laden Sie die Plattformen auf einem Kopf-System herunter und kopieren Sie einfach die Plattform-Unterverzeichnisse in Ihr Android SDK/Plattformen-Verzeichnis.

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

Der Download für Linux-Systeme ist ihre Android 1.5 r3. Natürlich sind die sdk-Download-Seiten von Google nicht lynx-freundlich, also musste ich den direkten Link von einem anderen GUI-System bekommen.

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

Dann ist es nur eine Frage der das Archiv entpacken, und Bewegen der Plattform sibdirs auf Ihre aktuelle SDK-Plattform Richt.

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

So weit ist eine Plattform installiert und erstellt einen AVD. Leider fehlgeschlagen zu diesem Zeitpunkt für mich zu bauen, weil ich einen 64-Bit-Server laufen, und Google nur 32-Bit-Tools veröffentlicht.

Ich fand eine Lösung dafür in der akzeptierten Antwort von this stackoverflow question und sudo apt-get install ia32-libs verwendet, um die Möglichkeit zu ermöglichen, die 32-Bit-Tools auszuführen.

Dann sollten Sie in der Lage sein, um das Android-Tool auf der CLI zu verwenden, um entweder ein Eclipse-Projekt zu konvertieren (für 1,5 oder niedriger) ein Ameise Build-System zu haben, oder Sie können es ein neues Projekt zu erstellen haben für Sie zu arbeiten beginnen auf.

Hoffe, das hilft!

3

Ich habe gerade ein kleines Befehlszeilentool erstellt, das das Update in jeder Umgebung (GUI oder nicht GUI) durchführt. Ich hatte nicht die Gelegenheit, es ausgiebig zu testen, aber soweit ich das beurteilen kann, tut 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 Informationen:

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

75

beschrieben wird Sie die --no-ui Option verwenden können:

android update sdk --no-ui 

Wenn Sie Wenn Sie es automatisieren möchten, können Sie alle Lizenzen mit dem Tool expect mit akzeptieren Dieser Hack (die --accept-license Option ist derzeit nicht vollständig im android Werkzeug integriert): [? Gibt es eine Möglichkeit, die android sdk Installation zu automatisieren]

expect -c ' 
set timeout -1; 
spawn android - update sdk --no-ui; 
expect { 
    "Do you accept the license" { exp_send "y\r" ; exp_continue } 
    eof 
} 
' 
+9

, um die Lizenz automatisch zu akzeptieren, wird die nächste Version eine' --accept-license' Flag hinzufügen. In der Zwischenzeit können Sie "y" | android update sdk --no - ui' – Snicolas

+3

gibt es nicht --accept-Lizenz im Moment :( – x2on

+0

@Snicolas haben Sie eine Quelle für das? Die Referenzen, die ich gesehen habe, scheinen es eine bestimmte Lizenznummer als Parameter erfordern , und wahrscheinlich für den internen Gebrauch.Wäre gerne falsch ... – mateor