sábado, 14 de agosto de 2010

Compilar FroYo para HTC Desire/Bravo

Después de buscar mucho con Google y esas cosas alguna manera de generar una ROM de Android para el HTC Desire, que es el teléfono que tengo actualmente, usando el código fuente original de Android, he encontrado bastantes cosas, pero en Ingles y un poco dispersas. Al final me he decidido a unirlas todas y hacer una guía más o menos fácil de usar que ayude a compilar dicho código fuente, eso si, usando como plataforma Ubuntu 10.04 (Lucid Lynx).

El proceso lo voy a dividir en puntos que habra que ir completando uno detrás de otro. Empecemos...

1. Preparar Ubuntu para la compilación de los fuentes de Android:
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev valgrind
cd ~
mkdir bin
curl http://android.git.kernel.org/repo >~/bin/repo
chmod a+x ~/bin/repo
    Además es necesario tener Java (JDK y JRE) instalado en la máquina de desarrollo, pero esta instalación no es objetivo de esta guía, por lo que no lo explicaré.

2. Añadir al fichero ".bashrc" del directorio "/home/<usuario>" las siguientes lineas:
export JAVA_HOME=//usr/lib/jvm/java-6-sun-1.6.0.20/
export ANDROID_JAVA_HOME=$JAVA_HOME
export PATH=$PATH:~/bin:$JAVA_HOME/bin
alias makedroid='make -j$(grep -c processor /proc/cpuinfo) TARGET_PRODUCT=htc_bravo | tee build-$(date +%d%m%y%H%M).log'
. ~/.bashrc


y luego escribimos en la consola lo siguiente:


$ mkdir mydroid
$ cd mydroid
$ repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo
$ repo sync


3. Descargar los fuentes de Defer para Desire y descomprimirlos en "~/mydroid/device/htc" y movernos al directorio "~/mydroid/device/htc/bravo"


4. Este punto es de los más importantes. Ahora tenemos que conectar el teléfono al ordenador por medio del cable USB y asegurarnos que en el teléfono tenemos seleccionada la depuración por USB. Escribimos lo siguiente:

./extract_files.sh

Si cuando termine esta orden nos falta algún fichero que no encuentra en la ROM que tenemos instalada en el teléfono, podemos descargar la ROM de DeFrost, descomprimirla y buscar los ficheros que faltan y copiarlos donde corresponda.

Es posible también y antes de continuar, que al compilar, nos de un error por tener demasiados ficheros abiertos (1024 por defecto para Ubuntu). Para evitar esto, podemos editar el fichero "/etc/security/limits.conf" y escribir en él:

<usuario>          soft       nofile          8192
<usuario>          hard       nofile          8192

Con esto será suficiente para compilar. Sólo indicar que habrá que cerrar el terminal y volver a abrirlo para que los cambios tengan efecto.

5. Empezar a compilar:

cd ~/mydroid
source build/envsetup.sh
makedroid

Una vez que termine la compilación (una hora más o menos), en el directorio "~/mydroid/out/product/target/bravo" tendremos la ROM generada, lista para ser probada.

Probar una ROM ya cocinada en Android

Para probar una ROM ya cocinada en el emulador de Android (ver como preparar el emulador) tendremos que abrir un terminal en Linux y escribir el siguiente comando:

$ emulator -avd <nombre_avd> - system /<ruta_rom_android.img>

Para que esto funcione es necesario que el SDK de Android este bien instalado y que su directorio "tools" este en el PATH del sistema. Para estar seguros, lo mejor es editar el archivo ".bashrc" y añadir esto:

export PATH=$PATH:~/<ruta_tools_android>

viernes, 13 de agosto de 2010

Crear un AVD para probar Android

Para empezar, un AVD es un Android Virtual Device, es decir un emulador en el que se pueden probar tanto aplicaciones desarrolladas para este sistema operativo como ROM's completas.

Para este apartado voy a suponer que usas Ubuntu Linux (en mi caso la versión 10.04 o Lucid Lynx), ya que todos los comandos son para ese sistema operativo. También voy a suponer que tienes ya instalado el SDK de Android. Si no lo tienes instalado puedes seguier esta guía para Linux.

Teniendo estos pasos previos completados, lo primero que hay que hacer es abrir un terminal y escribir el siguiente comando:

$ android

Esto nos abrira una ventana como esta:


Ahora pulsamos en el botón "Available packages", lo cual nos lleva a esta nueva ventana:


Seleccionamos la rama principal, con lo que se nos selecciona automáticamente todo y le damos al botón "Install selected". Tras aceptar todas las licencias, le damos al botón de instalara y comenzara la descarga y la instalación.

Una vez termina la instalación podemos en la ventana principal crear una nueva AVD, dándole al botón "New". Esto nos saca esta ventana:


Aquí simplemente escribimos el nombre y seleccionamos la versión del sistema operativo que vamos a emular (por ejemplo el 2.2 o Froyo). Pulsamos en "Create AVD" y ya tendremos el emulador listo para ser usado. Si en la ventana principal pulsamos en "Start" sobre el AVD que acabamos de crear, nos aparecerá un terminal ejecutando Android.