メモ

調べたり思いついたりしたことをメモします

Firefox for Android をビルドする手順

FirefoxブラウザのAndroid版ビルド手順を書いておきます。

詳細は Mobile/Fennec/Android - MozillaWiki を参照ください。若干古いようなので試しに最新版でやってみました。

ubuntu12.04(64bit) で実行しています。ここでは /opt/workspace というワークディレクトリ上で作業するものとします。

ビルド環境の準備

環境の準備はMDNを見てください。

$ mkdir /opt/workspace
$ cd /opt/workspace
$ hg clone https://hg.mozilla.org/mozilla-central/

Android開発環境の準備

AndroidSDKとNDKが必要になります。 最新を落としてきて展開します。今日(2014.07.18)の最新は下記の通りのバージョンでした。

$ mkdir /opt/workspace/android/
$ cd /opt/workspace/android/

$ wget http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86_64.tar.bz2
$ wget http://dl.google.com/android/adt/adt-bundle-linux-x86_64-20140702.zip
$ tar xfj android-ndk-r9d-linux-x86_64.tar.bz2
$ unzip adt-bundle-linux-x86_64-20140702.zip
$ ./adt-bundle-linux-x86_64-20140702/sdk/tools/android update sdk -u
$ ./adt-bundle-linux-x86_64-20140702/sdk/tools/android update adb

sdkのアップデートに時間がかかるのでGUIで特定のバージョンだけを選んでもいいでしょう。

普段 Android の開発をやっている人は既に入っているかもしれませんが ant が必要です。

$ sudo apt-get install ant

同じくJDKがいります。以前のAndroidは sun-java6 が必要だったのですが現在はopenjdk7でもOKです。ちなみに試してみたところ openjdk6 でも通りました。インストールしたら update-alternatives で切り替えます。

$ sudo apt-get install openjdk-7-jdk
$ sudo update-alternatives --config java

mozconfig の設定

mozconfig ファイルを Android 用に作成します。

$ vi /opt/workspace/mozilla-central/mozconfig

---------mozconfigの中身---------
ac_add_options --with-android-ndk="/opt/workspace/android/android-ndk-r9d"
ac_add_options --with-android-sdk="/opt/workspace/android/adt-bundle-linux-x86_64-20140702/sdk/platforms/android-20"
ac_add_options --enable-application=mobile/android
ac_add_options --target=arm-linux-androideabi
ac_add_options --with-ccache
mk_add_options MOZ_OBJDIR=./mybulid-android
---------mozconfigの中身---------

sun-java6 を使っている人は android-20 の部分を android-18 に変えてください。

mozilla-central をビルド

つくった mozconfig を使ってビルドします。

$ cd /opt/workspace/mozilla-central
$ ./mach build

無事にビルドが終わったら apk ファイルを作ります。

$ ./mach package

ファイルは /opt/workspace/mozilla-central/mybulid-android/dist/gecko.apk に出来上がります。

すでにAndroid端末がUSBで繋がっていてadbが通る状況になっているならインストールもできます。

$ ./mach install

これでAndroid端末へインストールされます。もちろん普通に adb install でもいいですが。

端末上では "Fennec $USER" のような表示名でアイコンが出来ていると思います。ここの名前は /opt/workspace/mozilla-central/mobile/android/branding/unofficial/configure.sh の中身をあらかじめ編集しておくことで変更できるようです。

さて、、できあがった Firefox for Android英語版です。

日本語で使いたい場合は Multilocale 版をビルドしなければなりません。

多言語版のビルド

Multilocale 版をビルドするには mozharness を使います。

まずワークディレクトリ上で mozharness を取得し、その中に入っている standalone_mozilla-central.py をコピーして編集します。

$ mkdir /opt/workspace/multilocale
$ cd /opt/workspace/multilocale
$ hg clone http://hg.mozilla.org/build/mozharness
$ cp mozharness/configs/multi_locale/standalone_mozilla-central.py myconfig.py

myconfig.py の BUILD_DIR を編集します。すでに mozilla-central でビルドできる環境を持っているので、そこへのパスを書きます。

$ vi myconfig.py

---------myconfig.pyの中身(部分抜粋)---------
BUILD_DIR = "/opt/workspace/mozilla-central"
---------myconfig.pyの中身(部分抜粋)---------

そして mozconfig を作成します。先ほど作ったものを使い回せば楽なのでコピーしてきました。

$ cp /opt/workspace/mozilla-central/mozconfig .

mozconfig 内の MOZ_OBJDIR と myconfig.py 内の OBJDIR を合わせておく必要があるようです。 myconfig.py 内のデフォルトは "objdir-droid" だったのでそれを mozconfig 側にも設定しました。(どちらにあわせても良いと思いますが)

$ vi mozconfig

---------mozconfigの中身(部分抜粋)---------
mk_add_options MOZ_OBJDIR=./objdir-droid
---------mozconfigの中身(部分抜粋)---------

これでビルド可能です。

$ mozharness/scripts/multil10n.py --cfg myconfig.py

/opt/workspace/mozilla-central/objdir-droid/dist/gecko.apk へ apk ファイルまで一気に作成されます。

Android端末にインストールするとその端末の言語設定に応じた言語で起動できると思います。