Entwickler und Geräte-Hersteller wollen die App-Pakete oftmals beim Erzeuen eines Builds aus verschiedenen Gründen anpassen. Dieser Artikel erklärt die unterschiedlichen Mechanismen dafür.
Pfade für App-Dateien in Gaia
Alle Firefox OS Apps befinden sich in einem der folgenden Pfade im Gaia Verzeichnisbaum:
- gaia/apps/: Hier liegen die Standard-Apps von Firefox OS wie Kalender, E-Mail, Einstellungen etc.
- gaia/dev-apps: Hier sind die anderen Apps zu finden, z.B. die kundenspezifischen Apps.
Falls Du in Deinem Gaia/B2G Build Apps herauslassen oder hinzufügen möchtest, dann kannst Du das auf verschiedene Weise tun. Details dazu werden nachfolgend erläutert.
Die harte Methode
Bei der harten Methode werden einfach die Apps gelöscht, die man nicht in den Build mit einbeziehen will.
Anpassen der Konfigurations-Dateien
Die etwas elegantere Methode ist das Anpassen der apps-*.list
Dateien (zu finden in den verschiedenen gerätespezifischen Verzeichnissen, die in gaia/build/config/ aufgelistet sind, z.B. phone/
und tablet/
), um die für den Build gewünschten Apps zu konfigurieren. Zum Beispiel könnte die Konfigurations-Datei gaia/build/config/phone/apps-production.list wie folgt aussehen:
apps/bluetooth apps/bookmark apps/browser apps/calendar apps/callscreen etc.
Du kannst hier auch alle Apps eines Verzeichnisses einbinden, und zwar so:
apps/*
Welche apps-*.list
Dateien wiederum für den Build verwendet werden um die verfügbaren Apps zu ermitteln ist in der Datei gaia/Makefile hinterlegt, die etwa so aussieht:
GAIA_DEVICE_TYPE?=phone ... GAIA_APP_TARGET?=engineering ... ifeq ($(MAKECMDGOALS), demo) GAIA_DOMAIN=thisdomaindoesnotexist.org GAIA_APP_TARGET=demo else ifeq ($(MAKECMDGOALS), dogfood) DOGFOOD=1 else ifeq ($(MAKECMDGOALS), production) PRODUCTION=1 endif ... ifeq ($(PRODUCTION), 1) GAIA_OPTIMIZE=1 GAIA_APP_TARGET=production endif ifeq ($(DOGFOOD), 1) GAIA_APP_TARGET=dogfood endif ... ifndef GAIA_APP_CONFIG GAIA_APP_CONFIG=build$(SEP)config$(SEP)apps-$(GAIA_APP_TARGET).list endif
Standardmaßig ist die Variable GAIA_APP_TARGET
auf engineering
gesetzt und die Variable GAIA_DEVICE_TYPE
auf phone
, so dass beim Build von Gaia per Default die Datei gaia/config/phone/app-engineering.list verwendet wird (die alle Apps enthält, u.a. auch Test- und Demo-Apps).
Um andere apps-*.list
Dateien zu verwenden musst Du entsprechende Parameter beim Aufruf des make
Kommandos mitgeben. Um z.B. den Build mit gaia/build/config/phone/apps-production.list zu starten müsstest Du das hier verwenden:
PRODUCTION=1 make
Wenn Du den Build mit DEMO=1
startest, dann wird die Datei apps-demo.list verwendet. Und wenn Du den Build mit DOGFOOD=1
startest, dann wird die Datei apps-dogfood.list verwendet.
Du kannst dieses Verhalten komplett übersteuern, indem Du die Variable GAIA_APP_CONFIG
in der Datei gaia/Makefile änderst und dort eine eigene apps-*.list
Datei einträgst.
gaia/Android.mk enthält diese Zeilen:
ifneq ($(filter user userdebug, $(TARGET_BUILD_VARIANT)),) GAIA_MAKE_FLAGS += PRODUCTION=1 B2G_SYSTEM_APPS := 1 endif
Wenn Du den Build mit VARIANT=user
oder VARIANT=userdebug
startest (dieses Übersteuern spiegelt sich auch in der Variable TARGET_BUILD_VARIANT
wieder), dann wird PRODUCTION=1
automatisch gesetzt.
Hinweis: Weitere Optionen für make findest Du in der make options reference.
Verwenden eigener Distributionen
Die dritte und eleganteste (allerdings auch komplexeste) Methode ist das Verwenden eigener Distributionen. Dies ermöglicht das Einbinden eigener Konfigurationen und Pakete ohne das Gaia Paket selbst zu ändern. Du kannst für Deine angepassten Konfigurationen und Pakete eigene Verzeichnisse oder die mit Gaia ausgelieferten Verzeichnisse verwenden.
Du kannst Deine Distribution durch Setzen der Umgebungsvariable GAIA_DISTRIBUTION_DIR
in den Build einbinden, zum Beispiel so:
GAIA_DISTRIBUTION_DIR=<DISTRIBUTION_PATH> make production
Mehr Informationen zum Erstellen individueller Distributionen findest Du auf https://github.com/mozilla-b2g/gaia/tree/master/customization.
Dieses komplexe Thema hat eine komplett eigene Dokumentation. Mehr zum Thema erfährst Du unter Market Customizations guide.
Hinweis: Wenn Du Apps von Drittanbietern in Deinen Gaia Build einbinden willst, dann müssen diese auf spezielle Art erzeugt werden bevor sie im Verzeichnis gaia/dev-apps/
abgelegt werden. Nähere Informationen findest Du auf Building Prebundled web apps.
Wichtig: Wenn Sie als Geräte-Hersteller einen angepassten B2G/Gaia Build für Ihre Distribution verwenden möchten, dann müssen Sie bestimmte Voraussetzungen erfüllen bevor Sie Firefox OS Marketplace Apps auf Ihrem Smartphone, Tablet etc. anbieten dürfen. Bitte kontaktieren Sie in einem solchen Fall Mozilla für nähere Informationen.