Construyendo Android 4.0 en Ubuntu 10.04

02/08/2012


NOTAS IMPORTANTES:

  • Para seguir esta guía DEBES estar ejecutando Ubuntu 64-bit. Puedes utilizar una máquina virtual (compilará si se configura correctamente)
  • Si utilizas una máquina virtual, asegúrate que AL MENOS tenga 2GB de RAM y 2xCores (al menos le llevará 3-4 horas)
  • El código fuente descargado son aproximadamente 6GB. Necesitarás unos 25GB de espacio en el disco duro para una sola construcción.

Para aprender a configurar una máquina virtual Ubuntu de 64bit en un PC con Windows, utiliza ESTA GUIA. Yo recomienzo utilizar 10.04 y esta guía se basa en ello.

Por tanto, asumiremos que estamos ejecutando Ubuntu 10.04 64bits por primera vez, y comenzaremos desde el principio.

NOTA: Quizás lo mejor es que copies y pegues los comandos, ya que algunos son bastante largos.

1. Preparando el entorno de desarrollo
Lo primero que debemos hacer es asegurarnos que estamos trabajando en un terminal root. Abre un TERMINAL y ejecuta:

sudo -i

Te pedirá tu contraseña. A partir de este punto, todos los comandos de esta guía asumen que tienes privilegios de root.

Lo siguiente que tenemos que hacer es añadir un repositorio para que apt-get sepa donde buscar la JDK de Java:

add-apt-repository ppa:sun-java-community-team/sun-java6

Tras ello, necesitamos actualizar la información del nuevo repositorio con el siguiente comando:

apt-get update

Ahora que el repositorio ha sido actualizado, podemos proceder con la instalación de los paquetes necesarios para construir Android a partir de su código fuente. El primero será el Java Development Kit 6:

apt-get install sun-java6-jdk

A continuación instalaremos el resto de paquetes necesarios para el proceso de construcción.

sudo apt-get install git-core gnupg flex bison gperf build-essential \
zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs \
x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev \
libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown \
libxml2-utils xsltproc

2. Configurando el USB
Configurar Ubuntu para que adb funcione con todos los dispositivos Android es increiblemente sencillo, así que vamos a ello:

gksudo gedit /etc/udev/rules.d/51-android.rules

Esto abrirá un fichero de texto en blanco. Inserta el texto siguiente:

#Acer
SUBSYSTEM==usb, SYSFS{idVendor}==0502, MODE=0666
#ASUS
SUBSYSTEM==usb, SYSFS{idVendor}==0b05, MODE=0666
#Dell
SUBSYSTEM==usb, SYSFS{idVendor}==413c, MODE=0666
#Foxconn
SUBSYSTEM==usb, SYSFS{idVendor}==0489, MODE=0666
#Garmin-Asus
SUBSYSTEM==usb, SYSFS{idVendor}==091E, MODE=0666
#Google
SUBSYSTEM==usb, SYSFS{idVendor}==18d1, MODE=0666
#HTC
SUBSYSTEM==”usb”, SYSFS{idVendor}==”0bb4″, MODE=0666
#Huawei
SUBSYSTEM==usb, SYSFS{idVendor}==12d1, MODE=0666
#K-Touch
SUBSYSTEM==usb, SYSFS{idVendor}==24e3, MODE=0666
#KT Tech
SUBSYSTEM==usb, SYSFS{idVendor}==2116, MODE=0666
#Kyocera
SUBSYSTEM==usb, SYSFS{idVendor}==0482, MODE=0666
#Lenevo
SUBSYSTEM==usb, SYSFS{idVendor}==17EF, MODE=0666
#LG
SUBSYSTEM==usb, SYSFS{idVendor}==1004, MODE=0666
#Motorola
SUBSYSTEM==usb, SYSFS{idVendor}==22b8, MODE=0666
#NEC
SUBSYSTEM==usb, SYSFS{idVendor}==0409, MODE=0666
#Nook
SUBSYSTEM==usb, SYSFS{idVendor}==2080, MODE=0666
#Nvidia
SUBSYSTEM==usb, SYSFS{idVendor}==0955, MODE=0666
#OTGV
SUBSYSTEM==usb, SYSFS{idVendor}==2257, MODE=0666
#Pantech
SUBSYSTEM==usb, SYSFS{idVendor}==10A9, MODE=0666
#Philips
SUBSYSTEM==usb, SYSFS{idVendor}==0471, MODE=0666
#PMC-Sierra
SUBSYSTEM==usb, SYSFS{idVendor}==04da, MODE=0666
#Qualcomm
SUBSYSTEM==usb, SYSFS{idVendor}==05c6, MODE=0666
#Rockchip
SUBSYSTEM==usb, SYSFS{idVendor}==2207, MODE=0666
#SK Telesys
SUBSYSTEM==usb, SYSFS{idVendor}==1f53, MODE=0666
#Samsung
SUBSYSTEM==usb, SYSFS{idVendor}==04e8, MODE=0666
#Sharp
SUBSYSTEM==usb, SYSFS{idVendor}==04dd, MODE=0666
#Sony Ericsson
SUBSYSTEM==usb, SYSFS{idVendor}==0fce, MODE=0666
#Toshiba
SUBSYSTEM==usb, SYSFS{idVendor}==0930, MODE=0666
#ZTE
SUBSYSTEM==usb, SYSFS{idVendor}==19D2, MODE=0666

Guarda el archivo y ejecuta el siguiente comando para establecer los permisos del fichero:

chmod a+r /etc/udev/rules.d/51-android.rules

3. Instalando e inicializando el repositorio
Ahora tenemos que descargar el repositorio, añadirlo a nuestro path y establecer los permisos. Ten en cuenta que si cierras la terminal, tendrás que hacerlo de nuevo. Escribe cada comando en una línea nueva, pulsando enter después de cada una (no hace falta hacerlo como root):

mkdir ~/bin
PATH=~/bin:$PATH
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo

Ahora tenemos que crear un directorio donde dejar nuestros fuentes, y cambiar a dicho directorio:

mkdir ICS_SOURCE
cd ICS_SOURCE

Lo siguiente es inicializar el repositorio. Debajo tenemos dos comandos; el primero inicializa la rama especificada, y el segundo el master.
UTILIZA SOLAMENTE UNO DE LOS DOS COMANDOS SIGUIENTES (recomendado – el primero)

repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.4_r2.1

O:

repo init -u https://android.googlesource.com/platform/manifest

Ahora se te pedirá que des tu nombre y tu dirección de email. Por favor utiliza datos reales; así podrás utlizar la herramienta de revisión de código gerrit si tu email está conectado con una cuenta de Google.

4. Descargando el código fuente (sync*cronizando*)
Probablemente esta es la parte más sencilla pero, dependiendo de la velocidad de tu conexión, podría llevar un buen rato. En una conexión DSL típica podría tardar de 60-120 minutos.

repo sync

5. Construyendo el sistema
Lo primero es configurar el entorno de trabajo utilizando el comando:

source build/envsetup.sh

Tras esto, ya podemos utilizar el comando lunch para seleccionar el dispositivo para el que se va a construir el sistema.

Por ejemplo, para realizar una compilación para el emulador con depuración habilitada, escribiremos:

lunch full-eng

Si lo ejecutamos sin argumentos nos mostrará un menú para seleccionar el objetivo. Si queremos construir para otro dispositivo seguramente tendremos que descargar binarios adicionales. Al final de la guía apunto unas notas acerca de cómo añadir un nuevo dispositivo.

Ya estamos listos para la compilación. En cuanto al siguiente comando, la parte de -j técnicamente no es necesaria pero para realizar una compilación en una máquina virtual, te aconsejo que añadas el -j1.

De cualquier modo, para realizar la construcción existen DOS opciones. La primera generará la salida como archivos img. La seguna opción generará un .zip flasheable. Recomiendo la segunda si vas a utilizar CWM con fastboot.

make -j1

o

make -j1 otapackage

Felicidades! En unas horas tendrás una construcción AOSP funcional para el emulador que puedes arrancar escribiendo:

emulator

OPCIONAL – Añadiendo otros dispositivos a la lista de construcción

  1. Encuentra el github para el dispositivo que quiere añadir (por ejemplo el HTC Hero CDMA)
  2. Ahora vete al lugar en el que vamos a clonar el arbol del dispositivo:
    cd ICS_SOURCE/device
    mkdir htc
  3. Clona el arbol remoto github del dispositivo a local: (El heroc será como quieras que se llama la carpeta así que asegúrate de elegir un nombre suficientemente estándar para tu dispositivo, por ejemplo: Nexus One [Passion], Nexus S [Crespo], Motorola Droid [Sholes], HTC Incredible [Inc], etc.)
    git clone git://github.com/TeamICS/android_device_htc_heroc.git heroc
  4. Ahora vete a la carpeta:
    cd heroc
  5. Conecta el teléfono al ordenador y asegúrate que la depuración USB está activada y que tienes adb configurado.
  6. Extrae los ficheros de propiedades del dispositivo:
    ./extract-files.sh
  7. Vuelve al directorio de inicio de construcción:
    cd ~/ICS_SOURCE
  8. Prepara el entorno para la compilación:
    source build/envsetup.sh
  9. Obtén la lista de dispositivos:
    lunch
  10. Haz tu selección
  11. Compila:
    make -j1
    O para un zip flasheable:
    make -j1 otapackage

vía

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: