2010-07-27 9 views
10

Hola acabo de instalar el SDK de Android junto con Eclipse 3.5 en mi i686 Thinkpad T60 con Ubuntu 10.04 (Lucid). (Eclipse se instaló a través de sináptica, es decir, un paquete del repositorio.) Instalé el eclipse y todo en el extremo de Eclipse parece estar bien. También puse el directorio de herramientas de android-sdk en mi PATH de usuario. Ahora herramientas de lanzamiento/androide sin ningún argumento se supone que para abrir el SDK y AVD gestor de interfaz gráfica de usuario, pero en su lugar me sale el siguiente error:Problema al ejecutar la GUI de android AVM/SDK utilizando las herramientas/ejecutables de Android en el SDK de Android. Ubuntu 10.04, i686

Exception in thread "main" java.lang.UnsatisfiedLinkError: no swt-gtk-3550 or swt-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.C.<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.sdkmanager.Main.showMainWindow(Main.java:265) 
    at com.android.sdkmanager.Main.doAction(Main.java:249) 
    at com.android.sdkmanager.Main.run(Main.java:94) 
    at com.android.sdkmanager.Main.main(Main.java:83) 

Lo extraño es que definitivamente tienen todos los requisitos previos instalados, sol-java6 -jdk, y open-java6-jdk y han intentado cambiar entre ellos. Además, si miro en sináptica tengo instalado libswt-gtk-3.5java. También el administrador de AVM/SDK se inicia correctamente cuando lo lanzo con eclipse.

(Usted puede preguntarse por qué me importa, pero me gustaría trabajar desde la línea de comandos, y teniendo en cuenta el uso de emacs como mi IDE en lugar de Eclipse.)

Si alguien sabe cómo puedo solucionar esto, por favor hágamelo saber.

+0

Hey - contesta al signo de Bart como aceptada! :) Funciona. – Konklone

Respuesta

3

Tenga una mirada en

android <command> --no-ui

Esto no requiere SWT/GTK en absoluto.

43

(copiado de Ubuntuforums http://ubuntuforums.org/showthread.php?t=1540054)

que tenían el mismo problema en 12 meses. Descubrí que era porque había hecho el directorio/tmp "noexec" tan pronto como lo hice ejecutable, estábamos bien.

sudo mount -o remount,exec /tmp 

Espero que esto ayude a alguien.

+0

¡Gracias que me ayudaron! Me llevó algo de tiempo llegar a tu respuesta – charroch

+0

Wowza. Ese es el hechizo mágico de Harry Potter. Esto hizo que DDMS se ejecutara desde la línea de comandos (no a través de eclipse) en mi instalación Kubuntu 11.10 AMD64. Gracias. –

+0

allí mismo! otra razón para odiar a Java aún más difícil que antes ... intenta ejecutar '/ tmp/swtlib-32/libswt-gtk-3550.so' ir figura ... así que si realmente necesitas RO/tmp (y deberías) solo enlace este directorio a otro lugar ... – gcb

0

simplemente una mejor manera de mostrar el código .. considerar esto como un comentario de respuesta @Bart ...

por alguna razón se intenta ejecutar SWT-lib de/tmp. eso es incorrecto y tonto y no tengo ni idea de quién es el culpable aquí (Android o la propia java lib)

así que si no quieres volver a montar/tmp como RW, simplemente haz un enlace simbólico de ese swtlib dir a otro lugar. Lo moví al directorio de Android.

(0) ~ 
hobo$ mv /tmp/swtlib-32 android/ 

(0) ~ 
hobo$ ln -sf ~/android/swtlib-32 /tmp/swtlib-32 

(0) ~ 
hobo$ android/android-sdk-linux/tools/android 
4

Adicionalmente a lo que el usuario Bart bien y correctamente dijo Sugiero que prestar atención en la punta de abajo:

usuarios Linux Advanced o frikis más a menudo se enfrentan a este problema. Se aplica un "ajuste" (generalmente para obtener más velocidad) en/etc/fstab making/tmp, ya que noexec causará este problema. Sólo tiene que abrir fstab y modificar la entrada como sigue a continuación:

sudo gedit/etc/fstab

Si usted tiene algo como esto acaba de comentar la línea o modificar el contenido:

tmpfs/tmp tmpfs por defecto , noexec, nodev, nosuid 0 0

A:

tmpfs/tmp tmpfs valores predeterminados, cabeceo ev, nosuid 0 0

1

también tengo este problema. Lo resolví cambiando la propiedad del directorio de inicio de sdk de Android (que instalé en '/ opt') para mí. Esto se hizo con algo como:

sudo chown -R <username> /opt/android-sdk-linux 

Y funcionó muy bien!

2

Ésta es una vieja pregunta, pero quiero proponer una respuesta menos 'drástica' ...

Si no desea cambiar su sistema de archivos de montaje, una alternativa es que se puede cambiar la android script de inicio de herramientas para especificar explícitamente el directorio temporal que Java debería usar.

p. Ej. en el directorio android-studio/sdk/tools, justo al final del archivo de script android es el comando que ejecuta java:

exec "$java_cmd" \ 
    -Djava.io.tmpdir=/home/me/android-studio/.tmp \ 
    -Xmx256M $os_opts $java_debug \ 
    -Dcom.android.sdkmanager.toolsdir="$progdir" \ 
    -classpath "$jarpath:$swtpath/swt.jar" \ 
    com.android.sdkmanager.Main "[email protected]" 

En este ejemplo utilizo "/home/me/android-studio/.tmp" pero por supuesto cambia eso a lo que quieras.

Lamentablemente, este cambio se sobrescribirá si actualiza las herramientas de Android, por lo que debería volver a aplicarlas cada vez que actualice. En su lugar, podría export en su perfil como propiedad de entorno global (para todas las aplicaciones Java) en lugar de editar este script.

0

Simplemente elimine el contenido de tmp dir.

sudo rm -rf /tmp/* 

Trate de ejecutar Android SDK manager posteriormente. Me funcionó.

0

Si desea iniciar SDK-manager a través de comandos, otra opción es, intente ejecutar:

> sudo android sdk 

Esto se ejecute en modo de administración que le da requiere permisos

Cuestiones relacionadas