Compilation du Simulateur Firefox OS

Cet article nécessite une relecture rédactionnelle. Voici comment vous pouvez aider.

Le simulateur Firefox OS permet d'exécuter Gaia et des applications Web dans un environnement basé sur Gecko, un peu comme sur un véritable appareil. Il n'émule pas la couche matérielle et n'est donc pas adapté aux tests des APIs des appareils, et ce n'est pas une alternative pour faire des tests sur du vrai matériel. Cependant, il comporte plusieurs APIs qui ne sont pas disponibles sur Firefox comme les APIs Contacts et Settings. Il peut par conséquent être utile pendant le développement de votre application, ou lors du travail sur l'interface utilisateur Gaia elle-même. Cet article aborde le téléchargement et la compilation du simulateur Firefox OS ainsi que son utilisation.

Note : La méthode la plus simple pour utiliser le client Firefox OS pour bureau consiste à installer le module Simulateur Firefox OS via WebIDE. La compilation du simulateur par vous-même n'est pas nécessaire.

Téléchargement de la version nocturne

Tout comme les Nocturnes de Firefox, le simulateur Firefox OS (identifié par b2g-) est automatiquement reconstruit chaque jour à partir du code source le plus récent. La dernière version compilée est disponible sur le serveur FTP de Mozilla. Assurez-vous de prendre la dernière version et la bonne archive en fonction de votre système d'exploitation. Cela vous évitera de devoir le compiler vous-même. De plus, vous n'aurez pas à télécharger Gaia non plus.

L'application doit être installée dans un endroit accessible en écriture ; elle a besoin de pouvoir mettre à jour le profil Gaia inclus.

Vous pouvez maintenant vous rendre directement à Exécution du simulateur, sauf si vous souhaitez réellement le compiler vous-même. Vous devrez le faire dans le cas où vous voulez apporter des modifications au code et tester ces modifications.

Compilation du simulateur

La première chose nécessaire est de mettre en place un environnement de construction Mozilla standard. Une fois que c'est fait, vous pouvez récupérer le code dont vous avez besoin et le configurer pour compiler le client Firefox OS pour ordinateur.

Téléchargement du code pour la première fois

Dans le répertoire où vous voulez placer le code source, clonez le dépôt mozilla-central qui contient l'ensemble de Gecko :

 hg clone http://hg.mozilla.org/mozilla-central

Sinon, vous pouvez télécharger le même code depuis Github :

 git clone https://github.com/mozilla/gecko-dev

Mise à jour du code

Pour les compilations ultérieures, il faut être sûr d'avoir récupéré les dernières modifications :

cd mozilla-central
hg pull -u

ou

cd gecko-dev
git pull

Création de mozconfig

Ensuite, vous devez créer un fichier appelé .mozconfig dans le répertoire mozilla-central pour que le système de construction soit configuré pour compiler le client Boot to Gecko au lieu de Firefox. Ce fichier doit avoir le contenu suivant :

. "$topsrcdir/b2g/config/mozconfigs/common"

mk_add_options MOZ_OBJDIR=../build # This line should be commented if you use gecko-dev or mozilla-central
mk_add_options MOZ_MAKE_FLAGS="-j9 -s"

ac_add_options --enable-application=b2g
ac_add_options --disable-libjpeg-turbo
 
# This option is required if you want to be able to run Gaia's tests
ac_add_options --enable-tests

# turn on mozTelephony/mozSms interfaces
# Only turn this line on if you actually have a dev phone
# you want to forward to. If you get crashes at startup,
# make sure this line is commented.
#ac_add_options --enable-b2g-ril

Vous devez également inclure la ligne ENABLE_MARIONETTE=1 dans le fichier si vous souhaitez exécuter Mochitests dans le client B2G pour ordinateur (soit mochitest-b2g-desktop, soit mochitest-plain) ou si vous voulez lancer les tests unitaires Gaia.

Compilation

Vous pouvez à présent construire le client pour ordinateur avec la commande suivante (exécutez-la à l'intérieur du répertoire mozilla-central) :

./mach build

Le client compilé sera placé dans le répertoire objdir/dist/bin (en fonction de la valeur de MOZ_OBJDIR spécifiée dans le fichier mozconfig).

Note : Si vous avez le moindre problème, commencez par vérifier les dépendances.

Téléchargement de Gaia

Par défaut, le simulateur affichera un écran vide car il ne sait pas quelle application web il doit charger au démarrage comme application système. L'ensemble des applications système et celles par défaut qui sont fournies avec Firefox OS — Gaia — doivent être téléchargés.

Pour télécharger Gaia pour la première fois, clonez le dépôt contenant le code source sur GitHub :

git clone https://github.com/mozilla-b2g/gaia
cd gaia

Pour actualiser une copie de Gaia déjà existante, vous pouvez récupérer les dernières modifications depuis GitHub :

cd gaia
git pull

Création de custom-settings.json

Si vous savez ce que vous faîtes et que vous souhaitez définir des options de configuration, vous pouvez créer le fichier gaia/build/config/custom-settings.json pour les y ajouter, par exemple :

{
  "lockscreen.enabled": false,
  "lockscreen.locked": false,
  "devtools.debugger.remote-enabled": true
}

Cet exemple est utile pour outrepasser l'écran de verrouillage, ce dernier étant autrement impossible à passer sur ordinateur car il ne peut pas être déverrouillé avec une souris ou un pavé tactile.

Génération d'un profil

Ensuite, nous devons préparer les applications de Gaia pour le simulateur. Cela comprend le fait d'empaqueter les applications Gaia de la même façon que si elles étaient installées sur l'appareil, ainsi que la mise en place des permissions pour les applications système privilégiées. Cela est réalisé par la génération d'un profil. La commande suivante (à lancer dans le dossier de téléchargement de gaia) effectuera  cette tâche :

make DESKTOP_SHIMS=1 NOFTU=1 DEBUG=1

Un dossier profile-debug sera créé sous le répertoire gaia. Le nouveau profil contient une extension personnalisée et d'autres éléments de configuration nécessaires au bon fonctionnement de B2G.

Note : Il existe actuellement un bogue (bug 1180103) qui fait qu'avec les profils de débogage de Gaia l'écran d'accueil est vide lors de l'exécution avec le Simulateur Firefox OS (depuis WebIDE, ou autre.) Il peut être contourné en compilant avec DEBUG=1 DESKTOP=0 make au lieu de DEBUG=1.

Exécution du simulateur

Une fois que vous avez construit le client (ou téléchargé et installé la version nocturne de l'application de bureau) et téléchargé Gaia , vous êtes prêt à lancer le simulateur.

Exécution sous Linux

Pour lancer le simulateur sur Linux en utilisant le profil Gaia qu'il contient, exécutez simplement l'exécutable b2g.  Le binaire se trouve dans l'archive téléchargée plus tôt ou dans le répertoire objdir/dist/bin si vous avez compilé le client vous-même.

b2g -profile gaia/profile-debug

Vous pouvez rencontrer des problèmes gênants de rendu. Pour les éviter, ajoutez la ligne suivante dans votre fichier gaia/profile/user.js :

user_pref("layers.acceleration.disabled", true);

Exécution sur Mac

Si vous avez téléchargé la version Nocturne, vous pouvez l'exécuter simplement à partir du Finder de manière classique. Les sorties de la console sont visibles en lançant l'utilitaire Console standard fourni avec votre Mac.

Si vous souhaitez spécifier un profil Gaia différent (tel que votre téléchargement Gaia fait plus haut), vous devez ignorer le wrapper b2g et exécuter le binaire b2g. La ligne de commandes est légèrement plus compliquée en raison de l'emplacement du binaire b2g et de l'obligation d'utiliser des chemins absolus pour indiquer le répertoire du profil :

.../B2G.app/Contents/MacOS/b2g-bin -profile /chemin/complet/vers/profile-debug/gaia

Exécution sous Windows

Exécuter la version Nocturne sous Windows se résume à lancer b2g.exe. Si vous voulez personnaliser l'exécution, vous pouvez le faire en lançant l'exécutable b2g.exe à la place ; cela contourne le wrapper qu'utilise automatiquement Gaia.

Options de la ligne de commandes

Il y a un certain nombre d'options de ligne de commandes qu'il est possible de préciser afin d'ajuster l'expérience lors de l'utilisation du simulateur. Vous pouvez en obtenir une liste avec l'option -help. Cette section en décrit certaines particulièrement intéressantes.

Configuration de la taille de l'écran

Vous pouvez spécifier la taille de l'écran de l'appareil à simuler avec l'option -screen :

b2g -screen <largeur>x<hauteur>@<ppp>

<largeur>, <hauteur>, et <ppp> sont des paramètres aux noms explicites : la largeur et la hauteur de l'écran en pixels et la résolution en PPP. Voici des exemples concrets :

b2g -screen 320x480
b2g -screen 320x480@160

De manière facultative, il est possible d'indiquer par leur nom des appareils spécifiques pour simuler leurs taille d'écran et résolution :

  • iphone
  • ipad
  • nexus_s
  • galaxy_nexus
  • galaxy_tab
  • wildfire
  • tattoo
  • salsa
  • chacha

Ces appareils préréglés sont définis dans screen.js.

Afin de sélectionner des écrans différents, le chemin du profil doit être spécifié comme ceci :

./b2g-bin --profile ./gaia/profile/ --screen=galaxy_tab

Ouverture de la console JavaScript

La console JavaScript peut être ouverte lors du lancement du simulateur en l'exécutant à partir de la ligne de commandes avec l'option -jsconsole. Après la compilation, tapez :

.../b2g -jsconsole -profile /chemin/vers/votre/profil

Si vous avez installé la version Nocturne sur un Mac, vous pouvez utiliser ce qui suit :

/Applications/B2G.app/Contents/MacOS/b2g -jsconsole -profile /chemin/vers/votre/profil-debug

Note : Sur les versions de production de Firefox OS, la journalisation vers la console (par exemple console.log()) est désactivée par défaut. Pour l'activer, ouvrez les paramètres Développeurs et activez le paramètre Activer la console.

Exécution d'une application spécifique au démarrage

Vous pouvez spécifier une application à lancer automatiquement lorsque le simulateur démarre b2g. Son lancement se fera dès que le chargement du reste du système sera terminé. Dans ce but, utilisez simplement l'option -runapp, elle prend comme paramètre le nom de l'application à exécuter. Par exemple :

 .../b2g -profile /chemin/vers/votre/profil-debug/gaia -runapp email

Note : Le nom spécifié est normalisé en le convertissant tout en minuscules et en supprimant tous les tirets et espaces. Ce nom normalisé est ensuite comparé aux noms normalisés similaires extraits des manifestes des applications disponibles. Par exemple, le nom de l'application de courriel est actuellement "E-mail", mais -runapp email fonctionnera grâce à cette normalisation.

Si vous spécifiez l'option -runapp sans argument, ou avec un argument vide, le simulateur affichera sur votre terminal une liste des applications connues ainsi qu'un bref message informatif.

Note : L'utilisation de l'option -runapp a pour effet de bord la désactivation de l'écran de verrouillage et sa non-réactivation. Cela implique de ne pas utiliser cette commande avec un profil sur lequel vous voulez tester l'écran de verrouillage, ou le réactiver manuellement en utilisant Paramètres > Écran de verrouillage. N'hésitez pas à contribuer avec un patch pour modifier ce comportement si c'est un problème.

Astuces pratiques

Cette section offre quelques trucs utiles pour utiliser le client de bureau B2G.

  • La touche Échap a la même fonction que le bouton "retour".
  • La touche Début a la même fonction que le bouton "home" ; si vous êtes sur Mac, la touche Début est disponible avec Fn + ← (Fn + Flèche Gauche).
  • La touche Fin a la même fonction que le bouton "power" ; si vous êtes sur Mac, la touche Fin est accessible avec Fn + → (Fn + Flèche Droite).
  • Les touches Page Haut et Page Bas ont respectivement les mêmes fonctions que les boutons "Volume Haut" et "Volume Bas" ; si vous êtes sur Mac, la touche Page Haut est disponible via Fn + ↑ (Fn + Flèche Haut) et Page Bas avec Fn + ↓ (Fn + Flèche Bas).
  • Un appui long sur la touche Home ouvre la "Vue Miniatures" ; sur Mac, Cmd + Fn + ← (Cmd + Fn + Flèche Gauche) ouvre la "Vue Miniatures".

Dépannage : Écran vide lors du démarrage du simulateur

Lorsque vous démarrez b2g avec b2g -profile gaia/chemin/vers/profil/gaia, un écran vide peut apparaître avec une erreur "Cannot reach app://system.gaiamobile.org". Pour résoudre ce problème, il y a plusieurs choses à vérifier :

  • Reconstruire le profil gaia en utilisant le profil DEBUG=1 make du répertoire gaia.
  • Relancer b2g.
  • Si cela ne corrige pas le problème, vérifier s'il y a d'autres processus en écoute sur le port 8080. Le profil par défaut de Gaia démarre httpd.js qui utilise ce port. Quand un profil de débogage est utilisé, B2G se connecte à localhost:8080. Si un autre processus fonctionne sur ce même port, b2g ne réussira pas à afficher la page d'accueil de gaia.
    1. Pour déterminer si c'est le cas, vous pouvez activer les journaux de httpd.js. Le httpd.js du profil se trouve à l'emplacement gaia/profile/extensions/httpd/content/httpd.js. Ouvrez ce fichier pour édition.
    2. Remplacez la ligne var DEBUG=false; par var DEBUG=true;
    3. Enregistrez le fichier et redémarrez B2G. Vous devriez maintenant voir les journaux d'httpd sur la console.

Étapes suivantes

Maintenant que vous disposez d'une version simulée de Boot to Gecko fonctionnelle, vous pouvez faire des tests, du développement, ou tout autre chose avec :

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : jwhitlock, xdelatour
 Dernière mise à jour par : jwhitlock,