Cet article peut vous aider à installer des builds communautaires de Firefox OS sur votre téléphone. Les mises à jour "firmware over the air" (FOTA) de l'OS seront activées sur ces versions.
Prérequis
Afin de compiler et installer cette build, vous devez avoir une machine sur laquelle compiler et une machine hôte. Il peut s'agir d'une seule et même machine.
Sur la machine de compilation, il est nécessaire d'avoir tous les logiciels requis pour construire une version destinée au téléphone cible (Prérequis pour construire Firefox OS apporte davantage d'informations).
Tout d'abord, vous devez vérifier l'appareil :
- Il doit s'agir d'un appareil rooté.
- Clés de recovery : nous devons vérifier les clés utilisées au cours du recovery ; celles-ci correspondent aux clés AOSP. Elles sont situées dans : /res/keys/. Ce devrait être les mêmes.
- Téléphone déjà doté d'un recovery (librecovery)
Il est possible de construire les versions nocturne, aurora et bêta ; dans ce but, créez simplement 3 dossiers différents : nightly aurora beta (si vous ne souhaitez construire qu'une branche, vous pouvez vous contenter d'un seul répertoire). Nightly est mise à jour chaque nuit, aurora correspond à la dernière version stable et beta à la version qui précède aurora.
En fonction de vos besoins, vous pouvez décider de construire toutes les branches ou seulement une ou deux. Pour chaque branche dont vous avez besoin, suivez les étapes décrites sur cette page. Lorsque vous aurez atteint le paragraphe "Compilation", les instructions seront de nouveau spécifiques selon les branches.
Préparez votre première compilation B2G avec la BRANCHE correcte, comme si vous étiez en train de créer une version pour le téléphone cible. Suivez les instructions de cette page (Se préparer pour la première construction de B2G) jusqu'à la fin de la section "Configurer B2G pour votre appareil".
Note : si vous avez un manifeste (xml) spécifique pour config.sh
, ouvrez ce fichier et remplacez "master" par le nom de la branche que vous voulez dans les "choses spécifiques de B2G".
À présent, votre répertoire de travail devrait être [BRANCH]/B2G/
NE PAS COMPILER POUR L'INSTANT !
Il y a encore beaucoup de modifications à faire.
Signatures (seulement pour les appareils Firefox OS par défaut) :
Toutes les ROMs des appareils Firefox OS doivent être signées ; par contre, pour les appareils Android, ce n'est pas obligatoire.
Nous ne pouvons fournir que gecko et gaia ; la mise à jour sera signée pour éviter son installation sur un mauvais téléphone.
Pour cela, vous aurez besoin de la signature de la build racine ; il y a juste à récupérer build.prop depuis le téléphone :
adb pull /system/build.prop
Maintenant, cherchez dans ce fichier la valeur de ro.build.fingerprint
; il s'agit de l'empreinte.
Localisation :
Il est possible de construire une version contenant toutes les locales en ajoutant ce script (langs.sh
) dans gaia/locales
ou de choisir de ne cloner que certaines langues. Dans ce dernier cas, modifiez gaia/locales/languages_all.json
pour que seules les langues clonées ne soient employées #TOVERIF
=> Compilation multilocale
Si vous compilez pour les branches aurora ou beta, remplacez git checkoutmozillaorg/master
par git checkout v2.1
pour aurora et par git checkout v2.0
pour beta dans langs.sh
N'oubliez pas de mettre à jour vos dépôts avant de lancer une nouvelle compilation.
langs.sh :
#!/bin/sh set -e GIT_ROOT="https://git.mozilla.org/releases/l10n/" GIT_PROJ="/gaia.git" LANGS=$(json_pp < languages_all.json | grep ':' | cut -d':' -f1 | cut -d'"' -f2) for lang in ${LANGS}; do echo "Syncing $lang" if [ ! -d ${lang}/.git/ ]; then echo "No repo for ${lang}, cloning new one" git clone ${GIT_ROOT}${lang}${GIT_PROJ} $lang || true else echo "Updating close for ${lang}" cd ${lang} && (git fetch origin && git checkout origin/master) || true && cd .. fi; done;
Configuration de la compilation
Il est aussi nécessaire d'avoir un fichier .userconfig
pour votre construction :
Créez à la racine de [BRANCH]/B2G/
un fichier nommé .userconfig
et collez-y ces lignes :
export SYSTEM_PARTITION=/dev/block/platform/msm_sdcc.1/by-name/system # to specify the system partition, find info with adb shell cat /proc/mounts export DATA_PARTITION=/dev/block/platform/msm_sdcc.1/by-name/userdata # to specify the data partition, find info with adb shell cat /proc/mounts export VARIANT=userdebug #to include gaia export PRODUCTION=1 #to have a user build export B2G_UPDATER=1 export B2G_UPDATE_CHANNEL=aurora #to modify [BRANCH] export ENABLE_DEFAULT_BOOTANIMATION=true #to have B2G boot animation export GAIA_DEV_PIXELS_PER_PX=1.5 export LOCALE_BASEDIR=locales/ #Languages folder export LOCALES_FILE=locales/languages_all.json #all languages for the build export GAIA_KEYBOARD_LAYOUTS="$((find gaia/apps/keyboard/js/layouts/*.js | sed -e 's|gaia/apps/keyboard/js/layouts/||g' -e 's/\.js$//g') | tr -s '\r\n' ',' | sed -e 's/,$//g')" #All keyboard, you can change this with keyboard you want export GAIA_DEFAULT_LOCALE=fr #languages by default, fr (french) for example export B2G_FOTA_DIRS="system/fonts system/b2g" #fira font bug export FOTA_FINGERPRINTS="[your fingerprint]"
Les variables suivantes devront être éditées :
SYSTEM_PARTITION
(utilisezadb shell cat /proc/mounts
pour connaître la partition)DATA_PARTITION
(ici aussi, il est possible d'utiliseradb shell cat /proc/mounts
)B2G_UPDATE_CHANNEL
dépend de votre canal (aurora, beta, nightly)GAIA_DEFAULT_LOCALE
en fonction de la locale souhaitée- (facultatif mais peut-être utile :
GAIA_KEYBOARD_LAYOUTS
(voir le commentaire)) FOTA_FINGERPRINTS
: ajoutez la valeur de ro.build.fingerprint-
GAIA_DEV_PIXELS_PER_PX: pour connaître les réglages corrects de votre appareil, veuillez vous rendre sur ce site web avec cet appareil.
Le texte qui suit le symbole dièse (#
) peut être supprimé (y compris le symbole lui-même). Ce sont des commentaires et leur seule raison d'être est d'expliquer à quoi sert la ligne.
Après cela, il faut définir les informations à propos de l'url de mise à jour :
cd gecko/ git checkout -b [VERSION NUMBER ou master pour nightly]-local --track mozillaorg/[VERSION NUMBER ou master pour nightly] éditez app.update.url dans b2g/app/b2g.js vous pouvez conserver %target% etc.. ou sinon vous pouvez juste avoir quelque chose du genre pref("app.update.url", "https://[DOMAIN]/[PHONE NAME]/[BRANCH]/update.xml");
Ensuite, pour appliquer vos modifications, effectuez un commit :
git commit -a Répétez toutes ces étapes avec les différentes branches pour avoir une version beta/aurora/nightly.
La configuration de la compilation est à présent terminée. Toutes les étapes qui suivent devront être répétées à chaque compilation dans chacun des dossiers de branche.
Compilation
La mise en place de la construction d'une (nouvelle) mise à jour est :
cd [BRANCH]/B2G/ #pour se placer dans le bon dossier git pull # pour actualiser le code du dépôt ./repo sync #pour actualiser le code du dépôt pour android et B2G ne pas utiliser l'option -d, le faire supprimerait vos modifications cd gaia/locales/ && ./langs.sh && cd ../../ #pour actualiser les langues ./build.sh # pour construire b2g ./build.sh gecko-update-fota # pour construire b2g et gaia dans des fichiers .zip et .mar BUILDID=$(grep 'BuildID=' objdir-gecko/dist/bin/application.ini | cut -d'=' -f2) # définit la variable buildid VERSION=$(grep '\nVersion=' objdir-gecko/dist/bin/application.ini | cut -d'=' -f2) # définit la variable de la version de gecko python tools/update-tools/build-update-xml.py -c out/target/product/[PHONE NAME]/fota-[PHONE NAME]-update.mar -O -u https://[DOMAIN]/[PHONE NAME]/[BRANCH]/fota-[PHONE NAME]-update.mar -i $BUILDID -v $VERSION -V $VERSION | tee /var/www/[BRANCH]/update.xml # Modifiez cette commande avec vos informations : chemin correct vers .mar, chemin correct vers .mar dans l'url de update.xml, la commande produira en sortie un fichier update.xml; ce dernier ira sur votre machine hôte, il correspond au fichier appelé par le système pour chercher de nouvelles mises à jour. cp out/target/product/[PHONE NAME]/fota-[PHONE NAME]-update.mar /var/www/[BRANCH]/fota-[PHONE NAME]-update.mar #pour déplacer le .mar sur le serveur cp out/target/product/[PHONE NAME]/fota/partial/update.zip /var/www/[BRANCH]/update.zip #pour déplacer le .zip sur le serveur pushd /var/www/[BRANCH]/ # pour aller dans les fichiers du serveur sha1sum $(ls) | tee sha1.checksum #pour avoir un fichier de signature popd
Si vous souhaitez un bot IRC, vous pouvez utiliser ii ou buildbot. J'ai réalisé un script pour ça ICI (pour plus d'informations sur ce qu'est buildbot, voir https://buildbot.net/ )
Flashez le téléphone et essayez votre build :
Pour installer la version sur un téléphone, suivez simplement ces étapes :
adb reboot recovery
Dans le recovery, descendez avec le bouton de volume bas pour sélectionner la ligne "apply update from adb", puis appuyez sur le bouton power :
adb sideload out/target/product/[PHONE NAME]/fota/partial/update.zip
Builds existantes par communauté
- ZTE OPEN C : frenchmoz
- ZTE OPEN & Alcatel One Touch Fire : communauté hispanique