ZTE OPEN C FirefoxOS(B2G)をビルドしてアップデートする2
それでは本題のビルド作業になります。
Firefox OSのmsterブランチからNightlyビルド及び日本語化・日本語IMEの導入が目標です。
現時点では、Firefox OS 2.2になります。
ビルド環境の構築
まず、ビルド環境ですが、現在64bit版LinuxかMac OS Xで動作するとのことです。
私はFedora 20 (64bit版)で行いました。
MDN: Firefox OS ビルドの必要条件
基本的には上記ページを参照して進めていきます。環境に合わせて各種準備を行ってください。
まずは必要なパッケージをインストール
$ sudo yum install autoconf213 bison bzip2 ccache curl flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static libX11-devel make mesa-libGL-devel ncurses-devel patch zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i686 zip perl-Digest-SHA wget
また、Fedora 20のgccはデフォルトで4.8ですが、ビルドには4.6が推奨されるとのことなので、ダウンロードしておきます。
$ curl -O http://people.mozilla.org/~gsvelto/gcc-4.6.4-fc19.tar.xz $ sudo tar -x -a -C /opt -f gcc-4.6.4-fc19.tar.xz
[追記] Fedora 21の場合はMake 4.0がデフォルトなので、ビルドに必要な3.82をインストール必要があります。(=>MDN Fedora21)
$ curl -O http://people.mozilla.org/~gsvelto/make-3.82-fc21.tar.xz $ sudo tar Jxv -a -C /opt -f make-3.82-fc21.tar.xz $ PATH=/opt/make-3.82/bin:$PATH
adbもインストールしてなければ、
sudo yum install android-tools
ccacheもサイズ大き目に一応設定しておきます。
ccache --max-size 10GB
端末のudevルールを設定します。ZTE OPEN Cじゃない場合はUSBベンダーIDが違うので注意。
$ sudo vim /etc/udev/rules.d/android.rules SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev" $ sudo systemctl restart systemd-udevd.service
端末のリモートデバッグを有効にするには、
[Settings]-[Device information]-[More information]-☑Remote debugging
システムパーティションのバックアップは、ビルドを行うbuild.shでやってくれるので、まあやらなくても。
コードの取得
適当な作業ディレクトリに移動しておいてください。
ここでは便宜的に$WORKとしておきます。
$ cd $WORK $ git clone git://github.com/mozilla-b2g/B2G.git $ cd B2G
次はconfig.shの実行ですが、ZTE OPEN CはFlameのベースとなっている端末なので、Flameの設定が使えるらしいです。
ただZTE OPEN Cのカスタムマニフェストがあるようなので、そいつを読み込ませます。
$ wget -O openc.xml https://bugzilla.mozilla.org/attachment.cgi?id=8429932 $ ./config.sh flame openc.xml
ネットワークが遅いとかなり時間がかかると思います。待ちましょう。
次に言語ファイルを取得します。
$ cd $WORK $ hg clone http://hg.mozilla.org/gaia-l10n/ja gaia-l10n/ja $ hg clone http://hg.mozilla.org/l10n-central/ja gecko-l10n/ja $ hg clone http://hg.mozilla.org/build/compare-locales
ロケールを指定するjsonファイルを以下のように作成します。
$ cd $WORK/B2G/gaia/ $ cat ./locales/languages-japan.json { "en-US" : "English (US)", "ja" : "日本語" }
日本語IME用の辞書をダウンロード・展開・作成します。
$ wget http://iij.dl.sourceforge.jp/naist-jdic/31880/naist-jdic-0.4.3.tar.gz $ tar zxvf naist-jdic-0.4.3.tar.gz $ cd ./apps/keyboard/js/imes/jskanji/dict $ mkdir src $ cp $B2G_WORK/naist-jdic-0.4.3/*.dic src/ $ make
ビルド
早速ビルドに移りたいところですが、少し修正が必要です。
そのままbuild.shを実行すると、最初に端末の/systemをpullしてくるときにいくつかのファイルが無いと怒られてしまいます。
“./device/t2m/flame/extract-files.sh"を以下のように修正したら大丈夫でした。
(内容的にWifiが使えなくなるんじゃないかと心配しましたが、結果的にそんなことはなかったので)
$ cd $WORK/B2G/device/t2m/flame/ $ git diff diff --git a/extract-files.sh b/extract-files.sh index 1b46ef1..0554d98 100755 --- a/extract-files.sh +++ b/extract-files.sh @@ -180,14 +180,9 @@ COMMON_WIFI=" " copy_files "$COMMON_WIFI" "system/lib/modules" "wifi" -COMMON_WIFI_VOLANS=" - ath6kl_sdio.ko - " -copy_files "$COMMON_WIFI_VOLANS" "system/lib/modules/ath6kl-3.5" "wifi" COMMON_WLAN=" WCNSS_cfg.dat - WCNSS_qcom_cfg.ini WCNSS_qcom_wlan_nv.bin " copy_files "$COMMON_WLAN" "system/etc/firmware/wlan/prima" "wifi"
次に各種環境変数を以下のように.userconfigに記述しておきます。
$ cd $WORK/B2G $ cat .userconfig export CC=/opt/gcc-4.6.4/bin/gcc export CXX=/opt/gcc-4.6.4/bin/g++ export WORK=[任意のパス] export L10NBASEDIR=$WORK/gecko-l10n export MOZ_CHROME_MULTILOCALE="ja" export PATH="$PATH:$WORK/compare-locales/scripts" export PYTHONPATH="$WORK/compare-locales/lib" export MOZILLA_OFFICIAL=1
そしたらやっとビルドです。端末を接続しておくことを忘れずに。エラーが出ないことを祈りましょう…
$ ./build.sh gecko -j1
-jパラメータはビルドの並列数の設定で、デフォルトではCPUコア数+2ですが、エラー出力が見にくくなるので-j1を指定しています。
スペックにもよりますが、-j1だと一時間強かかりました。コア数と同じ-j4だと30分ちょい。
無事に終わりましたら、端末に書き込みます。
$ ./flash.sh gecko
次はgaiaのビルドです。また環境変数など設定が面倒なので、以下のようなスクリプトを書いとくといいかもです。
$ cat gaia_build.sh export CC=/opt/gcc-4.6.4/bin/gcc export CXX=/opt/gcc-4.6.4/bin/g++ export WORK=[任意のパス] export LOCALE_BASEDIR=$WORK/gaia-l10n export LOCALES_FILE=$WORK/B2G/gaia/locales/languages-japan.json export GAIA_DEFAULT_LOCALE=ja export GAIA_KEYBOARD_LAYOUTS=en,jp-kanji export B2G_SYSTEM_APPS=1 export PRODUCTION=1 export GAIA_DEVICE_TYPE=phone cd $WORK/B2G/gaia pwd make reset-gaia $ ./gaia_build.sh
さて、これで無事に起動すれば成功です!
日本語化・日本語IMEについてはMDNと共に以下のサイトを参考にいただきました。
きょうのかんぱぱ: 日本語IMEを組み込んだFirefox OS 2.1をFlameに書き込んでみた
sola: Peak 向けに Firefox OS をビルドしてみる
GCG研究所: [Firefox OS][FxOS][Gaia] 日本語キーボードの出し方と日本語IME用の辞書の作り方
水城珠洲の日記4th final: コンパイルバッチ修正
他にビルドの設定など、
dynamis / make-reset-gaia.sh: Firefox OS で日本語+英語の gaia をビルドして端末に焼き込むスクリプト
dynamis / .userconfig: Firefox OS ビルド用のユーザ設定ファイル
mozilla.dev.b2g ›ZTE Open C