Desarrollando para Firefox OS VI: Flasheos y últimas versiones de GAIA

Llevaba ya unos meses sin continuar el tutorial sobre #FirefoxOSDeveloper, y creo que era hora de retomarlo, teniendo en cuenta que estoy trabajando dentro del proyecto, bajo el amparo de Telefónica I+D.

BFFOS

Y es que si algo te encuentras cuando empiezas a trabajar en el desarrollo de una plataforma como esta, es la necesidad de sistematizar los procesos que día tras día tienes que hacer, permitiendo como en mi caso que éstos se produzcan lo más rápidamente posible en cada sistema operativo que uso para el desarrollo.

Firefox OS, al ser una plataforma open source, está continuamente actualizándose. Para su desarrollo, usamos GitHub, y por supuesto, cualquier interesado en probar versiones del mismo aún sin ser las comerciales puede hacerlo descargándose los archivos del mismo repositorio, en el caso que nos compete (GAIA), la url sería esta (EN).

Así es como hoy quería hablaros del flasheo de GAIA, que como ya explicamos en la introducción que hicimos hace tiempo sobre el SO, es la capa del sistema operativo con la que interacciona el usuario, desarrollada en lenguajes web. Hablaremos principalmente de dos alternativas, instalar una versión desde un archivo .sh, y desde un repositorio (sea el oficial, o un fork vuestro). Además, hablaremos de los test que trae por defecto la instalación (genial si queremos probar algún cambio que hayamos hecho).

Primeros pasos:

Lo primero es tener un terminal para desarrollo, ya que usaremos el protocolo fastboot (ES), y este suele venir capado en los terminales comerciales. En mi caso el tutorial lo hice con un terminal ZTE, pero en principio, instalando la ID correcta, correría con cualquiera compatible.

Para ello, lo primero que nos toca es instalar el ADB (Android Debug Bridge) (EN), un paquete de comandos por línea que nos permite en pocos pasos flashear los dispositivos. Suponiendo que estéis trabajando en Linux, tocará incluir el siguiente repositorio:

sudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install android-tools-adb android-tools-fastboot

De base, ADB abre sin permisos de root, lo que obligaría a usar sudo para todo (y es posible que en el caso de la instalación vía .sh, no ejecute el fastboot en modo root). Para solucionarlo, hay que incluir una regla en udev que obligue al ADB a ejecutarse como root.

Para Ubuntu:

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

Para Debian:

sudo su
gedit /etc/udev/rules.d/51-android.rules

En el editor, incluimos:
SUBSYSTEM=="usb", SYSFS{idVendor}=="19d2", MODE="0666"
SUBSYSTEM=="usb", SYSFS{idVendor}=="18d1", MODE="0666"

Donde el valor de SYSFS{idVendor} será el fabricante según el siguiente enlace: http://developer.android.com/tools/device.html#VendorIds (EN). Como véis, en mi caso he incluido dos SUBSYSTEM, ya que suelo trabajar con varios terminales de distinto fabricante.

Instalar GAIA desde un archivo flash

Normalmente por internet te sueles encontrar estos archivos comprimidos en una carpeta. Los pasos a seguir serían los siguientes:

  1. Vas al directorio y lo descomprimes.
  2. Con el terminal conectado, abres una consola en esa carpeta y ejecutas:

sudo adb start-server //iniciamos el servidor adb con permisos root
sudo adb devices //con esto vemos si el terminal está correctamente reconocido (sino o no saldrá, o saldrá con ??????)
ejecutamos el .sh //esto mete directamente el terminal en modo fastboot.
sudo ./flash.sh

Edit a día 4 de Diciembre: He actualizado la lista de comandos para incluir la necesidad de usar sudo para evitar problemas de permisos, así como activar manualmente y con permisos root el servidor, que a veces se ejecuta sin permisos root aunque lo llames mediante un sudo adb devices.

El terminal se reinciará, y se empezará a descargar todo el contenido del paquete.

ADVERTENCIA: Si por lo que sea el terminal se queda colgado (normalmente el .sh no es el correcto para este dispositivo), y al pasar adb devices, no nos aparece, puede que se haya quedado en modo fastboot. En ese caso, lo mejor es que se comente el cuerpo de la función fastboot que hay dentro del .sh (para que no fuerce el fastboot). Dejaríamos pulsado el botón Home más tecla arriba para entrar en fastboot. Lo conectamos, y ejecutamos:

fastboot devices //debería aparecer, y volvemos a ejecutar el .sh

Instalar GAIA desde un repositorio

Bien sea el repositorio oficial, bien sea un fork tuyo (en el que estás trabajando), los pasos serían los siguientes:

  1. Te bajas la versión actualizada (git upstream master, suponiendo que quieras la rama master).
  2. Desde el directorio de gaia, abrimos un terminal, y ejecutamos:

make //hace el profile
O

make reset-gaia //te hace el profile, lo sube al teléfono y te lo deja de fábrica
O
make install-gaia //te hace el profile y lo sube al teléfono

Si quieres instalar solo una parte, sería:
APP=communications make install-gaia //ahí instalaría solo commuications. Si quisieras System, pues APP=system

Ejecutar pruebas TESTING

Si estás usando una de las versiones de desarrollo de gaia (como la que encontrarás en el repositorio de Mozilla), vendrá a su vez con un nutrido grupo de testeos para que si has cambiado algo, puedas tener una idea de si merece la pena enviarlo para apoyar al proyecto. Para acceder a estos, es tan sencillo como ejecutar dentro de la carpeta de GAIA:

./bin/gaia-test

Ejecutar el “cliente”:

make test-agent-test

Si quisiera solo pasar los test en communications:

APP=communications test-agent-test

En este caso, podemos definir que se pase solo para algunos subdirectorios, por ejemplo:

APP=communications/dialer make test-aget-test

Y por hoy creo que ya es suficiente. De paso dar las gracias a Salva y a Fernando de TID, que me tienen que aguantar día tras día con preguntas de este estilo.
Para facilitaros el seguimiento del tutorial, os dejo los enlaces a cada una de las entradas anteriores: