jueves, 17 de junio de 2010

Compilar Android en Debian Sid

Vamos a compilar y probar Android en un sistema Debian Sid ejecutándose en una arquitectura x86 de 32 bits.

Necesitamos como requisito: JDK 5.0, actualización 12 ó superior. Java 6 no está soportado debido a incompatibilidades con @Override.

Debian Sid proporciona todos los paquetes que necesitamos, excepto JDK 5.0. Lo podríamos instalar usando las fuentes, pero en su lugar lo instalaremos desde los repositorios de Debian Stable (Lenny):

AÑADIR LOS REPOSITORIOS DE DEBIAN STABLE (LENNY)
#echo "deb http://ftp.debian.org/debian/ stable main contrib non-free" >> /etc/apt/sources.list

#aptitude update

El paquete sun-java5-jdk está ahora disponible.

INSTALLAR LOS PAQUETES QUE NECESITAMOS:
#aptitude install git-core gnupg sun-java5-jdk flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev


SELECCIONAR LA VERSIÓN CORRECTA DE JAVA:
$file /etc/alternatives/java* # Para saber qué ficheros de alternativas tenemos que actualizar.
#update-alternatives --config java
#update-alternatives --config java_vm
#update-alternatives --config javaws


También instalaremos valgrind, es una herramienta que nos ayudará a encontrar memoria no liberada, corrupción en la pila, desbordamiento de los límites de vectores, etc.
#aptitude install valgrind


Los proyectos de Android se almacenan en repositorios Git. Han desarrollado también una herramienta llamada REPO para facilitar el trabajo con repositorios basados en git.

INSTALANDO REPO

Puedes instalar la herramienta repo en cualquier lugar en el path. Elegimos el directorio bin en nuestro directorio home:

$cd ~
$mkdir bin
$export PATH=$PATH:~/bin
$curl https://android.git.kernel.org/repo >~/bin/repo
$chmod a+x ~/bin/repo



DESCARGAR EL CÓDIGO FUENTE DE ANDROID:

Crear un directorio vacío para almacenar nuestros ficheros de trabajo:
$mkdir mydroid
$cd mydroid

# Ejecutar repo init para descargar la última versión de Android con los parches más recientes. Debes especificar la URL del "manifiesto":
$repo init -u git://android.git.kernel.org/platform/manifest.git

NOTA: usando la opción -b podemos elegir qué versión de android instalar:
$repo init -u git://android.git.kernel.org/platform/manifest.git -b eclair


Para bajar los ficheros al directorio de trabajo desde los repositorios, según se especifica en el manifiesto por defecto, ejecuta:
$repo sync


NOTA: el directorio mydroid alcanza un tamaño de 3.6 gigas.


COMPILANDO ANDROID

Simplemente ejecuta, en tu directorio de android, el comando make:
$cd mydroid
$make

Tardará un tiempo en terminar.

La lista de ficheros instalados aparece en este fichero:
out/target/product/generic/installed-files.txt

También se crean algunas imágenes en ese mismo directorio: (system.img userdata.img ramdisk.img)
mydroid$ ls out/target/product/generic/
android-info.txt  data                 obj                       ramdisk.img  symbols  system.img
clean_steps.mk    installed-files.txt  previous_build_config.mk  root         system   userdata.img



Hemos compilado el código fuente de android, ahora vamos a testearlo:

EMULADOR DE ANDROID

Ejecutaremos el Emulador de Android que forma parte del SDK de Android
http://developer.android.com/guide/developing/tools/emulator.html

Descargar el SDK de Android
http://developer.android.com/sdk/index.html

Instalar el SDK de Android
http://developer.android.com/sdk/installing.html

Descomprimimos el SDK y añadimos el directorio tools a la variable de entorno PATH:
$tar xvzf android-sdk_r05-linux_86.tgz
$export PATH=$PATH:~/android-sdk-linux_86/tools


En lugar de crear un dispositivo virtual de android, vamos a utilizar una variable de entorno para indicar la localización de nuestras imágenes:


EJECUTANDO EL EMULADOR DE ANDROID

$emulator -help # Muestra la ayuda.

$export ANDROID_PRODUCT_OUT=/path/to/mydroid/out/target/product/generic/ # Variable de entorno indicando el path de las imágenes de Android.

Creamos una imágen SD para simular una tarjeta SD:
$cd mydroid/out/target/product/generic/
$mksdcard -l SD 100M sdcard.img

Ejecutamos el emulador:
$emulator -verbose

Si queremos mostrar más información para debuguear:
$emulator -show-kernel -verbose



CONECTAR CON EL EMULADOR USANDO LA HERRAMIENTA ADB (ANDROID DEBUG BRIDGE)

La herramienta adb forma parte del SDK de Android.

Ejecutamos en una consola:
$adb devices

Mostrará los dispositivos disponibles en tu sistema:
List of devices attached
emulator-5554   device

We can now connect to the device:
$adb shell


PUEDE QUE TAMBIÉN LE INTERESE
Cómo COMPILAR el KERNEL de LINUX para el EMULADOR de ANDROID (versión ECLAIR)

REFERENCIA:
http://source.android.com/download

TRADUCIDO DE:
Building Android in Debian Sid

2 comentarios: