Please note, this is a STATIC archive of website developer.mozilla.org from November 2016, cach3.com does not collect or store any user information, there is no "phishing" involved.

Guide pour créer une version personnalisée de Gaia

Dans cet article
  1. Aperçu
  2. Les étapes pour appliquer la personnalisation
  3. Les personnalisations appliquées lors de la construction
    1. power/
    2. ringtones/
    3. wallpapers/
    4. browser.json
    5. calendar.json
    6. camera-config.json (Tailles d'image pour la galerie et l'appareil photo)
    7. contacts.json
    8. device-features.json
    9. eu-roaming.json
    10. homescreens.json
      1. Collections
      2. Les propriétés de l'écran d'accueil vertical
    11. network.json (ce fichier n'apparait pas dans le dossier de personnalisation)
    12. settings.json
      1. Fournisseur de recherche par défaut pour la Rocketbar
    13. Personnaliser le moteur de recherche
    14. Personnaliser les applications par défaut de l'écran d'accueil
    15. sms-blacklist.json
    16. cellbroadcast
    17. support.json
    18. Profil pour l'agent utilisateur WAP (wapuaprof.json)
    19. apps.list
  4. Les autres options de personnalisation
    1. Marque-pages et moteurs de recherche par défaut du navigateur
    2. Personnalisation de la liste des fournisseurs de recherche pour la Rocketbar
    3. Réglages pour les données et les messages
    4. Réglages concernant la messagerie et la diffusion cellulaire
    5. Profil de l'agent utilisateur WAP
    6. Applications
    7. Les autres personnalisations utilisant un fichier de variante
      1. Contacts d'assistance
      2. Contacts par défaut
      3. Sonnerie
      4. Fond d'écran
      5. Paramètres clavier
      6. Indicateurs de réseau
      7. SSID WiFi pré-paramétrés
      8. Activation/Désactivation des données par défaut lors de l'expérience de première utilisation
      9. Nombre maximum de SMS à convertir en MMS
      10. Initialiser les sites les plus visités du navigateur
      11. Marque-pages
      12. Activation/Désactivation de l'itinérance des données par défaut
      13. Animation à l'allumage/extinction
      14. Activation/Désactivation du NFC par défaut
  5. Construire des applications web pré-empaquetées
    1. Empaqueter une seule application
    2. Empaqueter plusieurs applications (traitement en lots)
    3. Le fichier metadata.json pour les applications pré-empaquetées
    4. Mises à jour automatique des applications empaquetées : le format update.webapp
    5. Application pré-empaquetée au format AppCache
  6. FAQ
    1. Qu'est-ce qui peut être personnalisé ?
    2. Comment définir une disposition des applications personnalisée ?
    3. Est-il possible de définir si une application peut être retirée de l'écran d'accueil avec la configuration ?
    4. Comment ajouter une application empaquetée préchargée ou une application hébergée à la construction ?
    5. Comment préparer une application hébergée préchargée pour qu'elle fonctionne hors ligne ?
    6. Quelles adaptations peuvent être effectuées pour le Marketplace ?
    7. Comment enregistrer les modifications apportées ?
    8. Comment construire le produit avec une configuration spécifique ?
    9. Comment personnaliser l'animation d'allumage/extinction ?

Il est possible de créer une version personnalisée (par exemple, choisir les applications intégrées dans la version) sans modifier le cœur du dépôt de Gaia. Vous pouvez ajouter vos éléments de personnalisation dans des dossiers distincts ou bien utiliser les répertoires existants dans le code originale. Les options de construction (build) permettent de spécifier les éléments à personnaliser. Cet article expliquera en détail comment créer et utiliser ces éléments de personnalisation.

Aperçu

Nécessite Firefox OS 1.0.1

Depuis la version 1.0.1, Firefox OS utilise le même mécanisme pour apporter les personnalisations. Toutes les fonctionnalités illustrées dans cet article fonctionnent pour Firefox OS 1.0.1 sauf mention contraire.

Une version entièrement personnalisée de Gaia fait partie du dépôt Gaia : vous pouvez explorer les différents aspects de personnalisation sur cette version et/ou suivre cet article.

Note : Merci d'envoyer une pull request sur le dépôt Github de Gaia pour toute suggestion permettant d'améliorer cet exemple, ou si vous trouvez des éléments de cet article qui ne sont pas exploités dans ce code.

Voici l'arborescence de l'exemple de personnalisation :

  customize-sample
  ├── power
  │   ├── carrier_power_on.png
  │   └── carrier_power_off.png
  ├── ringtones
  │   ├── list.json
  │   └── ringer_dream_theme.ogg
  ├── wallpapers
  │   ├── customize.png
  │   └── list.json
  ├── browser.json
  ├── calendar.json
  ├── contacts.json
  ├── costcontrol.json
  ├── device-features.json
  ├── eu-roaming.json
  ├── homescreens.json
  ├── network.json
  ├── settings.json
  ├── sms-blacklist.json
  ├── support.json
  ├── wapuaprof.json
  └── apps.list

Note : Chacun des fichiers est optionnel. Si vous ne fournissez pas un de ces fichiers, le fichier par défaut sera pris en compte.

Chacune de ces personnalisations sera discutée dans la suite. Le paragraphe suivant, quant à lui, explique comment appliquer ces éléments de personnalisation à Gaia.

Les étapes pour appliquer la personnalisation

Pour appliquer l'exemple de personnalisation à Gaia, il faut :

  1. Clôner le dépôt de Gaia depuis https://github.com/mozilla-b2g/gaia.
  2. Copier le répertoire gaia/customization/ dans un autre répertoire pour y apporter vos propres adaptations ou bien éditer directement le contenu du répertoire gaia/customization/. Le chemin du répertoire en question sera évoqué par  <DISTRIBUTION_PATH> dans la suite. À chaque exemple, assurez-vous de bien remplacer la variable dans les commandes.
  3. Effectuez les changements que vous souhaitez.
  4. Connectez un appareil Firefox OS à votre ordinateur par USB, vérifiez que celui-ci est bien reconnu par ADB.
  5. Construisez Gaia en spécifiant l'emplacement du répertoire de personnalisation en utilisant la variable d'environnement GAIA_DISTRIBUTION_DIR avec :
    make production GAIA_DISTRIBUTION_DIR=<DISTRIBUTION_PATH>
  6. Vous devriez désormais disposez d'une version personnalisée de Gaia sur votre appareil Firefox OS.

Si vous copiez le contenu du répertoire de personnalisation dans gaia/distribution/, vous pouvez lancer la commande make sans la variable d'environnement :

make production

Note : Certaines personnalisations ont lieu lors de l'exécution des scripts de construction. Voir la référence des options de make pour les éléments de personnalisation liés aux scripts de construction.

Note : Les éléments de personnalisation concernant la carte SIM sont inclus lors de la construction. Par contre, ils sont appliqués lors de la phase de première utilisation (FTU pour First Time Usage en anglais).

Les personnalisations appliquées lors de la construction

Dans la suite du paragraphe, les différentes options de l'exemple seront illustrées.

power/

Les animations (ou les images fixes) pour les écrans d'allumage/extinction de l'appareil sont à insérer ici. Les fichiers peuvent être des animations MP4 ou des images PNG.

Les noms de fichiers acceptés sont :

  • carrier_power_on.png
  • carrier_power_on.mp4
  • carrier_power_off.png
  • carrier_power_off.mp4

(carrier_power_on.[png/mp4] sera utilisé lors de l'allumage, carrier_power_off.[png/mp4] sera utilisé lors de l'extinction)

ringtones/

Les sonneries personnalisées peuvent être placées ici. Le fichier list.json doit contenir les noms des fichiers des différentes sonneries, dans le format suivant :

  {
    "ringer_classic_courier.opus": "",
    "ringer_dream_theme.ogg": "",
    "ringer_loud_windchimes.opus": "",
    "ringer_bitbounce.opus": ""
  }

Les sonneries personnalisées peuvent être choisies dans les réglages de Firefox OS via Son > Sonnerie. La sonnerie par défaut doit être définie dans settings.json, avec une DataURI. Vous pouvez utiliser la commande datauri pour créer l'URI qui est disponible via Node.js/npm:

  1. Installer l'utilitaire avec la commande npm install datauri -g
  2. Convertir le fichier en DataURI avec datauri <FILE>.

wallpapers/

Les fonds d'écran par défaut (fichiers PNG) peuvent être placés dans ce dossier et lister dans le fichier list.json. Ils pourront être sélectionné dans les réglages de Firefox OS via Affichage > Fond d'écran.

Le fond d'écran par défaut peut être défini dans le fichier settings.json grâce à la ligne suivante :

"wallpaper.image": "emplacement de l'image"

Note : L'image peut être définie grâce à un chemin de fichier ou grâce à une DataURI.

browser.json

Ce fichier permet d'ajouter des éléments personnalisés dans l'application Navigateur (par exemple des marque-pages, des moteurs de recherche par défaut). Voir la section Marque-pages et moteur de recherche par défaut pour plus d'informations sur les informations à placer dans ce fichier.

calendar.json

Ce fichier permet d'ajouter vos propres calendrier à l'application Calendrier de Firefox OS. Pour cela, il sera nécessaire de définir vous identifiants Google OAuth. De plus, vous aurez besoin de configuer un accès à l'API CalDav : pour générer la clé d'API et le secret associé, vous aurez besoin de créer votre identifiant client (client au sens informatique). Pour cela, suivez les étapes suivantes :

  1. Ouvrez la console d'API.
  2. Créez un projet puis activez Calendar CalDav API dans APIs & auth > APIs (API et authentification > API)
  3. Cliquez sur Credentials (Identifiants)
  4. Cliquez sur Create new client ID (Créer un nouvel identifiant de client)
  5. Définissez le champ Application type (Type d'application) avec Installed application (application installée) et définir Installed application type avec Other (autre) puis cliquez sur Create Client ID (Créer un identifiant client). Vous devriez obtenir un identifiant et un secret de client.
  6. Ouvrez le fichier calendar.json, modifiez les valeurs client_id et client_secret avec celles que vous avez obtenues à l'étape précédente. Sauvegardez puis fermez le fichier.

Note : L'utilisation de l'API est limitée à 1 000 000 (1 millions) de requêtes par jour.

camera-config.json (Tailles d'image pour la galerie et l'appareil photo)

{
  "maxImagePixelSize": 6000000,
  "maxSnapshotPixelSize": 4000000,
  "requiredEXIFPreviewSize": {
    "width": 1200,
    "height": 1222
  }
}

maxImagePixelSize et maxSnapshotPixelSize correspondent aux tailles maximales, exprimées en pixels. Par défaut, ces paramètres sont fixés à 5 mega pixels (5x220 pixels 5MP).

Vous pouvez également définir les variables nécessaires pour définir la taille minimale de l'aperçu EXIF qui sera utilisé lors de la prévisualisation plein écran en ajoutant la propriété requiredEXIFPreviewSize. Si vous ne définissez pas cette propriété, la prévisualisation EXIF ne sera faite que lorsqu'elle sera assez grande pour remplir l'écran (en largeur ou en hauteur) en paysage ou en portrait.

contacts.json

Les contacts listés dans ce fichier seront intégrés à la base de données des contacts du téléphone lors de la construction de Gaia.

Voici un exemple de fichier contacts.json :

[
   {
     "name": ["Jean Biche"],
     "givenName": ["Jean"],
     "familyName": ["Biche"],
     "nickname": ["Johnny"],
     "category": ["Travail", "Équipe bowling"],
     "email": [
       {
         "type": ["personal"],
         "value": "[email protected]",
         "pref": true
       },
       {
         "type": ["work"],
         "value": "jbiche@société.com"
       }
     ],
     "adr": [
       {
         "type": ["personal"],
         "streetAddress": "123 Foopy St.",
         "locality": "San Francisco",
         "region": "Downtown",
         "postalCode": "94030",
         "countryName": "US"
       }
     ]
   },
   {
     "name": ["Operateur"],
     "email": [
       {
         "type": ["work"],
         "value": "support@opérateurx.com"
       }
     ],
     "url": [
       {
         "type": ["work"],
         "value": "https://www.opérateurx.com"
       }
     ]
   }
 ]

Note : Voir la page sur l'API Contacts pour plus d'informations sur la structure des objets contacts.

Note : Pour des personnalisations propres à la carte SIM, lire la section Marque-pages et moteur de recherche par défaut du navigateur.

device-features.json

Ce fichier définit les capacités matérielles de l'appareil. Par défaut, le fichier contient :

{ 
  "ambientLight": true,
  "vibration": true,
  "usbHotProtocolSwitch": false 
}

Pour le capteur de lumière et le vibreur, vous pouvez changer ces valeurs à false si vous souhaitez désactiver certaines fonctionnalités de l'appareil.

eu-roaming.json

Ce fichier contient la liste des opérateurs qui doivent respecter la législation européenne pour l'itinérance des données, ainsi que les APN (Access Point Name) correspondants. Le fichier est composé de trois partie. La première home, contient les codes des opérateurs qui doivent respecter cette législation. La deuxième partie, foreign, contient les codes des opérateurs étrangers pour lesquels une notification devrait être activée lors de l'itinérance des données est active dans ce pays. Enfin, la dernière partie contient le détail pour les APN par défaut dans l'Union européenne. Par défaut, le contenu du fichier est :

{
  "home": null,
  "foreign": null,
  "defaultApns": []
}

Si vous souhaitez que le système d'exploitation affiche une notification lors de l'itinérance des données, le fichier ressemblera à celui présenté ci-dessous. Pour cet exemple, l'utilisateur utilisant une carte SIM d'un opérateur "001, 01" recevra une notification concernant l'itinérance des données quand il utilisera le réseau de l'opérateur dont le code est "002, 02" :

{
  "home": {
    "001": {
      "01": true
    }
  },
  "foreign": {
    "002": {
      "02": true
    }
  },
  "defaultApns": [{
    "apn": "eu.apn",
    "types": ["default"]
  }]
}

Note : Tous les paramètres des APN listés dans defaultApns apparaîtront également via l'application des Paramètres.

homescreens.json

homescreens.json définit les applications à afficher sur la partie principale de l'écran d'accueil et sur les autres pages de l'écran d'accueil, ainsi que l'ordre dans lequel elles sont affichées. Par défaut, le fichier contient :

{"homescreens": [
   [
     ["apps", "communications", "dialer"],
     ["apps", "sms"],
     ["apps", "browser"],
     ["apps", "camera"]
   ]
 ]}

Avec ces informations, les quatres applications décrites seront affichées sur l'écran principal de l'écran d'accueil. Si on ajoute un autre tableau, les applications contenues apparaîtront sur la première page de l'écran d'accueil, l'ensemble suivant apparaîtra sur la deuxième page et ainsi de suite.

{"homescreens": [
   [ // Écran principal pour l'écran d'accueil
     ["apps", "communications", "dialer"],
     ["apps", "sms"],
     ["apps", "browser"],
     ["apps", "camera"]
   ],
   [ // Page 1 de l'écran d'accueil
     ["apps", "email"],
     ["apps", "settings"],
     ["apps", "clock"],
     ["apps", "calendar"]
   ],
   [ // Page 1 de l'écran d'accueil
     ["external-apps", "appPerso1"],
     ["external-apps", "appPerso2"],
     ["external-apps", "appPerso3"],
     ["external-apps", "appPerso4"]
   ]
 ]}

Le premier élément de chaque sous-tableau correspond au nom du répertoire de l'application, le second correspond au nom de l'application et de son répertoire dédié.

Collections

Note : Avec Firefox 2.0, le répertoire collections a été déplacé de l'application homescreen vers l'application collections. Certains champs du fichier manifeste ont également été modifiés (voir le fichier de manifeste pour la collection funny par exemple) : provider_id a été modifié en  categoryId, et apps a été modifié en pinned.

Les collections sont des groupes d'applications avec leur propre icône qui apparaît sur l'écran d'accueil. Lorsque l'utilisateur touche l'icône, un nouvel écran apparaît et présente l'ensemble des icônes pour les applications contenues dans le groupe. Vous pouvez regarder le contenu du répertoire collections pour voir les collections disponibles par défaut :

  • funny : découvrez les dernières applications insolites
  • games : jouez à des jeux en ligne
  • local : ce qui se passe près de vous
  • music : écoutez votre musique préférée avec ces applications
  • news : restez à jour en suivant les actualités
  • shopping : les modes de shopping
  • showbiz : découvrez des applications de divertissement
  • social : gardez à portée vos réseaux sociaux
  • sports : les meilleurs appliactions sur le sport
  • tv : les applications liées aux medias

Dans chacun de ces répertoires, vous trouverez les icônes pour les différentes résolutions ainsi qu'un fichier de manifeste qui définit des méta-données sur la collection comme son nom, son rôle, ainsi que l'emplacement de ces icônes.

Note : Des collections supplémentaires sont disponibles sur le serveur E.me (19 collections au total, incluant les 10 collections présentées ci-dessus). Vous pouvez voir ces collections en maintenant une pression sur l'écran d'accueil et en choisissant l'option "Ajouter des collections intelligentes".

Dans le fichier homescreens.json, vous pouvez choisir les collections que vous souhaitez charger, les pages sur lesquelles elles doivent apparaître ainsi que l'ordre de leur disposition. Par exemple, si on souhaite faire apparaître les collections shopping, social, sports et tv, on pourra avoir le fichier suivant :

{"homescreens": [
   [
     ["apps/collection/collections", "shopping"],
     ["apps/collection/collections", "social"],
     ["apps/collection/collections", "sports"],
     ["apps/collection/collections", "tv"]
   ], [
     ["apps", "communications", "dialer"],
     ["apps", "sms"],
     ["apps", "browser"],
     ["apps", "camera"]
   ]
 ]}

Chaque tableau de plus haut niveau fait référence à une des pages de l'écran d'accueil. Pour cet exemple, les collections apparaîtront sur la page principale (dock) de l'écran d'accueil et les applications individuelles apparaîtront sur la première page de l'écran d'accueil.

Note : Par défaut, quatre collections sont utilisées pour la première page de l'écran d'accueil de Gaia : social, games, music et entertainment.

Note : Les noms des collections sont écrits en minuscules.

Le contenu des collections

Les collections sont composées de deux types d'application.

Les applications locales sont définies lors de la construction grâce à une fichier de manifeste situé sous /apps/collection/collections/<nomDeLaCollection>/manifest.collection. Les applications locales contenues dans chaque collection sont définies dans le fichier de manifeste. La collection social (qui contient les applications pour le téléphone, les sms, les contacts et les e-mails) aura le fichier de manifeste suivant :

{
  "name": "Social",
  "role": "collection",
  "provider_id": "289", // identifiant pour la recherche adaptative
  "apps": [
    ["apps", "communications", "dialer"],
    ["apps", "sms"],
    ["apps", "communications", "contacts"],
    ["apps", "email"]
  ],
  "default_locale": "en-US",
  "icons": {
    "60": "/collections/social/icon.png",
    "90": "/collections/social/[email protected]",
    "120": "/collections/social/[email protected]"
  }
 }

Les applications distantes sont fournies par le moteur de recherche adaptative lors de l'exécution et quand l'appareil est connecté.

Traduire les collections

Les traductions pour les collections doivent être définies dans les fichiers de locales pour l'application Écran d'accueil dans le répertoire apps/collection/locales/. Chaque fichier de locale devra avoir un nom structurant avec la structure collections.<codeLangue>.properties — avec <codeLangue> qui vaut, par exemple, fr pour le français. Ce fichier contient des lignes simples qui contiennent les identifiants des chaînes anglaises associées à leur traduction. Voici un exemple pour la locale française :

# Add bookmark to homescreen
add-to-home-screen=Ajouter à l’écran d’accueil
add-to-home-screen-header=Ajouter un lien
website-name=Nom du site web
address=Adresse
added-to-home-screen=Ajouté à l’écran d’accueil
Collections personnalisées

Nécessite Firefox OS 1.3

À partir de Firefox OS 1.3, vous pouvez définir vos propres collections. Pour cela, il suffit de créer la collection dans le répertoire collection, et de les référencer dans le fichier collections.json vu avant.

Les propriétés de l'écran d'accueil vertical

À partir de Firefox 2.0, il est possible de choisir une disposition verticale (plutôt que des pages horizontales) pour l'écran d'accueil. Les propriétés de l'écran d'accueil sont définies dans le fichier default-homescreens.json qui décrit les applications, les collections et les marque-pages à afficher ainsi que le nombre de colonnes pour l'écran d'accueil.

network.json (ce fichier n'apparait pas dans le dossier de personnalisation)

Nécessite Firefox OS 1.4

Important : Cette personnalisation n'est plus supportée depuis Firefox OS 1.4+.

Dans les versions de Firefox OS < 1.4, ce fichier peut être créé dans gaia/apps/settings/resources. Il permet de définir les types de réseaux supportés par l'appareil. Firefox OS fonctionne sur les types de réseaux suivants :

  • 'wcdma/gsm' (WCDMA de préférence)
  • 'gsm'
  • 'wcdma'
  • 'wcdma/gsm-auto' (GSM de préférence)
  • 'cdma/evdo' (CDMA de préférence)
  • 'cdma'
  • 'evdo'
  • 'wcdma/gsm/cdma/evdo' (Automatique)

Voici un exemple de fichier :

{
  "types":  [
    "cdma/evdo",
    "cdma", "evdo"
  ]
}

settings.json

  • Réglages généraux : Nécessite Firefox OS 1.0.1
  • Fournisseur de recherche par défaut pour la Rocketbar : Nécessite Firefox OS 2.0

Ce fichier permet de définir les valeurs par défaut pour le fond d'écran, les sonneries, l'activation ou non de l'écran de verrouillage, l'activation ou non du bluetooth, etc. Vous pouvez consulter le fichier build/config/common-settings.json pour déterminer les réglages possibles. Par exemple, vous pouvez inclure la ligne "wifi.enabled":false pour désactiver le wifi par défaut.

Les réglages personnalisés sont à placer dans le fichier customization/settings.json.

Fournisseur de recherche par défaut pour la Rocketbar

Dans Firefox OS 2.0 et les versions supérieures, les paramètres suivants peuvent être ajoutés dans le fichier settings.json, pour définir le fournisseur de recherche par défaut pour la Rocketbar :

"search.urlTemplate": "https://www.google.com/search?q={searchTerms}",
"search.suggestionsUrlTemplate": "https://www.google.com/complete/search?client=firefox&q={searchTerms}",
"search.iconUrl": "data:image/x-icon;base64,AAABAAIAEBAAAAAAAAB9AQAAJ [TRONQUÉ POUR L'EXEMPLE]

Personnaliser le moteur de recherche

Nécessite Firefox OS 2.0

À partir de Firefox 2.0+, il existe une liste par défaut pour les différents moteurs de recherches et les fichiers d'icônes associés : apps/settings/resources/search/providers.json. Vous pouvez configurer cette liste lors de la construction en éditant le fichier customization/search/providers.json et en ajoutant les fichiers d'icônes appropriés dans le même répertoire. Le contenu de ce répertoire écrasera app/settings/resources/search s'il existe et si vous avez lancé la construction avec la commande make production GAIA_DISTRIBUTION_DIR=customization.

Personnaliser les applications par défaut de l'écran d'accueil

homescreen.appName vous permet de définr des applications comme applications par défaut pour l'écran d'accueil.

{ "homescreen.appName": "homescreen-stingray" }

sms-blacklist.json

Ce fichier contient une liste finie de numéros de téléphone pour lesquels il ne sera pas possible d'envoyer des SMS. Cette liste surchargera le fichier blacklist.json de l'application SMS si elle existe. Les numéros de téléphone sont définis dans un tableau comme suit :

["11223344", "55667788"]

cellbroadcast

Canaux d'écoute :

  • Disponible lors de l'utilisation dans les Réglages ril.cellbroadcast.searchlist
  • type : chaîne de caractères
  • format valide : \d(-\d)?(,\d(-\d))*

Désactiver le rapport d'événement :

  • Disponible
    • lors de l'utilisation : dans les Réglages — ril.cellbroadcast.disabled
    • lors dans la construction : dans les préférences utilisateurs — ril.cellbroadcast.disabled
  • Type : booléen
  • Signification : vaut true pour désactiver la diffusion depuis la cellule du téléphone (Cell Broadcast reporting).

Note : Les paramètres par défaut sont disponibles dans le fichier operator_variant.xml.

support.json

Ce fichier contient des contacts pour l'assistance (en ligne ou téléphonique). Lorsque ce fichier est renseigné, il écrasera le fichier support.json contenu dans l'application Paramètres. Pour conserver les contacts par défaut, il faudra les copier du fichier original sur le fichier de personnalisation puis ajouter vos nouveaux contacts.

Voici un exemple de fichier JSON :

{
   "onlinesupport": {
     "href": "https://support.mozilla.org/",
     "title": "Mozilla Support"
   },
   "callsupport": [
     {
       "href": "tel:12345678",
       "title": "Assistance tél. 1"
     },
     {
       "href": "tel:87654321",
       "title": "Assistance tél. 2"
     }
   ]
 }

Profil pour l'agent utilisateur WAP (wapuaprof.json)

Le profil d'agent utilisateur WAP peut surcharger l'agent utilisateur lors de l'envoi de paquets WAP. Si vous souhaitez surcharger le profil d'agent utilisateur (user agent profile) par défaut avec des informations MCC/MNC, vous pouvez utiliser ce fichier (voir les explications supplémentaires dans runtime customization).

apps.list

Ce fichier vous permet de définir les applications que vous souhaitez charger à l'exécution (de façon semblable à variant.json, comme expliqué ci-après dans le paragraphe Applications). Les applications sont listées de la façon suivante :

apps/*
external-apps/*
outoftree_apps/*

Vous pouvez lister des applications spécifiques plutôt que des répertoires entiers :

apps/email
apps/settings

Note : Si vous souhaitez ajouter des applications externes dans votre version de Gaia, vous devrez les construire d'une certaine façon et les placer dans le répertoire gaia/external-apps/. Lire le paragraphe Building Prebundled web apps pour plus d'informations à ce sujet.

Important : Si vous distribuez une version adaptée de Firefox OS avec des applications externes intégrées, vous devez respecter l'accord de distribution avec Mozilla (Mozilla's Distribution Agreement).

Les autres options de personnalisation

D'autres aspects de Gaia peuvent être personnalisés. C'est aspects sont décrits ici.

Note : Le script de construction utilisé pour la plupart des paragraphes suivants est gaia/build/applications-data.js. Il est copié dans un fichier init.json qui se situe dans le répertoire de l'application du navigateur lors de la construction.

Marque-pages et moteurs de recherche par défaut du navigateur

  • Marque-pages : Nécessite Firefox OS 1.0.1
  • Moteurs de recherche par défaut : Nécessite Firefox OS 1.2

Les marque-pages et moteurs de recherche par défaut peuvent être personnalisés lors de la construction et on peut avoir différentes variantes pour chacun des pays au sein d'une même version. Les données personnalisées sont insérées dans l'application du navigateur la première fois qu'il est lancé en fonction des codes MCC / MNC de la carte SIM de l'appareil à ce moment.

Note : Les marque-pages peuvent être personnalisés depuis la version 1.0.1 de Firefox OS mais la procédure a été modifiée avec la version 2.1 (ce qui est expliqué dans le paragraphe suivant). Les moteurs de recherches peuvent être personnalisés à partir de Firefox OS 1.2.

L'exemple ci-après (browser.json) illustre une configuration pour l'opérateur Vivo au Brésil (724006 avec 724 pour le Brésil et 006 pour Vivo selon la codification MCC / MNC), ainsi que le cas par défaut (000000) présent au cas où la carte SIM ne correspondrait pas à l'opérateur ou au cas où la carte SIM est absente de l'appareil.

content = {
   '000000': {
     'bookmarks': [
       { 'title': 'Mozilla',
         'uri': 'https://mozilla.org',
         'iconUri':
           'data:image/png;base64,AAABAAIAEBAAAAEAIABo[tronqué]'
       },
       { 'title': 'Firefox OS',
         'uri': 'https://mozilla.org/firefoxos',
         'iconUri':
           'data:image/png;base64,AAABAAIAEBAAAAEA[tronqué]'
       }
     ],
     'searchEngines' : [
        {
          'title': 'Google',
          'uri': 'https://www.google.com/search?q={searchTerms}',
          'iconUri':
            'data:image/png;base64,AAABAAIAEBAAAAEAIABoBAA[tronqué]'
        }
      ],
      'settings' : {
        'defaultSearchEngine': 'https://www.google.com/search?q={searchTerms}'
      }
   },
 
   '724006': {
     "bookmarks": [
       { "title": "Vivo Busca",
         "uri": "https://www.google.com.br/m/search",
         "iconUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAC[tronqué]"
       },
       { "title": "Serviços e Downloads",
         "uri": "https://vds.vivo.com.br",
         "iconUri": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACA[tronqué]"
       },
       {
         "title": "Site Vivo",
         "uri": "https://www.vivo.com.br/conteudosmartphone",
         "iconUri": "data:image/jpg;base64,/9j/4AAQSkZJRg[tronqué]"
       }
     ],
     'searchEngines' : [
        {
          'title': 'Yahoo',
          'uri': 'https://search.yahoo.com/search?q={searchTerms}',
          'iconUri':
            'data:image/png;base64,AAABAAIAEBAAAAEAIABoBAA[tronqué]'
        }
      ],
      'settings' : {
        'defaultSearchEngine': 'https://search.yahoo.com/search?q={searchTerms}'
      }
   }
 };

Pour cet exemple, si la carte SIM de l'appareil est une carte de l'opérateur Vivo au Brésil, lors de la première utilisation, l'utilisateur verra les marque-pages Vivo et aura Yahoo comme moteur de recherche par défatu. Si une autre carte (ou aucune carte) est présente dans l'appareil lors de la première utilisation, l'utilisateur verra les marque-pages Mozilla ainsi que le moteur de recherche Google. Plusieurs aspects importants sont à noter :

  • La propriété  defaultSearchEngine doit correspondre à la propriété uri du moteur de recherche défini. Cette chaîne de caractères sera utilisée comme modèle pour les différentes requête. {searchTerms} sera remplacé par les termes saisis par l'utilisateur pour la recherche. D'autres chaînes de caractères complétant la recherche peuvent être ajouté après cette variable dans les différentes URL .
  • Les URL pour les icônes sont des dataURI encodées en base 64 (tronquées pour l'exemple) et non pas des URL HTTP. Cela permet de faire apparaître les icônes lors de la première utilisation et ce même si l'appareil n'est pas connecté à Internet.
  • Il est donc possible d'avoir un fichier qui contient différents cas pour différents opérateurs dans différents pays. Chaque variant étant représentée par un code à 6 chiffres composé du code MCC suivi du code MNC (les deux codes étant préfixés de '0' si nécessaire afin qu'ils soient chacun sur trois chiffres)
  • Lorsque la navigateur devra prendre connaissance du réglage (à la première utilisation), il consultera le fichier pour trouver une correspondance avec les codes MCC et MNC, s'il n'en trouve pas, il cherchera une correspondance avec MCC+000, s'il n'y a toujours pas de correspondance, il utilisera le code 000000.
  • Lors des mises à jour de Gaia, les nouvelles personnalisations ne seront appliquées que pour les nouvelles fonctionnalités. Si la fonctionnalité était déjà présente, l'ancienne adaptation ne sera pas surchargée.

Note : L'application du navigateur affichera les marque-pages dans le sens opposé (ex : le premier marque-page du fichier JSON sera affiché en dernier, etc.).

Personnalisation de la liste des fournisseurs de recherche pour la Rocketbar

Nécessite Firefox OS 2.0

  1. Il est également possible d'adapter le fournisseur de recherche par défaut (et la liste des fournisseurs) pour la Rocketbar. Cette personnalisation se base également sur les codes MCC/MNC. Pour définir les fournisseurs de recherche, il faut modifier deux fichiers JSON :
    • La liste des fournisseurs par MCC/MNC qui est définie dans le fichier mobizilla_search.json pour notre exemple,
    • Le fournisseur de recherche par défaut pour la Rocketbar qui est défini dans le fichier mobizilla_default_search.json pour notre exemple.
  2. variant.json définit ensuite les fichiers .json à utiliser pour chaque paire MCC/MNC. Ainsi, dans notre exemple, aux lignes 47 et 48, on a :
    "search": "mobizilla/mobizilla_search.json",
    "default_search": "mobizilla/mobizilla_default_search.json",
  3. variant.json doit être placé dans le répertoire racine consacré à la distribution de votre version.
  4. Afin d'appliquer cette configuration, pour la construction de Gaia la variable GAIA_DISTRIBUTION_DIR doit correspondre au chemin de votre répertoire consacré à la distribution de votre version.

Réglages pour les données et les messages

Il est possible d'adapter les réglages pour les données et les messages lors de l'exécution.

Pour ajouter des réglages spécifiques, il suffit d'éditer gaia/shared/resources/apn/apns_conf_local.xml en ajoutant ou en éditant des bloc pour chaque opérateur téléphonique :

 <apn carrier="Réseau Test"
      mcc="001"
      mnc="01"
      apn="internet"
      user="user"
      password="password"
      proxy="127.0.0.1"
      port="8080"
      mmsc="https://127.0.0.1"
      mmsproxy="127.0.0.1"
      mmsport="8080"
      authtype="0"
      type="default,supl,mms"
  />

Réglages concernant la messagerie et la diffusion cellulaire

Pour appliquer des changements spécifiques à la boîte vocale et à la diffusion cellulaire, il suffit de modifier le fichier gaia/shared/resources/apn/operator_variant.xml en ajoutant ou en éditant des blocs pour les opérateurs de la forme suivante :

   <operator carrier="Réseau Test avec variante par opérateur"
       mcc="001"
       mnc="01"
       cellBroadcastSearchList="0,1,2,3"
       voicemail="999999"
   />

Profil de l'agent utilisateur WAP

Le profil d'agent utilisateur WAP peut également être personnalisé lors de l'exécution et surcharge les informations de l'agent utilisateur lorsque le téléphone envoie des paquets WAP. En fonction des codes MCC/MNC, le profil peut être personnalisé grâce aux propriétés url et tagname . L'implémentation actuelle ne tient compte que de la propriété url.

Le profil d'agent utilisateur WAP utilise ici le même format que pour l'application Navigateur. "000000" est utilisé comme profil par défaut. Voici un exemple :

   {
     "000000": {
       "url": "https://example.url/default.xml"
     },
     "123001": {
       "url": "https://example.url/custom123001.xml"
     }
   }

Pour cet exemple, l'URL du profile par défaut est https://example.url/default.xml ; pour les codes MCC = 123 et MNC = 001, l'URL sera https://example.url/custom123001.xml. S'il y avait une autre carte dont les codes seraient MCC = 123 et MNC = 100, l'URL utilisée serait alors https://example.url/default.xml.

Si jamais l'élément dont le code est 000000 était retiré :

  {
     "123001": {
       "url": "https://example.url/custom123001.xml"
     }
   }

le profil utilisé par la carte dont les codes sont MCC = 123 et MNC = 001 serait désormais basé sur https://example.url/custom123001.xml. Les profils des autres codes ne seraient pas surchargés.

Si on gardait "000000" et que "123001" ne possèdait pas d'URL :

   {
     "000000": {
       "url": "https://example.url/default.xml"
     },
     "123001": {}
   }

tous les profils seraient surchargés avec l'URL https://example.url/default.xml

Applications

Les applications installées dans Firefox OS peuvent être adaptées lors de l'exécution (voir personnaliser les applications présentes lors de la construction). Pour personnaliser les applications en fonction de l'opérateur, il est possible d'utiliser le fichier variant.json pour déterminer quelles applications installer et comment les placer sur l'écran d'accueil. Les applications tierces seront ajoutées à la liste avec les applications standard.

La portion intéressante du fichier variant.json ressemblera à cela :

   {
     "apps": {
       "puzzle":
         {
           "manifestURL": "https://owd.tid.es/store/packages/fe8e4a866c518a42db9d2041568684c1.webapp"
         },
       "store":
         {
           "manifestURL": "https://owd.tid.es/store/manifest.webapp",
           "installOrigin": "https://www.openwebdevice.com"
         }
     },
     "operators": [
       {
         "id": "movistar-co",
         "mcc-mnc": [
           "214-01",
           "214-02"
         ],
         "apps": [
           {
             "id": "store",
             "screen": 0,
             "location": 2
           }
         ]
       },
       {
         "id": "movistar-mx",
         "mcc-mnc": [
           "215-23"
         ],
         "apps": [
           {
             "id": "store",
             "screen": 0,
             "location": 2
           },
           {
             "id": "puzzle"
           }
         ]
       }
     ]
   }
  • Le premier objet de la structure JSON est apps, et permet de définir les applications tierces à copier lors de la construction. Dans cet exemple, on a deux applications : une application hébergée (store) et une application empaquetée (puzzle). Les applications empaquetées auront besoin de manifestURL, les applications hébergées auront, en plus, besoin de installOrigin pour pouvoir être téléchargées.
  • Le deuxième objet, appelé operators, permet de définir la configuration en fonction du code MCC/MNC. L'objet contient un tableau d'objets pour chaque paire MCC/MNC. Ces objets définissent l'identifiant id, une liste MCC/MNC correspondant à la configuration ainsi qu'une liste d'objets apps qui définit les applications à installer à l'exécution pour chaque cas.
  • Chaque objet apps possède une propriété id obligatoire ainsi que deux propriétés optionnelles qui permettront de placer l'application visuellement :
    • La propriété screen définit le numéro de l'écran sur lequel placer l'application.
    • La propriété location définit la position de l'application sur cet écran.

Les autres personnalisations utilisant un fichier de variante

Le fichier variant.json (le même que précedemment) permet également de configurer des ressources spécifiques grâce à des attributs relatifs à chaque opérateurs. Un opérateur pourra avoir les réglages suivants :

   { 
     "apps": {
       ...
     },
     "operators": [
       {
         "id": "movistar-co",
           "mcc-mnc": [
             "214-01",
             "214-02"
           ],
         "apps": [
           {
             "id": "store",
             "screen": 0,
             "location": 2
           }
         ],
         "support_contacts": "resources/support_contacts_movistar.json",
         "default_contacts": "resources/contacts_movistar.json",
         "ringtone": {
           "path": "resources/Movistar_Mid_ABR_128kbps.ogg",
           "name": "Tono Movistar"
         },
         "wallpaper": "resources/customize.jpg",
         "keyboard": "resources/keyboard_movistar.json",
         "network_type": "resources/network_type_movistar.json",
         "known_networks": "resources/known_networks_movistar.json",
         "data_ftu": true,
         "sms": "resources/sms_movistar.json",
         "topsites": "resources/topsites_movistar.json",
         "bookmarks": "resources/bookmarks_movistar.json",
         "data_roaming": true,
         "power": {
           "poweron": {
             "video": "app://operatorresources/resources/power/latam_power_on.mp4"
           },
           "poweroff": {
             "video": "resources/latam_power_off.mp4"
           }
         },
         "nfc": true
       }        
       ...
     ]
   }

Les différents réglages présentés dans le fichier sont détaillés ci-après :

Contacts d'assistance

Nécessite Firefox OS 1.2

La propriété support_contacts correspond à un chemin vers un fichier qui contiendra les contacts affichés sur l'écran d'aide (Paramètres > Aide). Cela permet d'avoir les mêmes fonctionnalités que support.json. Le format du fichier attendu à l'emplacement indiqué est le suivant :

   {
     "onlinesupport": {
       "title": "Assistance Mozilla",
       "href": "https://test.mozilla.org/support"
     },
     "callsupport1": {
       "title": "Assistance téléphonique (1)",
       "href": "tel:14155550001"
     },
     "callsupport2": {
       "title": "Assistance téléphonique (2)",
       "href": "tel:14155550002"
     }
   }

Contacts par défaut

Nécessite Firefox OS 1.2

La propriété default_contacts correspond au chemin vers un fichier qui définit les contacts qui seront préchargés dans l'application Contacts en fonction des codes MCC/MNC. Les noms des différentes sections du fichier seront les codes MCC/MNC, chaque section contient un ensemble de contacts (au même format que pour contacts.json). Par exemple :

    {
        "123123":
        [
            {name: ["Jean Biche"]},
            // etc
        ],
    }

Sonnerie

Nécessite Firefox OS 1.3

La propriété ringtone permet de définir la sonnerie par défaut. Cet objet contient deux propriétés obligatoires :

  • path : Le chemin vers le fichier audio à utiliser pour la sonnerie.
  • name : Le nom à afficher pour cette sonnerie dans l'écran des réglages.

Fond d'écran

Nécessite Firefox OS 1.2

La propriété wallpaper contient le chemin vers le fichier image (PNG) qui sera utilisé comme fond d'écran par défaut.

Paramètres clavier

Nécessite Firefox OS 1.4

La propriété keyboard contient le chemin vers un fichier qui contient les informations de configuration pour le clavier. Le format du fichier attendu est le suivant :

 {
   "keyboard.vibration": true,
   "keyboard.autocorrect": false,
   "keyboard.clicksound": true,
   "keyboard.wordsuggestion": false
 }

Indicateurs de réseau

Nécessite Firefox OS 1.4

La propriété network_type contient le chemin d'un fichier qui contient le texte à utiliser lorsqu'un type de réseau est utilisé par l'appareil. Ce texte apparaîtra dans l'application Réglages, la barre de statut et les réglages rapides.

La barre de statut et les occurences dans l'application Réglages utiliseront le texte contenu dans le fichier. Pour l'écran des réglages rapides, le fichier devra contenir une clé intitulée  data_sprite qui pointe vers un sprite CSS qui contient les icônes pour les différents types de réseaux supportés.

La propriété data_sprite doit correspondre à une URL qui pointe vers une application de l'appareil. Voici un exemple pour un tel fichier :

 {
  "lte": "4G",
  "ehrpd": "4G",
  "hspa+": "H+",
  "hsdpa": "H",
  "hsupa": "H",
  "hspa": "H",
  "evdo0": "E",
  "evdoa": "E",
  "evdob": "E",
  "1xrtt": "1x",
  "umts": "3G",
  "edge": "E",
  "is95a": "2G",
  "is95b": "2G",
  "gprs": "2G",
  "wcdma/gsm": "2G/3G GSM auto",
  "gsm": "2G GSM",
  "wcdma": "3G GSM",
  "wcdma/gsm-auto": "2G GSM Preferred",
  "cdma/evdo": "2G/3G CDMA auto",
  "cdma": "2G CDMA",
  "evdo": "3G CDMA",
  "wcdma/gsm/cdma/evdo": "2G-3G GSM/CDMA auto",
  "data_sprite": "app://operatorresources/resources/quick_settings/images/data-sprite-latam.png"
 }

SSID WiFi pré-paramétrés

Nécessite Firefox OS 2.0

La propriété known_networks contient un chemin vers un fichier qui liste différents réseaux WiFi. Voici un exemple de fichier :

 {
  "OPEN": {
    "ssid": "OPEN"
  },
  "WEP-WITHOUTKEY": {
    "ssid": "wifi-WEP-WITHOUTKEY",
    "keyType": "WEP"
  },
  "WEP_KEY": {
    "ssid": "WEP-KEYOK",
    "keyType": "WEP",
    "capabilities": "",
    "password": "constrasenya1"
  },
  "WEP_KEYOK_WPS": {
    "ssid": "WEP-KEYOK-WPS",
    "keyType": "WEP",
    "capabilities":"WPS",
    "password": "constrasenya1"
  },
  "wpa": {
    "ssid": "macaFirefoxHotspot",
    "keyType": "WPA-PSK"
  },
  "WPA-PSK_KEY": {
    "ssid": "WPA-PSK-KEYOK",
    "keyType": "WPA-PSK",
    "capabilities":"",
    "password": "constrasenya1"
  },
  "WPA-PSK_KEY_WPS": {
    "ssid": "WPA-PSK-KEYOK-WPS",
    "keyType": "WPA-PSK",
    "capabilities":"WPS",
    "password": "constrasenya1"
  },
  "WPA-EAP-PSK_WITHOUTEAP": {
    "ssid": "WPA-EAP-WITHOUTKEY",
    "keyType": "WPA-EAP"
  },
  "WPA-EAP_SIM": {
    "ssid": "WPA-EAP-SIM",
    "keyType": "WPA-EAP",
    "eap": "SIM",
    "password": "constrasenya1"
  },
  "WPA-EAP-KEYOK-WPS": {
    "ssid": "WPA-EAP-KEYOK-WPS",
    "keyType": "WPA-EAP",
    "eap": "PEAP",
    "capabilities": "WPS",
    "password": "constrasenya1",
    "identity": "HI\\usr"
  },
  "WPA-EAP-KEYOK-CAPOK-PHASE2-OK": {
    "ssid": "WPA-EAP-KEYOK-CAPOK-PHASE2",
    "keyType": "WPA-EAP",
    "eap": "PEAP",
    "capabilities":"WPS",
    "phase2": "PAP",
    "password": "constrasenya1",
    "identity": "HI\\usr"
  }
 }

Activation/Désactivation des données par défaut lors de l'expérience de première utilisation

Nécessite Firefox OS 2.0

L'attribut data_ftu définit si oui ou non les données sont activées pendant l'expérience de première utilisation (FTU pour First Time Use). Cette propriété est une valeur booléenne.

Nombre maximum de SMS à convertir en MMS

Nécessite Firefox OS 2.0

sms contient le chemin vers un fichier permettant de paramétrer les aspects relatifs aux SMS. Actuellement le seul attribut présent correspond au nombre de SMS pouvant être convertis en MMS. Par exemple :

 {
  "smsMaxConcat": 9
 }

Initialiser les sites les plus visités du navigateur

Nécessite Firefox OS 2.0

La propriété topsites contient le chemin vers un fichier qui liste les sites à faire apparaître. Un objet de ce tableau contient la propriété title (chaîne de caractères), uri (l'url) et iconPath. Voici un fichier d'exemple :

{
  "topsites": [
    {
      "title": "Movistar",
      "uri": "https://www.movistar.es",
      "iconPath": "resources/movistar.ico"
    }
  ]
}

Marque-pages

Nécessite Firefox OS 2.1

Note : Pour plus d'informations sur la personnalisation des marque-pages pour les versions antérieures de Firefox OS, voir le paragraphe Browser bookmarks and default search engines.

bookmarks contient le chemin d'un fichier listant les objets marque-pages. Un objet correspondant à un marque-page contient trois paramètres : title, pour le titre, uri, pour l'URL du site marqué et iconPath pour l'icône à afficher sur le téléphone. Par exemple :

{
  "bookmarks": [
    {
      "title": "Google",
      "uri": "https://www.google.es",
      "iconPath": "resources/google.ico"
    }
  ]
}

Activation/Désactivation de l'itinérance des données par défaut

Nécessite Firefox OS 2.0

L'attribut data_roaming permet de définir si oui ou non l'itinérance des données est activée par défaut. C'est un booléen (sa valeur est true ou false).

Animation à l'allumage/extinction

Nécessite Firefox OS 2.0

Les animations d'allumage/extinction sont configurées grâce à un objet qui sera la valeur de la propriété power. Cet objet possède deux propriétés : la première concerne l'animation à utiliser quand le téléphone est démarré (poweron), la seconde correspond à l'animation à utiliser lorsque le téléphone s'éteind. Chacune de ces propriétés contient une clé permettant d'identifier la ressource à utiliser. Cette clé correspond à la propriété video dont la valeur est le chemin vers la ressource à utiliser. Ce chemin peut être local, relativement au système de fichier à utiliser lors de la construction (par exemple : resource/unfichier.png) ou une URI vers un fichier contenu dans une application Gaia qui sera installée sur l'appareil (par exemple : app://nom.domaine/chemin/vers/video.mp4).

Voici un exemple d'objet power :

"power": {
  "poweron": {
    "video": "app://operatorresources/resources/power/latam_power_on.mp4"
  },
  "poweroff": {
    "video": "resources/Power_off_test.mp4"
  }
}

Activation/Désactivation du NFC par défaut

Nécessite Firefox OS 2.0

L'attribut nfc booléen définit si oui ou non le NFC (Near Field Communication ou Communication en champ proche) est activé par défaut.

Construire des applications web pré-empaquetées

Dans cet article, nous avons vu comment utiliser le fichier apps.list pour installer des applications intégrées à votre version. Ces applications doivent être construites selon un certain procédé puis ajoutées au répertoire gaia/external-apps.

Pour construire des applications web pré-empaquetées, vous devrez utiliser le script preload-app-toolkit qui permet de construire une application à partir d'une URL .webapp. Ce script peut également accepter les manifestes pour les applications web hébergées et les mini-manifestes pour les applications empaquetées.

Empaqueter une seule application

Déterminez l'URL .webapp correspondant à l'application que vous voulez empaqueter puis lancez la commande suivante :

python preload.py https://<url de l'application>

Cela génèrera un répertoire dont le nom sera celui de l'application web (par exemple accuweather).

Empaqueter plusieurs applications (traitement en lots)

Pour traiter plusieurs applications à la suite, vous pouvez créer un fichier list, contenant l'ensemble des noms des applications et des URL .webapp correspondantes et que vous souhaitez empaqueter. Le fichier ressemblera à celui-ci :

premiereAppli,https://www.premiereappli.com/manifest.webapp
deuxièmeAppli,https://www.deuxiemeappli.com/manifest.webapp

Ce fichier devra être sauvegardé sous le nom list et faire partie du même répertoire que le script preload.py. Vous pouvez ensuite lancer la commande suivante :

$ python preload.py

Le script preload.py analysera le fichier fourni et traitera l'ensemble des applications à la suite.

Le fichier metadata.json pour les applications pré-empaquetées

Chaque application web pré-empaquetée devrait contenir un fichier metadata.json  au sein de son répertoire racine. Le Marketplace Firefox a besoin de ce fichier metadata.json pour gérer les mises à jour automatiques. Ce fichier est généré automatiquement par le script preload.py.

Pour une application web hébergée, les propriétés du fichier metadata.json sont :

  • origin : Le nom de dommaine pour l'URL de l'application web.
  • manifestURL : L'emplacement du manifeste de l'application web pour l'application hébergée
  • installOrigin(hosted) : L'emplacement à partir duquel l'application a été installée. Pour les adaptations/personnalisations, cette propriété devrait toujours valoir : https://marketplace.firefox.com.
  • etag : La propriété etag du manifeste de l'application est utilisé pour vérifier les mises à jour. La valeur de la propriété etag est obtenue grâce à l'entête parse html lors du téléchargement du fichier .webapp depuis le serveur.
  • external : Champ requis pour Firefox OS 2.1 et ultérieur. Cette propriété vaut true pour les applications pré-empaquetées et false pour les applications non tierces. Cette valeur est utilisée pour déterminer si certains ajustements sont nécessaires pour l'ordre des fichiers dans le fichier application.zip (les ajustement auront lieu lorsque la propriété sera true).

Pour une application empaquetée, les propriétés de metadata.json seront :

  • manifestURL : L'emplacement du mini-manifeste. Pour les applications personnalisées, manifestURL proviendra toujours de marketplace.firefox.com.
  • installOrigin(hosted): L'emplacement à partir duquel l'application a été installée pour la personnalisation. Pour les personnalisations, cette propriété devrait toujours valoir : https://marketplace.firefox.com.
  • etag : Cette propriété est utilisée pour les mises à jour. La valeur etag est obtenu à partir de l'en-tête parse html lors de du téléchargement du fichier .webapp depuis le serveur.
  • external : Ce champ est requis pour les versions de Firefox OS 2.1 et ultérieures. Cette valeur vaudra true pour les applications pré-empaquetées et false pour les applications non-tierces. Cette valeur est utilisée pour déterminer si certains ajustements sont nécessaires pour l'ordre des fichiers dans le fichier application.zip (les ajustement auront lieu lorsque la propriété sera true).
  • packageEtag : Cette propriété correspond à etag du paquet de l'application. Elle est obtenue grâce l'en-tête parse html lors du téléchargement du paquet via le serveur, une fois qu'une mise à jour a été détectée.

Mises à jour automatique des applications empaquetées : le format update.webapp

Les applications empaquetées possèdent un fichier update.webapp utilisé pour les mises à jour automatiques. Le format de ce fichier est semblable à celui de manifest.webapp, mais possède certains attributs supplémentaires :

  • package_path est le chemin vers le fichier du paquet (zip)
  • size est la taille du paquet en octets.
  {
    "name": "Game Pack",
    "icons": {
      "60": "/icon-60.png", 
      "128": "/icon-128.png"
    },
    "version": "1.1.2",
    "package_path": "/application.zip",
    "developer": {
      "url": "https://abc.com", 
      "name": "abc Inc."
    },
    "release_notes": "2nd release",
    "locales": {
      "es": {
        "launch_path": "/index-es.html", 
        "description": "show me customization."
      }
    },
    "size": 5460141
  }

Application pré-empaquetée au format AppCache

Si le fichier manifest.webapp possède un attribut appcache_path inclus, le script preload.py ira chercher le fichier AppCache utilisé et ira « pré-chercher » (prefetch) les ressources décrites dans le fichier AppCache. Les applications pré-empaquetée AppCache sont légèrement différentes et Gecko les reconnaîtra dans un format différent. Cela est géré par le script preload.py.

La structure des fichiers traduits sera la suivante :

    <app name>
       ├── manifest.webapp
       ├── metadata.json
       └── cache
             ├── manifest.appcache
             └── <resources>

Note : Si le fichier AppCache est nommé différemment dans appcache_path, il devra être renommé en manifest.appcache puis enregistré dans le répertoire cache.

FAQ

La liste qui suit regroupe les réponse aux questions fréquemment posées sur la personnalisation de Gaia :

Qu'est-ce qui peut être personnalisé ?

  • La marque
    • Les animations d'allumage et d'extinction
    • Le nom du réseau dans l'écran de verrouillage et la barre utilitaire
    • Les logos affichés lors de la première utilisation
  • La localisation
    • Les locales installées (shared/locales)
    • La locale par défaut (GAIA_DEFAULT_LOCALE)
    • Les agencements de clavier par défaut (plusieurs claviers peuvent être activés sans être nécessairement liés à la locale)
  • Les applications
    • Disposer d'applications tierces préinstallées
    • Placer des applications sur la grille de l'écran d'accueil
    • Licensing
    • La configuration des paiements dans les applications pour le fournisseur
  • Les réglages
    • La luminosité par défaut de l'écran
    • Information sur l'appareil : le nom ou numéro du modèle
    • Information sur l'appareil : contenu ou lien sur les termes légaux
    • Aide : lien vers une assistance en ligne
    • Aide : lien vers une assistance téléphonique
    • Aide : lien vers un guide utilisateur
    • APN
    • Limitation de la taille des MMS
    • Mode de réception pour les MMS
  • Les médias pré-chargés
    • Fond d'écran
    • Musique
    • Vidéos
    • Gallerie d'images
  • Les sons
    • Démarrage et extinction
    • Sonnerie d'appel
    • Sonnerie de message
  • Everything.me
    • Activer ou désactiver la fonctionnalité
    • Fournir un ensemble d'applications et/ou de catégories par défaut
  • Le navigateur
    • Marque-pages par défaut
    • Moteur de recherche par défaut

Comment définir une disposition des applications personnalisée ?

Cette disposition est définie actuellement dans gaia/apps/homescreen/js/init.json. customize.py génèrera la construction au bon format.

Est-il possible de définir si une application peut être retirée de l'écran d'accueil avec la configuration ?

Non. Les applications de /system/b2g ne peuvent pas être retirées, celles contenues dans /data peuvent être retirées. Les applications préchargées provenant de /system, elles doivent être déplacées sous /data si on veut les retirer.

Comment ajouter une application empaquetée préchargée ou une application hébergée à la construction ?

Ces applications doivent être ajoutées à gaia/external-apps. customize.py permetttra de gérer les URL pour les applications empaquetées et hébergées puis téléchargera les fichiers à l'emplacement adéquat puis créera metadata.json. Ce fichier servira lors de la construction.

Les méta-données permettront de différencier les applications empaquetées des applications hébergées.

Voir Building Prebundled web apps pour plus de détails.

Comment préparer une application hébergée préchargée pour qu'elle fonctionne hors ligne ?

Pour cela, il faut fournir les fichiers à fournir en cache dans le répertoire external-apps/MON_APPLICATION/cache, avec le manifeste AppCache.

Voir Building Prebundled web apps pour plus de détails.

Quelles adaptations peuvent être effectuées pour le Marketplace ?

  • Côté appareil
    • Pour les paiements, la seule personnalisation possible est l'ajout de fournisseurs de paiements sur une liste blanche. Plusieurs réglages sont disponibles et sont documentés sur la page Web Payments.
    • Par exemple, les téléphones Mozilla B2G seront livrés avec une certaine implémentation pour les fournisseurs de paiement et une liste blanche accessible au Marketplace et aux applications tierces via  navigator.mozPay pour les paiements au sein des applications. Plus d'informations sur les fournisseurs de paiement sont disponibles sur cette page.
    • Tout opérateur peut implémenter son propre processeur de paiement et gérer sa liste blanche. En revanche et à l'heure actuelle, le Marketplace Firefox est le seul configuré pour permettre les achats via le fournisseur de paiement de Mozilla.
  • Côté serveur
    • Le distributeur de l'application fixe un prix pour le produit et le système de paiement de Mozilla détermine la devise à utiliser en fonction du réseau de l'utilisateur. Aucun des aspects concernant les devises, les taxes régionales ou la localisation ne peuvent être gérées sur l'appareil (pour le moment).
    • Une catégorie spécifique peut être définie pour l'opérateur avec un logo et un nom sur le Marketplace Firefox.
    • Diffuser des applications / promotions sur le Marketplace Firefox, définies par l'opérateur.

D'autres problématiques sont à gérer selon les régions ou les opérateurs. Voir la page Ajouter des régions ou des opérateurs pour plus de détails.

Comment enregistrer les modifications apportées ?

Il suffit de sauvegarder uniquement les fichiers modifiés dans les différents emplacements. À l'heure actuelle, plusieurs répertoires sont utilisés au sein du système de fichiers. Pour la version 2 de B2G, ces fichiers pourront être amenés à être stockés dans un seul emplacement (de façon similaire aux répertoires des différentes marques pour Gecko).

Comment construire le produit avec une configuration spécifique ?

Copiez les fichiers modifiés dans une branche de Gaia puis lancez la construction. Pour cela, vous pouvez utiliser customize.py qui, via une interface utilisateur, vous aidera à activer ou non les différentes options, à créer les fichiers adéquats aux bons emplacements puis à construire le profil depuis Gaia.

Comment personnaliser l'animation d'allumage/extinction ?

  • Cette animation utilise le format Android bootanimation.zip/desc.txt.
  • Cela permet de créer une animation composées de plusieurs séquences pour lesquelles il est possible de spécifier la taille, le framerate, le nombre de fois qu'une séquence est répétée.
  • Une transition PNG animée fait la liaison entre la séquence de bootanimation.zip et l'écran de verrouillage, effectuée par Gaia.
  • La taille de l'animation par défaut de l'animation est 8.2Mo (looping) + 3.6Mo (frame 18 transition) soit 11.8Mo au total.
  • À l'heure actuelle, l'animation d'extinction est une animation CSS basée sur les spécifications du bug 809342.

Étiquettes et contributeurs liés au document

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