2013-06-10 6 views
11

Ich versuche, eine Umgebung einzurichten, in der ich Android-Anwendungen auf einem Ubuntu Server 13.04 entwickeln kann. Daher kann ich nur die Befehlszeile verwenden.android: Ausnahme in org.eclipse.swt.SWTError: Keine weiteren Handles [gtk_init_check() fehlgeschlagen]

Als ich android laufen, nur um zu überprüfen, ob es funktioniert, bekomme ich:

Exception in thread "main" org.eclipse.swt.SWTError: No more handles [gtk_init_check() failed] 
    at org.eclipse.swt.SWT.error(Unknown Source) 
    at org.eclipse.swt.widgets.Display.createDisplay(Unknown Source) 
    at org.eclipse.swt.widgets.Display.create(Unknown Source) 
    at org.eclipse.swt.graphics.Device.<init>(Unknown Source) 
    at org.eclipse.swt.widgets.Display.<init>(Unknown Source) 
    at org.eclipse.swt.widgets.Display.<init>(Unknown Source) 
    at org.eclipse.swt.widgets.Display.getDefault(Unknown Source) 
    at org.eclipse.swt.widgets.Shell.<init>(Unknown Source) 
    at org.eclipse.swt.widgets.Shell.<init>(Unknown Source) 
    at com.android.sdkuilib.internal.repository.ui.SdkUpdaterWindowImpl2.createShell(SdkUpdaterWindowImpl2.java:168) 
    at com.android.sdkuilib.internal.repository.ui.SdkUpdaterWindowImpl2.open(SdkUpdaterWindowImpl2.java:137) 
    at com.android.sdkuilib.repository.SdkUpdaterWindow.open(SdkUpdaterWindow.java:111) 
    at com.android.sdkmanager.Main.showSdkManagerWindow(Main.java:356) 
    at com.android.sdkmanager.Main.doAction(Main.java:334) 
    at com.android.sdkmanager.Main.run(Main.java:120) 
    at com.android.sdkmanager.Main.main(Main.java:103) 

Was ich bisher getan habe:

  • apt-get install ant
  • die "ADT-Bundle" heruntergeladen von
  • Entpacke es in meinem Home-Verzeichnis /home/camilstaps
  • Added /home/camilstaps/adt-bundle-linux/tools meiner PATH Umgebungsvariable

Was kann ich tun, um diese Ausnahme zu lösen?

+0

Auch verwandt (nicht zu Ausnahme angetroffen, aber zusätzliche Details zur Installation von der Befehlszeile): http://stackoverflow.com/questions/10941549/install-android-sdk-using-command-line-linux – CJBS

Antwort

5

Das Problem hier war, dass android versucht, eine grafische Anzeige zu öffnen, die es nicht konnte. android kann einfach nicht auf einem Server ohne grafischen Bildschirm ausgeführt werden.

Jedoch kann mit einigen Parametern androidkann verwendet werden. Siehe zum Beispiel here:

android create project \ 
--target <target_ID> \ 
--name <your_project_name> \ 
--path path/to/your/project \ 
--activity <your_activity_name> \ 
--package <your_package_namespace> 
+0

bemerkte das gleiche Verhalten, wenn es als 'su Benutzername' ausgeführt wurde (was keine Sitzung mit dem GDM hat und daher kein 'DISPLAY' unter' X'). Ich könnte mir vorstellen, es könnte immer noch funktionieren - während die Anzeige für die Ausgabe, bevor Sie './android' zuweisen. –

+0

@syslogic können Sie versuchen, 'sudo -E -U Benutzername' zu ​​verwenden, dann behalten Sie Ihre eigene Umgebung. – Keelan

+0

denke, dass 'export DISPLAY =: 0' oder' export DISPLAY =: 0.0' die erste verfügbare Anzeige auswählen sollte, während es eine laufende 'X11' (gdm) Sitzung gibt. Man kann VNC-Displays auch so auswählen, wenn Headless läuft. –

1

Wenn Sie die Android-IDE (die Eclipse) ausführen möchten, benötigen Sie einen X-Server, um es anzuzeigen. Ich würde nicht empfehlen, Android-Apps auf einem Headless-Server zu entwickeln, da Sie für die Verwendung der IDE ein Display benötigen und Ihre App im Emulator ausführen müssen, damit Sie sie testen können, ohne sie auf ein Gerät zu übertragen jedes Mal, wenn du etwas änderst.

Wenn Sie die App ohne ein X-Display entwickeln wollen, müssen Sie alles von Hand erledigen, was die IDE normalerweise für Sie tun würde, und einen Editor verwenden, der X nicht benötigt, wie z vim oder emacs.

+0

Danke für die Rat! Am Ende werde ich keine Apps auf dem Server entwickeln, sondern nur dort, manchmal. – Keelan

0

Es sieht aus wie eine alte Eclipse Bug. Es wurde die JavaVM verwandt, Sie könnten eine andere VM versuchen, wenn Sie ausschließen können, dass das Problem mit der X-Umgebung zusammenhängt.

14

Sie können den SDK über die Befehlszeile mithilfe der Option -u (keine UI) aktualisieren.

+1

dieser Befehl installiert blind ALLES ... Wie aktualisiert man nur, was installiert ist? –

1

Wenn Sie ssh -X in die Box und starten Sie Android, sollte es xserver auf Ihrem Rechner verwenden. Manchmal muss ich eine andere Anwendung z. Firefox, um das X zu bekommen, bevor ich Android starte.

Verwandte Themen