Una alternativa al emulador del SDK de Android, Android-x86

Publicado el 04 noviembre 2011 por Ubuntizando

Android tiene cosas buenas y malas, el emulador de su SDK es una de las malas, es lento y pesado como una tortuga con caparazón de plomo, y no es porque esté mal hecho, se debe a que emula un procesador ARM con todo lo que ello conlleva. Por esto la mayoría de desarrolladores acaban probando sus aplicaciones en los dispositivos a los que tienen acceso, evitando el emulador y su lag como la peste.
Existe otra opción, Android-x86, que podemos correr en una máquina virtual en la misma arquitectura y con un rendimiento cuatro veces superior al del emulador. Aquí se explicará como instalar y configurar Android-x86 2.3 Gingerbread en Virtualbox para conectarlo con SDK. Para ello necesitamos una imagen de Android que podemos descargar de aquí (utilizaremos el archivo android-x86-2.3-RC1-eeepc.iso).
El primer paso es crear una máquina virtual con las siquientes características:
- Nombre: Gingerbread
- Sistema operativo: Linux
- Versión: Other Linux
- 1 GB de memoria RAM
- Un disco duro de 1 GB (tipo .vdi) reservado dinámicamente.
- Un segundo disco duro de 1 GB (tipo .vdi) de tamaño fijo que usaremos como tarjeta SD.
- Controlador de audio: SoundBlaster16
- Aceleración 3D activada y 24 MB de video.
Una vez creado añadimos la imagen de instalación en Configuración Almacenamiento CD-ROM e iniciamos la máquina virtual.

Para comenzar con la instalación seleccionarmos la opción Installation – Install Android-x86 to harddisk. Lo primero es dar formato a los discos duros, una partición ext3 para la unidad sda y una partición FAT16 para la unidad sdb, una vez hecho esto podremos instalar Android en la primera. Finalizada la instalación, apagamos la máquina y retiramos la imagen de instalación de la lista de dispositivos de almacenamiento.
Ahora mismo ya tenemos una máquina corriendo Android, pero al tratarse de un imagen creada especificamente para Eee PC vamos a tener que configurarla para algo más parecido a un Smartphone. Para ello introduciremos, mediante consola, diferentes modos gráficos mas propios de un móvil:
~$ VBoxManage setextradata "Gingerbread" "CustomVideoMode1" "320x480x16"
~$ VBoxManage setextradata "Gingerbread" "CustomVideoMode2" "640x960x16"
~$ VBoxManage setextradata "Gingerbread" "CustomVideoMode3" "480x720x16"
Una vez hecho esto iniciamos la VM en modo depuración (debug mode) y montamos la particion de arranque en modo lectura/escritura para modificar la configuración del GRUB:
# mount -o remount,rw /mnt
#vi mnt/grub/menu.lst
Si no te sientes cómodo trabajando en modo depuración o le tienes ojeriza a vi siempre puedes montar el disco duro en una máquina vistual con Ubuntu y modificarlo desde allí.
Lo que tenemos que hacer es duplicar una de las las opciones de inicio, tienen este aspecto:
title Android-x86 2.3-RC1 (HDPI) kernel /android-2.3-RC1/kernel quiet root=/dev/ram0 androidboot_hardware=eeepc acpi_sleep=s3_bios,s3_mode DPI=240 SRC=/android-2.3-RC1 initrd /android-2.3-RC1/initrd.img
Y modificarla para que quede así:
title Android-x86 2.3-RC1 Custom kernel /android-2.3-RC1/kernel quiet root=/dev/ram0 SDCARD=sdb1 androidboot_hardware=generic_x86 acpi_sleep=s3_bios,s3_mode vga=ask SRC=/android-2.3-RC1 initrd /android-2.3-RC1/initrd.img
Simplemente hemos añadido los parámetros SDCARD=sdb1 y vga=ask, el primero indica donde se encuentra la partición que se usará como tarjeta SD y el segundo permitirá elegir el modo gráfico al inicio de la máquina virtual.
Ahora que ya está todo configurado, iniciamos la máquina y seleccionamos la opción Android-x86 2.3-RC1 Custom.

Como se puede ver las tres últimas opciones gráficas son las que introducimos anteriormente, elegimos una de ellas y listo.
Para manejar Android en Virtualbox:
- Primero desactivamos la integración de ratón en Maquina → Inhabilitar integración de ratón.
- Alt + F1 cambia a modo CLI.
- Alt + F7 cambia a modo GUI.
- Esc equivale a 'atrás'.
- F2 equivale a 'menú'.
- F3 corresponde a 'buscar'.
- El botón Windows equivale a 'Inicio'.
Solo queda conectar la máquina virtual al SDK, para ello dentro de la carpeta /android-sdk-linux_86/platform-tools y conociendo la dirección IP:
~$ ./adb connect 192.168.3.12
Y ya tendremos conectada la máquina virtual al SDK, pudiendo subir archivos, probar aplicaciones e incluso instalar el Android Market.