Antes de bajarte el código fuente para compilar Firefox OS, necesitas un sistema de compilación configurado correctamente. Ahora mismo, es posible compilar en distribuciones Linux de 64 bits, y en Mac OS X.
Necesitas un teléfono móvil compatible o un emulador
Esto es importante. Aunque hay varios teléfonos compatibles, algunos de ellos tienen variantes y es posible que sólo algunas de esas variantes sean compatibles. Además, algunos teléfonos son más compatibles que otros. Ahora mismo, puedes utilizar Firefox OS / B2G en los siguientes teléfonos y dispositivos:
Categoría 1
Dispositivos de Categoría 1 son aquellos que recomendamos para tareas de desarrollo, porque son los que primero reciben nueva funcionalidad y soluciones a problemas y errores. Los dispositivos de Categoría 1 son:
- Unagi
- Unagi es un teléfono que usamos como plataforma de prueba y desarrollo para smartphones simples o de mediana capacidad. Muchos de los desarrolladores del equipo de Firefox OS utilizan Unagi.
- Otoro
- Otoro es un teléfono que usamos como plataforma de prueba y desarrollo para smartphones simples o de mediana capacidad. Muchos de los desarrolladores del equipo de Firefox OS utilizan Otoro.
- Pandaboard
- Pandaboard es una mini placa base que se usa en el desarrollo de plataformas móviles. La placa está basada en la arquitectura OMAP 4.
- Emulator (ARM and x86)
- Hay dos emuladores: uno emula código ARM y el otro ejecuta en código x86.
- Ordenador
- También puedes construir una versión de Firefox OS para ordenador que ejecuta Gecko en una aplicación XULRunner y utiliza la experiencia de usuario que proporciona Gaia
La versión para ordenador y los emuladores no requieren teléfono.
Categoría 2
Los teléfonos de Categoría 2 en general funcionan, y muchos desarrolladores, especialmente desarrolladores de aplicaciones, los utilizan; pero tienden a recibir cambios y novedades más tarde.
- Samsung Nexus S
- Los modelos de Nexus S que sabemos funcionan son el GT-I9020A y el GT-I9023. Es posible que otros modelos también funcionen.
- Samsung Nexus S 4G
- El modelo SPH-D720 es compatible como Categoría 2.
Categoría 3
Se puede construir Firefox OS para estos teléfonos, pero los desarrolladores del equipo de Firefox OS no trabajan en ellos regularmente, así que su funcionamiento y funcionalidad puede que sean significativamente peores que los de Categorías 1 y 2.
- Samsung Galaxy S2
- El único modelo que funciona es el i9100. Ninguna de las otras variantes es oficialmente compatible. (Es posible que el i9100P también funcione, ya que la única diferencia es la adición del chip NFC).
- Samsung Galaxy Nexus
- En estos momentos no sabemos de ninguna variante que no sea compatible.
Requisitos para Linux
Para compilar en Linux, necesitas:
- Una instalación de GNU/Linux 64 bits (como distribución recomendamos Ubuntu 12.04).
- Un mínimo de 4 GB de ram / espacio en la partición de intercambio.
- Un mínimo de 20 GB de espacio libre en disco duro.
Estos requisitos son más que el mínimo indispensable, pero los recomendamos porque la construcción puede fallar debido a falta de recursos.
Puedes utilizar otras distribuciones, pero recomendamos Ubuntu 12.04 porque es el sistema que más gente utiliza sin dar problemas. Distribuciones que quizá no funcionen: distribuciones de 32 bits y distribuciones recientes (Ubuntu 12.10, Fedora 17/18, Arch Linux debido a gcc 4.7).
También necesitas instalar las siguiente utilidades:
- autoconf 2.13
- bison
- bzip2
- ccache
- curl
- flex
- gawk
- git
- gcc / g++ / g++-multilib (4.6.3 or older)
- make
- OpenGL headers
- X11 headers
- 32-bit ncurses
- 32-bit zlib
Ejemplos de instalación de 64 bits:
Ubuntu 12.04 / Linux Mint 13 / Debian 6
$ 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
Cuando compiles en Ubuntu 64 bits, es posible que necesites crear enlaces simbólicos (symlinks) a las versiones de 32 bits de libX11.so
y libGL.so
:
$ sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6 /usr/lib/i386-linux-gnu/libX11.so $ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
Ubuntu 12.10
$ sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc-4.6 g++-4.6 g++-4.6-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make
Además del paso ya explicado para solucionar el problema con las versiones 32 bits de libX11.so
y libGL.so
, también necesitas especificar GCC 4.6 como el compilador del host por defecto antes de empezar a construir. Una vez que te hayas descargado el código, lee nuestras instrucciones al respecto.
Fedora 16:
$ sudo yum install autoconf213 bison bzip2 ccache curl flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static libX11-devel make mesa-libGL-devel ncurses-devel patch zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i686
Arch Linux (distribución aún incompatible):
$ sudo pacman -S --needed alsa-lib autoconf2.13 bison ccache curl firefox flex gcc-multilib git gperf libnotify libxt libx11 mesa multilib-devel wireless_tools yasm lib32-mesa lib32-ncurses lib32-readline lib32-zlib
Por defecto, Arch Linux utiliza Python3. Necesitas forzar el uso del antiguo python2:
$ cd /usr/bin $ sudo ln -fs python2 python
Requisitos para Mac OS X
Para compilar Firefox OS con Mac OS X, necesitas instalar Xcode, que está disponible en el Mac App Store.
Instalar las Utilidades de Línea de Comandos (XCode 4.3.1 y versiones más recientes)
Xcode 4.3.1 (OS X 10.7 "Lion") y versiones más recientes como 4.4.1+ (Mac OS X10.8 "Mountain Lion") no incluyen necesariamente las Utilidades de Línea de Comandos. Cuando instales Xcode, abre las Preferencias, luego el Panel de Descargas, e instala las Utilidades de Línea de Comandos. Además, asegúrate de que tienes como mínimo 20 GB de espacio libre en el disco duro.
Cómo iniciar Firefox OS en Mac
Abre una consola y ejecuta el comando siguiente:
curl -fsSL https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh | bash
Este comando obtiene y ejecuta un programa de inicio que se asegura de que tienes todo lo necesario para compilar el emulador. También solicitará permiso para instalar cualquier cosa que falte. El programa buscará e instalará lo siguiente:
git
gpg
ccache
yasm
autoconf-213
gcc-4.6
homebrew
Xcode
Si ya has actualizado Xcode a la versión 4.4+ pero recibes un mensaje diciendo que Xcode necesita actualización, revisa la ruta de Xcode con este comando:
xcode-select -print-pathSi la ruta todavía apunta a
/Developer
puedes actualizarla haciendo:
sudo xcode-select -switch /Applications/Xcode.appAsegúrate también de que el SDK de Mac OS X 10.6 existe en:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
Si no existe, tendrás que extraerlo y copiarlo del archivo DMG de Xcode 4.3, que está disponible en el Portal para desarrolladores de Apple. Puedes usar una utilidad que se llama Pacifist para extraer el SDK 10.6. Asegúrate de crear un enlace simbólico (symlink) entre el SDK y el directorio /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
Mountain Lion
Si construyendo en OS X 10.8 "Mountain Lion" (Xcode 4.4.1 o más reciente) te encuentras un error como éste:
external/qemu/android/skin/trackball.c:130:25: error: 'M_PI' undeclared (first use in this function)Edita el archivo:
B2G/external/qemu/makefile.android
y añade en la línea 78:MY_CFLAGS += -DM_PI=3.14159265358979323846264338327950288 #/* B2G_fix: not finding M_PI constant */
clang: error: unable to execute command: Segmentation fault: 11
... prueba a reinstalar las dependencias manualmente añadiendo la opción --use-gcc como se muestra en el ejemplo:
brew install mpfr --use-gcc
Samsung Galaxy S2
Si tu intención es compilar para el Samsung Galaxy S2, también necesitarás instalar heimdall. Para más información, visita Instalación de heimdall. ¡El programa de inicio no ejecuta este paso!
~/Library/Application Support/.FUS
, y deja una referencia a cierta utilidad en ese directorio en la lista de programas a ejecutar en inicio. Necesitas eleminar el directorio y la refencia manualmente.hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 40g ~/firefoxos.dmg
Monta la imagen ejecutando:
open ~/firefoxos.dmg
Navega al directorio de la imagen montada con:
cd /Volumes/untitled/
Cómo arreglar la dependencia de libmpc si no funciona
gcc 4.6 fue creado con libmpc 0.9; si utilizas homebrew para actualizar paquetes, libmpc se actualiza a la versión 1.0, pero homebrew no recompila gcc 4.6 tras el cambio de versión. Por ello debes crear un enlace simbólico (symlink) para asegurarte de que todo funciona correctamente. Creas el enlace así:
cd /usr/local/lib/ ln -s libmpc.3.dylib libmpc.2.dylib
Opcional: Instalación de HAX
Intel proporciona un "driver" especial que permite al emulador x86 de B2G ejecutar código nativamente en el Mac en lugar de emularlo. Si quieres utilizar esta opción, puedes bajártela e instalarla. No es obligatorio, pero puede mejorar la estabilidad y velocidad de la emulación.
Instalación de adb
El proceso de compilado necesita obtener bloques binarios de la instalación de Android en el teléfono antes de compilar B2G (a menos, claro, que estés compilando el emulador). Para ello necesitas adb
, el "Android Debug Bridge".
Para obtenerlo, debes instalar el paquete básico del Android SDK (Android SDK starter package) para tu versión de Android. Luego, ejecuta el gestor de paquetes haciendo $SDK_HOME/tools/android
, y usa la interfaz gráfica para instalar las herramientas de sistema del Android SDK (Android SDK Platform-tools).
adb
será instalado en $SDK_HOME/platform_tools
. Asegúrate de añadir este directorio a tu PATH
. Para ello, añade esta línea:
PATH=$SDK_HOME/platform_tools:$PATH
a tu ~/.bashrc o equivalente, sustituyendo $SDK_HOME con el directorio del Android SDK. También es recomendable ejecutar:
adb pull /system <backup target dir>/system
para hacer una copia de seguridad de la partición de Android en tu teléfono. Así tendrás una copia de todos los bloques binarios para Android en caso de que quieras eliminar los archivos de B2G. Dependiendo del teléfono, también necesitas hacer copia de seguridad de los directorios /data y/o /vendor:
adb pull /data <backup target dir>/data adb pull /vendor <backup target dir>/vendor
Instalación de heimdall
Heimdall es una utilidad para flashear el Samsung Galaxy S2. B2G la utiliza para reemplazar los contenidos del teléfono con Firefox OS, y para flashear versiones nuevas de B2G y Gaia. Necesitas Heimdall para instalar Firefox OS sólo en el Galaxy S2; no es necesaria para ningún otro teléfono. Para otros móviles, se construye y utiliza la utilidad fastboot.
Hay dos maneras de instalar heimdall:
- Bajándote el código de GitHub y compilándolo tú.
- Utilizando un gestor de paquetes para la instalación:
- En Linux:
sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev
- Para Mac, te puedes bajar una imagen.
- En Linux:
Configuración de ccache
El tamaño estándar de ccache es 1GB; la compilación de B2G enseguida agota esta capacidad. Puedes cambiar el tamaño de tu cache con este comando:
$ ccache --max-size 2GB
Configuración de la regla udev en tu móvil
Llegado a este punto, puedes obtener el código de identificación del fabricante del USB ejecutando lsusb
, pero por lo general es Google (código 18d1) o Samsung (código 04e8). Por tanto, añadir la línea siguiente:
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"
al archivo /etc/udev/rules.d/51-android.rules
debería funcionar.
Guarda los cambios, cierra el archivo, y hazlo legible:
$ sudo chmod a+r /etc/udev/rules.d/51-android.rules
Configurar el teléfono
Antes de conectar tu teléfono al puerto USB, pon el USB en modo desarrollo, lo que te permitirá acceder al teléfono para depurar y flashear. Para ello, abre la aplicación de Ajustes, accede a la sección de Aplicaciones > Desarrollo, y selecciona la opción "Depuración USB".
Siguiente paso
Llegado a este punto, ¡ya estás listo para bajarte el código de Firefox OS!