MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

ビルド時のアプリをカスタマイズする

開発者や端末ベンダとして、様々な理由から 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 まで連絡して下さい。

 

ドキュメントのタグと貢献者

 このページの貢献者: chrisdavidmills, hamasaki, T.Ukegawa, Uemmra3
 最終更新者: chrisdavidmills,