Haz tu propia compilación del ADT con las últimas novedades

En el Google I/O se presentaron las novedades del ADT 11, que está a punto de salir oficialmente, pero también fueron un poco más allá y mostraron funcionalidades que no estarán disponibles hasta la siguiente versión. Sin embargo, Google mantiene un repositorio con el código de Android y sus herramientas, actualizados con todos los cambios aceptados hasta la fecha, por lo que si no podéis esperar para probar los TextViews generados para distintos teclados, o para poder ver las Views creadas por uno mismo en la paleta de widgets, os explicamos los pasos para tener el ADT à la mode 😉

Antes de empezar

Para implementar esta guía es necesario utilizar como sistema operativo una distribución de GNU/Linux de 64 bits (para redactar este artículo se ha utilizado Ubuntu 10.10 x64). No es posible compilar el ADT en GNU/Linux de 32 bits, ni en Windows (aunque se supone posible a través de Cygwin). Para Mac OS X habría que hacer algunos cambios preparando el entorno, y probablemente necesite algún paso adicional o diferente en el resto del proceso.

Una solución rápida si no utilizáis GNU/Linux de 64 bits, es utilizar algún sistema de virtualización como VirtualBox o VMPlayer, y crearos una máquina virtual con este sistema operativo.

Nota importante: es muy recomendable tener al menos 2 GB de RAM, y si tenéis esos 2 Gigas justos, que no tengáis nada que os “robe” memoria, como una tarjeta gráfica integrada. En mis primeras pruebas tenía disponibles 1.7 GB, y aunque sólo tenía un terminal abierto para la compilación y nada más, la falta de memoria hizo que el sistema se pusiera a intercambiar páginas entre la memoria real y la virtual como un loco, y ralentizo el proceso una barbaridad.

Preparando el entorno

Paciencia, la vais a necesitar. Y es que el primer paso va a ser bajarnos el código del proyecto Android enterito. Son sólo “unos cuantos gigas”, por lo que es muy recomendable hacer estos pasos un sábado o un domingo por la mañana, en los que la actividad en el repositorio es menor. Entre semana nos podemos encontrar con una velocidad de descarga baja, y cortes que nos obligarán a reiniciar el script.

1. Para empezar, necesitaremos tener instaladas las siguientes herramientas:
  * Una versión de Python entre la 2.4 y la 2.7, ambas inclusive
  * Sun Oracle JDK 5 y 6, aunque para el ADT sólo, diría que con OpenJDK funciona
  * Git 1.5.4 o una versión más nueva

2. Los siguientes paquetes, que podemos instalar con apt si estamos en una Debian-like como Ubuntu:  
$ 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

3. Instala Repo, el scriptillo la herramienta para trabajar con Git de Google, siguiendo estos pasos:
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl http://android.git.kernel.org/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

4. Crea un directorio vacío donde bajaremos el código y lo compilaremos, y dentro de él, descargamos el código con:
$ repo init -u git://android.git.kernel.org/platform/manifest.git
$ repo sync

En este último paso es cuando podemos dedicarnos a hacer otras tareas, pero revisando de vez en cuando la pantalla. Si vemos que el script está más de 10 minutos sin actualizar la salida por pantalla, es muy probable que se haya quedado colgado, por lo que habrá que hacer un Ctrl+C a lo bruto, y volver a ejecutar repo sync. También, si más adelante quisiéramos actualizar el código con los últimos cambios, deberemos ejecutar solamente esta última instrucción.

Compilando

La compilación va a ser larga o muy larga, dependiendo del ordenador, así que aprovecha a hacerlo en un momento en el que tengas que hacer otras cosas lejos de este.

5. Inicializamos el entorno:
$ . build/envsetup.h

6. Configuramos la compilación con lunch. Dado que sólo vamos a compilar las herramientas, usamos el target sdk, y dado que no queremos que nada esté restringido, utilizamos el tipo eng:
$ lunch sdk-eng

7. Ejecutamos “$ make sdk” para iniciar la compilación. Es importante utilizar el parámetro -jX si disponemos de un procesador con varios procesadores/núcleos. X significa el número de núcleos que utilizará make, por lo que si, por ejemplo, tenemos un Core 2 Quad (4 núcleos sin hyperthreading), podemos hacer make -j4 sdk para aprovechar todo el procesador y que acabe antes, o make -j2 sdk para utilizar sólo la mitad y continuar haciendo cosas utilizando los otros dos núcleos.

8. Para acabar, necesitamos crear symlinks para utilizarlos con Eclipse en la última etapa:
$ ./sdk/eclipse/scripts/create_all_symlinks.sh

Compilando con Eclipse

En la última etapa, tendremos que compilar el proyecto ADT con Eclipse. Para ello, hay que importar los siguientes proyectos al workspace:
  * sdk/eclipse/plugins/com.android.ide.eclipse.adt
  * sdk/eclipse/plugins/com.android.ide.eclipse.tests
  * sdk/eclipse/plugins/com.android.ide.eclipse.ddms
  * sdk/ddms/ddmlib
  * sdk/ddms/ddms-plugin
  * sdk/ddms/ddmuilib
  * sdk/ide_common
  * sdk/androidprefs
  * sdk/sdkstats
  * sdk/layoutlib_api
  * sdk/common
  * sdk/swtmenubar

Al principio tendremos varios errores. Para solucionarlos, tenemos que crear dos variables classpath yendo a Window –> Preferences, y en la ventana que aparecerá nos dirigimos a Java –> Build Path –> Classpath Variables y añadimos:

ANDROID_SRC, que apunte al directorio raíz del proyecto (donde hemos ejecutado repo sync)

ANDROID_OUT_FRAMEWORK, que apunte al subdirectorio out/host/linux-x86/framework

Y en User Libraries (la opción de debajo de Classpath Variables), creamos dos nuevas entradas:

ANDROID_JFREECHART, a la que añadiremos los 3 JARs del subdirectorio prebuilt/common/jfreechart

ANDROID_SWT, a la que añadiremos los 3 JARs del subdirectorio prebuilt/common/eclipse, y el JAR del subdirectorio prebuilt/linux-x86_64/swt

Y para acabar con los errores, seleccionamos el proyecto ddmuilib, botón derecho y Properties, seleccionamos Java Build Path y la pestaña Libraries, y añadimos las dos últimas variables que hemos creado, ANDROID_JFREECHART y ANDROID_SWT. Si lo hemos hecho correctamente, deberían desaparecer todos los errores.

Lanzar el ADT en una nueva ventana de Eclipse

Ahora sólo nos queda recoger el fruto de este largo proceso. Seleccionad el proyecto ADT, botón derecho y Run As… –> Run Configurations, y elegid Eclipse Application. Con esto, ejecutaremos una nueva instancia de Eclipse, pero que ya incluirá el ADT que acabamos de compilar. Si os fijáis en la imagen que viene a continuación, el icono del DDMS ya no es un Android, y también ha cambiado el incono de Android que salía cuando configuramos un proyecto nuevo.

Fuente:

5 comentarios sobre “Haz tu propia compilación del ADT con las últimas novedades

  1. Pingback: Bitacoras.com
  2. @David: es cierto, pero son cosas diferentes lo que tu propones y lo que propongo yo. Compilar el código implica tener los últimos cambios, incluso aquellos que no están en la RC. Todo depende de si quieres utilizar la versión estable (ADT 10), la versión beta con algunas características más (RC ADT 11), o la versión inestable con todas las características hasta la fecha (el código).

    Desde el ADT 10 hasta esta RC del ADT 11 han pasado tres meses, pero muchas de las características que ahora podemos probar en la RC llevan ya disponibles mes y medio en el código. Todo depende de la curiosidad que tengas o si prefiereres esperar hasta los lanzamientos más estables.

    Me gusta

  3. hola, estuve actualizando mi samsung spica y al finalizar me salio error de actualizacion, el telefono me quedo con una tarjeta en azul y downling….. debajo dice, DO NOT TURN OFF TARGET!!!, como hago para hacerle un hard reset?

    Me gusta

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 )

Google photo

Estás comentando usando tu cuenta de Google. 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 )

Conectando a %s