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.

B2G をビルド可能にするには、リポジトリの複製とビルドツリーの構成(configure)が必要です。この記事ではその方法を説明します。

インターネットの接続によっては、構成作業では、B2G OSのビルドに必要となるファイルをダウンロードするのに何時間もかかる事があります。待つことは楽しくないので、このページを通して読んで構成スクリプトを開始した後に、B2G OS simulatorをセットアップして試してみることや、アプリ開発者向け文書(アプリの設計、作成が含まれています)を読んで慣れたり、以降のビルド手順に慣れておくことを検討してください。

OS X を使って Flame 用の B2G OS をビルドする場合、OS Xで flame 用の B2G OS をビルドする のMDNページを見て下さい。

B2G リポジトリの複製

B2G OSをビルドするのにいくつか便利なツールがあり、全てが1つのリポジトリに入っています。最初のステップはgitでこれらのツールを作業ディレクトリにダウンロードする事です:

git clone git://github.com/mozilla-b2g/B2G.git && cd B2G
  • Checkout the pine branch of Gecko
$ hg clone https://hg.mozilla.org/projects/pine/ pine

If you run in to a UnicodeEncodeError: ascii codec error here try to set your git user with

 vim ~/.gitconfig

(type "i" for inserting) and this lines:

$ [user]
$        name = yourname
$        email = [email protected]
$ [color]
$        ui = auto

hit the "esc" button and quit with ":wq"

  • Configure B2G for the device :
$ ./config.sh <device>

ie device = flame-kk or aries

  • Configure B2G to use the kanikani branch of Gaia
$ vim .repo/manifests/base.xml
<project name="gaia" path="gaia" remote="mozillaorg" revision="kanikani" />
$ cd gaia
$ git reset --hard mozillaorg/kanikani
$ cd ..
  • Configure B2G to use the pine branch of Gecko
$ vim .userconfig
export B2G_DIR=${B2G_DIR:-$(cd $(dirname $0); pwd)}
echo "B2G_DIR = ${B2G_DIR}"
export GECKO_PATH=${B2G_DIR}/pine
echo "GECKO_PATH = ${GECKO_PATH}"
  • Configure, build and flash B2G
  • plug in your device that has the android base or firefox os base build
$ ./build.sh
$ ./flash.sh

Notes:

  • If you get an error about a mismatched base build at the build step you don't have the required existing version of Android/B2G on your device. You'll need to flash the version of Android specified by the build script or get hold of a backup-aries folder.
Note: This is not the full list of build targets, see config.sh or refer to the Compatible Devices page.

If your build target isn't listed, you should stop right now and help port B2G OS!

端末に合わせて B2G を構成する

重要: Android 4.3以降 (Jelly Bean, KitKat, Lollipop)とそれをべースにしたプラットフォームが動作している端末のみが (今のFirefox OS端末では) サポート対象です。あなたのスマートフォンが本当にこれらのバージョンで動作しているか確認してください。そうでなければ、次のステップはおそらく失敗するでしょう。より詳しくは 互換性のある端末 ページを見てください。

エミュレータ用ビルドを構築する

もし実機でなくエミュレータをビルドするのであれば、ARM デバイスエミュレータを取得する “emulator*”、もしくは x86 エミュレータをビルドする “emulator-x86*″ のいずれかを指定できます。後者はより速いですが、実際のモバイル端末ほど正確には表示せず、よくサポートされていません。つまり x86エミュレータ を使うのは勧められません。

ARM のJellybeanエミュレータをビルドするには、下記コマンドを使用します :

./config.sh emulator-jb

エミュレータ用ビルドは64-bit Linuxで失敗がちなのに気をつけて下さい。

プロプライエタリ Blob

端末に B2G OS をインストールする時、 プロプライエタリBlobを一通り含める必要があるでしょう。これらは初回ビルド実行時に端末から抜き出されますが、将来参照できるようにフル・バックアップを取ることもお勧めします。いったん B2G OS がインストールされると、これらをリカバーする方法はありません!

開発者設定で、端末の リモートデバッグ が有効になっているのを確かめます。adb devices コマンドで端末が見えるのを確認すると、これ似たものが見えるでしょう:

$ adb devices
List of devices attached
ABCXXXXXXX       device

端末がリストにない場合、UDEV ルールを確認します。

Note: If you have permission issues, check that your screen is unlocked and that you have authorized access to your phone. You see a message on your device for that. If the issue persists used adb root and adb remount.

adb pull コマンドで、電話機のパーティションをバックアップします:

adb pull /system <backup target dir>/system

電話機によりますが、/data/vendor ディレクトリを取得しないといけない事もあります:

adb pull /data <backup target dir>/data
adb pull /vendor <backup target dir>/vendor

pull コマンドが "insufficient permission" メッセージと共に失敗する場合、次を試します:

  • カスタムROMのroot権限を与えられているかを確認します (例 CyanogenModでは、Settings > System > Developer Options > Root Access の値を Apps and ADBADB only に変えます)。
  • udev ルールを正しくセットアップしているか検証します (For Linux: configure the udev rule for your phone を見てください)。

次のステップへ

この時点で、B2G OSのビルドの準備ができているでしょう。

高度な構成オプション

システムバックアップを用いてビルドを構成する

もしあなたのスマートフォンが既に Android ではなく、B2G ツリーにバイナリ BLOB がないけど、賢明にも/system パーティションのバックアップを取っていたのであれば、こんな感じにバックアップを元にビルドを実行することができます :

ANDROIDFS_DIR=<systemディレクトリの親ディレクトリの絶対パス> ./config.sh <target>

ビルドシステムはデフォルトで backup-<target>/system といった既存のバックアップフォルダを調べます。つまりファイルをこの場所に置けば、ディレクトリを指定する必要はありません。

カスタム Gecko を対象とするビルド

(マニフェストで指定された)デフォルト使用の Gecko とは異なるバージョンをベースにして、Boot to Gecko をビルドしたい、もしくはする必要がある場合があるかもしれません。それを可能にするには .userconfig ファイルを編集してください。例として、mozilla-central を対象にしてビルドしたい場合であれば :

GECKO_PATH=/path/to/mozilla-central
GECKO_OBJDIR=/path/to/mozilla-central/objdir-gonk

: Mac OS X でカスタム Gecko を対象とするビルドを行う場合、mozilla-central ディレクトリは、必ず、大文字と小文字を区別するファイルシステムに作成してください。

注意するのは、リポジトリをプルする前 (つまり上記のconfig.shの前) に行っても、後の時点のどちらでもよいです。複数ビルドを保持することもできます (デバッグオン/オフなど) 。その方法は複数の.userconfigファイル(異なるセッティングで--もちろん、それぞれ別のOBJDIRでないといけない) を用意して .userconfig をその時々のビルドしたいコンフィグへのシンボリックリンクに貼るようにします。

詳細情報は、Gecko ソースツリーを変更するを読んでください。

ブランチをビルドする

デフォルトブランチ以外をビルドしたい場合 (記: デフォルトブランチは"master"でないかもしれません!)、config.shの頭にブランチ名をつけるだけです、このように:

BRANCH=ブランチ名 ./config.sh <端末>

ブランチ名はとても論理的で、大まかに製品/バージョンに従っており、v1-train, v1.0.0, v1.0.1, v1.1, v1.1.0hd, v1.2, v1.3, v1.4, v2.0  などと将来にわたって続きます。例として、ARMエミュレータ用のB2G B2G 1.2では、この様に入力します

BRANCH=v1.2 ./config.sh emulator

config.sh をすでに実行済みなら、B2G/.repo/manifests に移動し、"git branch -a" を実行することで (それまでは追加されていません)、ブランチ名を見ることができます。ブランチ名は行の最終トークンです。例えば"v1-train"や"master":

  remotes/origin/master
  remotes/origin/v1-train
  remotes/origin/v1.0.0
  remotes/origin/v1.0.1

さらにカスタマイズするには.userconfigのカスタマイズを見て下さい。

B2G ツリーを新しいマシンにコピーする

もしB2Gツリーを整備済みで新しいコンピュータを入手した場合(いいな!)、あるコンピュータから別のコンピュータに単純に移行するだけなら、全てを整備するのに比べ、非常に楽に実行できるようになりました。そうするには、古いコンピュータのドライブを新しいコンピュータにマウントして、こうします :

rsync -a source/ dest/

source はソースツリーのフルパスで(末尾のスラッシュを含みます)、dest は移動先です(末尾のスラッシュは同様に重要です!)。

: もし他のプラットフォームのコンピュータからファイルをコピーした場合は、ビルドプロセスを開始する前に、'./build.sh clean' を確実に実行してください。実行しなかった場合、コンパイル時に問題が発生する可能性があります。

これを実行したら、この文書の残りの全てをスキップして、このままビルドに移動することができます。

B2Gツリーを更新する

リポジトリがより新しいバージョンの B2G に更新された時、B2Gツリーを更新したくなるでしょう。これを行うには、下記コマンドを実行します:

git fetch origin
git checkout origin/master

これらが正しく動いたかをチェックするには、こう実行し:

git show HEAD

そして表示されたコミットが https://github.com/mozilla-b2g/B2G/commits/master の最新のコミットと一致するかをチェックします。

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

 このページの貢献者: hamasaki, T.Ukegawa, Uemmra3, bobcanthelpyou, ethertank, taguchi-ch, Potappo
 最終更新者: hamasaki,