Firefox OS @ Linux Mint 13

Para poner en marcha Firefox OS  hay que hacer lo siguiente:

La gente de Mozilla recomienda usar una distribución de Linux con gcc 4.6 o Mac OS X (Mountain Lion) ya que distros con gcc 4.7 como Ubuntu 12.10 pudiesen ser incompatible al momento de compilar los fuentes de Firefox OS.

También necesitas un teléfono compatible o en caso de no contar con un teléfono compatible se puede usar un emulador (arm / x86) el cual vamos a construir para realizar nuestras pruebas con Firefox OS.

En el sitio de Mozilla se menciona que solo los dispositivos con Android 4 (aka Ice Cream Sandwich) están soportados.

Para Linux es necesario instalar los siguientes programas y para no compilar los fuentes y dependencias puedes usar un gestor de paquetes e instalar los programas rápido.

$ sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make

Necesitas instalar el programa Android Debug Bridge (ADB), instala el SDK de Android y posteriormente establece un par de variables de entorno como se muestra a continuación:

jacob@puerkita /media/bsdfreedisk/all/Downloads/FirefoxOS/B2G $ cat /etc/profile.d/android.sh
 #!/bin/bash
export SDK_HOME=/home/jacob/Downloads/android/android-sdk-linux
 export ANDROID_TOOLS=$SDK_HOME/tools
 export PATH=$SDK_HOME/platform-tools:$ANDROID_TOOLS:$PATH

A continuación es necesario configurar ccache , ccache agiliza por ejemplo una re-compilación “cacheando” el resultado de previas compilaciones, los lenguajes soportados con C, C++, Objective C/C++

El valor por omisión para ccache es de 1GB , la compilación de Firefox OS satura muy rápido la cache de ccache , para dar un poco de mas espacio en disco usa el siguiente comando:

$ ccache --max-size 2GB

Ahora necesitamos obtener el codigo de FirefoxOS y para ello necesitamos clonar el repositorio de B2G usando Git.

$ git clone git://github.com/mozilla-b2g/B2G.git

Una vez terminado el proceso anterior debes cambiarte al directorio B2G

$ cd B2G

A continuación necesitamos saber con cual dispositivo se va instalar FirefoxOS o en el caso que solo quieras desarrollar pruebas puedes usar el emulador, en mi caso use un emulador para arm.

$ ./config.sh emulator

Las opciones de dispositivos soportados y emuladores es:

– galaxy-s2 – galaxy-nexus – nexus-s – nexus-s-4g – otoro – unagi – pandaboard – emulator – emulator-x86

Para compilar e instalar Firefox OS y una vez que te has situado en el directorio B2G , es escribir el siguiente comando:

./build.sh

Un punto interesante es que si tu computadora tiene mas de un core por procesador puedes aprovecharte de ello , por ejemplo para realizar el proceso de compilación de Firefox OS en paralelo puedes usar la siguiente opción, si tienes mas cores puedes usarlos, solo recuerda dejar algo de recursos para que tu puedas seguir trabajando mientras se compila Firefox OS ya que de lo contrario se puede quedar congelada tu computadora mientras el proceso termina.

./build.sh -j2

Dentro del directorio B2G hay un archivo de texto plano oculto el cual puedes editar para añadir opciones de compilación , por ejemplo si mueves hacia otra computadora o de directorio todo tu código de Firefox OS puedes indicar o también puedes establecer el numero de cores a usar , un punto interesante es que puedes definir que tipo de emulador vas a generar es decir basado en arm o x86, en mi caso DEVICE_NAME=emulator

$ cat .config
MAKE_FLAGS=-j2
GECKO_OBJDIR=/media/bsdfreedisk/all/Downloads/FirefoxOS/B2G/objdir-gecko
DEVICE_NAME=emulator
DEVICE=generic
LUNCH=full-eng

En lo que termina puedes ir a tomar una o mejor dicho varias tazas de café 😉

Una vez que ha terminado el proceso puedes iniciar el emulador y antes de eso solo mencionar que hay 2 clases de emuladores , el primero basado en arm y el segundo sobre X86 siendo este mas rápido que arm , se recomienda usar arm .

Para iniciar el emulador :

Verifica si está corriendo ADB (Android Debugger)
el adb que viene dentro de Firefox OS (b2g) está en la siguiente dirección:

$B2G/out/host/<platform>/bin (Linux)
$B2G/out/host/darwin-x86/bin (Mac OS X)

jacob@puerkita /media/bsdfreedisk/all/Downloads/FirefoxOS/B2G $ ps aux | grep adb
jacob     9754  0.0  0.0  14104   920 pts/2    S+   19:07   0:00 grep --colour=auto adb

Iniciar ADB server:

jacob@puerkita /media/bsdfreedisk/all/Downloads/FirefoxOS/B2G $ out/host/linux-x86/bin/adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

Comprobar que ADB está corriendo:

jacob@puerkita /media/bsdfreedisk/all/Downloads/FirefoxOS/B2G $ ps aux | grep adb
jacob    11428  0.0  0.0  20016   660 pts/0    Sl   19:44   0:00 adb fork-server server

Por omisión solo 512 MB de memoria ram y partición de disco son usados para cambiar estos parámetros puedes editar el script “run-emulator.sh”, en mi caso establecí 1GB de ram y disco.

export PATH=$PATH:$TOOLS_PATH
${DBG_CMD} $EMULATOR \
   -kernel $KERNEL \
   -sysdir $B2G_HOME/out/target/product/$DEVICE/ \
   -data $B2G_HOME/out/target/product/$DEVICE/userdata.img \
   -memory 1024 \
   -partition-size 1024 \
   -skindir $B2G_HOME/development/tools/emulator/skins \
   -skin HVGA \
   -verbose \
   -gpu on \
   -qemu $TAIL_ARGS

recordar que es un imagen que corre en Qemu, para especificar un dns para que tu emulador pueda resolver dominios en internet puedes añadir las opciones dentro del mismo script como lo hice yo, por ejemplo:

if [ "$DEVICE" = "generic_x86" ]; then
    EMULATOR=$TOOLS_PATH/emulator-x86
    KERNEL=$B2G_HOME/prebuilts/qemu-kernel/x86/kernel-qemu
else
    EMULATOR=$TOOLS_PATH/emulator
    KERNEL=$B2G_HOME/prebuilts/qemu-kernel/arm/kernel-qemu-armv7
    TAIL_ARGS="$TAIL_ARGS -cpu cortex-a8 -dns-server 10.128.128.128"

A continuación puedes lanzar el emulador

./run-emulator.sh

Básicamente esto es lo que se está ejecutando a traves del script “run-emulator.sh”

jacob     7585 94.5 11.6 1771812 434480 pts/1  Rl+  18:15  36:50 /media/bsdfreedisk/all/Downloads/FirefoxOS/B2G/out/host/linux-x86/bin/emulator64-arm -kernel /media/bsdfreedisk/all/Downloads/FirefoxOS/B2G/prebuilts/qemu-kernel/arm/kernel-qemu-armv7 -sysdir /media/bsdfreedisk/all/Downloads/FirefoxOS/B2G/out/target/product/generic/ -data /media/bsdfreedisk/all/Downloads/FirefoxOS/B2G/out/target/product/generic/userdata.img -memory 512 -partition-size 512 -skindir /media/bsdfreedisk/all/Downloads/FirefoxOS/B2G/development/tools/emulator/skins -skin HVGA -verbose -gpu on -qemu -cpu cortex-a8

Algunas capturas de pantalla:

Leave a comment