2010-01-28 14 views
74

¿Alguien ha tenido éxito en la actualización/instalación de plataformas Android SDK en un servidor Linux sin cabeza? Todo lo que obtuve es el siguiente error:"android update sdk" en headless linux

Parece que la acción "update sdk" en realidad no es compatible?

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

actualización: La pregunta se hizo hace un tiempo cuando no fue apoyada actualización sin cabeza. Ahora es posible hacer solo un android update sdk --no-ui. ¡Gracias amigos!

+3

posible duplicado de (http://stackoverflow.com/questions/ 4681697/is-there-a-way-to-automate-the-android-sdk-installation) –

Respuesta

3

Sí, funciona pero necesita las bibliotecas de la GUI instaladas y necesita que su DISPLAY se configure con el servidor X que desea que muestre. Lo tengo trabajando ahora en CentOS 5.4 y tuve que usar la opción de instalación "Servidor - GUI" verso "Servidor". Luego solo uso "ssh -X" desde el sistema donde quiero que se muestre.

+0

¿Puedes darnos un ejemplo más concreto? – Matthias

7

Acabo de encontrarme con el mismo problema. Encontré una solución alternativa.

El primero es un escape: descargue las plataformas en un sistema dirigido y simplemente copie los subdirectorios de la plataforma en su dir de sdk/plataformas de android.

Si, como yo, no tiene acceso inmediato a otro entorno de desarrollo android dirigido, puede ir a los archivos SDK de Google y descargar uno de los otros SDK que incluyen las plataformas. De esta forma, significa que solo puedes desarrollar para Android 1.1 y 1.5.

La descarga para obtener para los sistemas de Linux es su Android 1.5 r3. Por supuesto, las páginas de descarga de SDK de Google no son compatibles con linces, por lo que tuve que obtener el enlace directo desde otro sistema de GUI.

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

Entonces es simplemente una cuestión de descomprimir el archivo, y moviendo los sibdirs plataforma a su nueva plataforma SDK dir.

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

Esto crea un AVD para la plataforma 1.5 con su nombre y directorio especificados. Tenga en cuenta que el dir de avd no debería existir. Si desea sobrescribir, agregue --force al comando.

Llegando hasta este punto, tiene una plataforma instalada y crea un AVD. Lamentablemente, al tratar de construir fallaron en este momento porque corro un servidor de 64 bits, y Google solo lanza herramientas de 32 bits.

Encontré una solución para esto en la respuesta aceptada de this stackoverflow question y utilicé sudo apt-get install ia32-libs para habilitar la capacidad de ejecutar las herramientas de 32 bits.

Luego debería poder usar la herramienta Android en la CLI para convertir un proyecto de eclipse (para 1.5 o inferior) para tener un sistema de compilación de ant, o puede hacer que cree un nuevo proyecto para que pueda comenzar a trabajar en.

Espero que esto ayude!

3

Acabo de crear una pequeña herramienta de línea de comandos que realiza la actualización en cualquier entorno (GUI o no GUI). No tuve la oportunidad de probarlo extensamente, pero hasta donde sé, hace lo que debería.

La herramienta de línea de comandos actualiza un SDK base de Android preinstalado con todas las plataformas, add-ons, extras, documentos, muestras y herramientas disponibles actualmente. Esto debería ser suficiente para un servidor de compilación (lo necesito para mi instalación de Hudson CI con Maven).

Por favor, vaya aquí para más detalles:

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

75

Puede utilizar la opción --no-ui:

android update sdk --no-ui 

Si Me gustaría automatizarlo, puede aceptar todas las licencias utilizando la herramienta expect con este hack (la opción --accept-license actualmente no se integra completamente en la herramienta android): [? ¿Hay una manera de automatizar la instalación SDK de Android]

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

para aceptar la licencia automáticamente, la próxima versión agregará un indicador' --accept-license'. Mientras tanto puedes 'echo" y "| android update sdk --no - ui' – Snicolas

+3

no hay --accept-license en este momento :( – x2on

+0

@Snicolas ¿tiene una fuente para eso? Las referencias que vi hacen que parezca requerir un número de licencia específico como parámetro , y probablemente sea para uso interno. Me encantaría estar equivocado ... – mateor