開発者や端末ベンダとして、様々な理由から Firefox OS 端末の初回実行時に出てくるアプリをカスタマイズしたくなるでしょう。この記事ではそうするための異なる仕組みを説明します。
Gaia内のアプリの場所
Firefox OS で動かされるアプリは、Gaiaソースツリー内の2つの場所に含まれます:
- gaia/apps/: ここではシステムのデフォルトアプリ、例えばカレンダー、eメール、設定、などが見られます。
- gaia/dev-apps: ここではその他のアプリ、例えばカスタマイズ処理で入るものが見られます。
あなたのGaia/B2Gビルドで省略/追加したい場合、下記に述べる色々な方法でできます。
ブルートフォースでカスタマイズする方法
"ブルートフォース"手法は、単に今回のビルドに入れたくないアプリを、ビルド前に削除します。
設定リストを編集する
より洗練された方法は、apps-*.list
ファイル (gaia/build/config/ の中の色々な端末ディレクトリ、例えば phone/
や tablet/
の中に見られる) を編集して、ビルド時に含めたいアプリへのパスを入れます。例えば、gaia/build/config/phone/apps-production.list は下記のようです:
apps/bluetooth apps/bookmark apps/browser apps/calendar apps/callscreen etc.
注意点として、ディレクトリ内の全アプリを指定できます、このように:
apps/*
ビルド時に利用できるアプリを決定するのに、どのapps-*.list
ファイルが使われるかを選ぶ仕組みは gaia/Makefile 内にあり、下記のようです:
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
最初は、the GAIA_APP_TARGET
変数に engineering が
、the GAIA_DEVICE_TYPE
に phone が
セットされます、なのでGaiaをソースからビルドするのにデフォルトでは gaia/config/phone/app-engineering.list (この中に全てのテスト、デモなどがあります)が使われます。
他のアプリリストを使用するよう指定するには、make
コマンド実行時に別のオプションを指定します。例えばgaia/build/config/phone/apps-production.listを使ってビルドするには、これを使います。
PRODUCTION=1 make
DEMO=1
を指定してビルドする場合、apps-demo.listが使われます。DOGFOOD=1
を指定してビルドする場合、apps-dogfood.listが使われます。
gaia/Makefile 内の GAIA_APP_CONFIG
を編集して、完全に指定を上書きしたり、自分自身の apps-*.list
ファイルを提供したりできます。
gaia/Android.mk には下記の行が含まれます:
ifneq ($(filter user userdebug, $(TARGET_BUILD_VARIANT)),) GAIA_MAKE_FLAGS += PRODUCTION=1 B2G_SYSTEM_APPS := 1 endif
ビルド時に、VARIANT=user
や VARIANT=userdebug
がセットされた場合 (これらはTARGET_BUILD_VARIANT
変数の反映まで巻き戻ります)、 Gaiaビルド時に PRODUCTION=1
が自動的にセットされます。
記: 他にどんな make オプションが使えるのかはmake オプションのリファレンスで見つけられます。
Marketのカスタマイズを使う
3つ目の、最も洗練された (だが最も複雑な) 方法はカスタマイズの使用です。これによってビルド時に個別のディレクトリ内でカスタマイズ指示をする事が、コアGaiaリポジトリを変更することなく可能になります。別個のディレクトリ内に独自のカスタマイズを入れたり、ソース由来の既存ディレクトリを使用したりできます。
例えば、GAIA_DISTRIBUTION_DIR
変数により、場所の指定をカスタマイズするサンプルは、このようになります:
GAIA_DISTRIBUTION_DIR=<DISTRIBUTION_PATH> make production
配布の仕組みをもっとカスタマイズする例は、https://github.com/mozilla-b2g/gaia/tree/master/customizationを参照して下さい。
カスタマイズは完全に別の話題です。これをもっと知るには、Market Customizations guideを読んで下さい。
記: あなたのGaiaビルドの一部に特別な外部アプリを入れたい場合、それらを特定の方法でビルドして、次に gaia/dev-apps/
フォルダ内に置く必要があります。Building Prebundled web appsを読んで詳細を見つけて下さい。
重要: 端末ベンダーが配布用の B2G/Gaia ビルドを作成する場合、Firefox Marketplaceアプリを電話・タブレット・その他に含める許可を得る前に、一定の条件を満たす必要があります。詳細は Mozilla まで連絡して下さい。