今更ながらFirefox for Android(Fennec)をビルドする
本家の情報はここ
Fennec for Androidにあるけど、結構頻繁に書き換えられている感じですね。
- 下記のビルドは2013/07/04時点での状況です。
- 今回はマルチロケール対応のapkをビルドする流れになっています。
- mozilla-releaseをビルドします。mozilla-centalをビルドする場合は読み替えてください。
ビルド環境
- Ubuntu 12.04 64bit
前準備
$ sudo apt-get update $ sudo apt-get install mercurial ccache $ sudo apt-get install libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev $ sudo apt-get build-dep firefox // ビルドに必要な諸々 $ sudo apt-get install ia32-libs // 64bit版の場合必要 $ mkdir mozilla // 作業ディレクトリ作成
Javaのインストール
OracleのページからJavaを落としてきます。今はアカウント登録が必要になっています。OpenJDKでビルドできるかは試していません。
$ sudo mkdir /opt/java $ sudo mv jdk-6u35-linux-x64.bin /opt/java $ cd /opt/java $ sudo chmod +x ./jdk-6u35-linux-x64.bin $ sudo ./jdk-6u35-linux-x64.bin $ sudo ln -f -s /opt/java/jdk1.6.0_35/bin/* /usr/local/bin/
Android SDK/NDKのダウンロード
色々組み合わせを試してみましたが、現時点ではこの組み合わせでビルド可能でした。
$ cd mozilla // 作業ディレクトリ作成 $ wget http://dl.google.com/android/android-sdk_r21.1-linux.tgz $ wget http://dl.google.com/android/ndk/android-ndk-r8d-linux-x86.tar.bz2 $ tar -xzf android-sdk_r21.1-linux.tgz $ tar -xjf android-ndk-r8d-linux-x86.tar.bz2
Android SDKのアップデート
リモートログインしている場合、すべてアップデートするしか…(時間がかかる)
./android-sdk-linux/tools/android update sdk -u
ローカルでGUIを使用している場合
./android-sdk-linux/tools/android update sdk
としてGUIを起動し、Android 4.1.2(API16)のみをダウンロードすればOKです
マルチロケール対応
$ mkdir multilocale // 作業ディレクトリ $ hg clone http://hg.mozilla.org/build/mozharness cp mozharness/configs/multi_locale/standalone_mozilla-central.py myconfig.py
myconfig.pyを編集
BUILD_DIR = "src-release" REPO_PATH = "releases/mozilla-release" L10N_REPO_PATH = "releases/l10n/mozilla-release"
ソースコードの取得
$ mozharness/scripts/multil10n.py --cfg myconfig.py --pull-build-source
mozconfigの作成
$ vim mzconfig
とかでmzconfigを作成(multilocaleディレクトリで)
mozconfigはスクリプト実行時にsrc-release/.mozconfigとしてコピーされるようになっています。
# Add the correct paths here: ac_add_options --with-android-ndk="$HOME/mozilla/android-ndk-r8d" ac_add_options --with-android-sdk="$HOME/mozilla/android-sdk-linux/platforms/android-16" ac_add_options --with-android-version=9 ac_add_options --with-android-gnu-compiler-version=4.7 # android options ac_add_options --enable-application=mobile/android ac_add_options --target=arm-linux-androideabi ac_add_options --with-ccache ac_add_options --with-branding=mobile/android/branding/unoffical mk_add_options MOZ_OBJDIR=./objdir-droid
apkのビルド
$ mozharness/scripts/multil10n.py --cfg myconfig.py
apkの場所は以下に作成されます。
$ mozilla/multilocale/src-release/objdir-droid/dist/gecko.apk
再ビルドする場合の作法
$ cd mozilla/multilocale/src-release/ $ ./mach clobber $ ./mach build // ビルド $ ./mach package // パッケージ化 $ ./mach clobber // クリーン
マルチロケール版作成では、別途スクリプトで実行しているので、上記コマンドは使用ませんが、個別で何かやるときは必要になります。ビルドが可能かどうかテストするときなどに使うといいでしょう。
パッケージ名、アプリ名の修正
configure.shを書き換えて、再度クリーンビルドすることで可能です。
$ mozilla/multilocale/src-release/mobile/android/branding/unofficial/configure.sh
configure.sh
ANDROID_PACKAGE_NAME=com.hoge.fuga MOZ_APP_DISPLAYNAME=hogefuga