Android
Chromium

Amazon EC2上でChromium for Androidをビルドする

More than 5 years have passed since last update.

おおまかには http://code.google.com/p/chromium/wiki/AndroidBuildInstructions ここに記載されてる手順に従うのだけど、わけあってAmazon EC2上のインスタンスでビルドしたので誰かの参考になればと。ただし、2012/08/22時点ではまだブラウザ本体のビルドに必要なコードが公開されておらず、生成されるapkはユニットテスト用のもの。本体ソースはよ。
→その後、某先生から指摘を頂き どうやらその後ツールセット更新、コード公開などありChromium本体をビルド出来るようになっていたようなので(&不足パッケージ指摘も頂いた)2013/02/13に手順更新しました。

前準備: インスタンス立ち上げ

Ubuntuでは、なんと公式のEC2用AMIを用意しているので、 http://cloud-images.ubuntu.com/releases/precise/release/ にあるUbuntuの公式イメージからインスタンスを生成(生成したいリージョンを選んでリンククリック)。
今回の構成は

  • US-Westリージョン(SVNで大量のファイルを拾ってくるので、どうせならネットワークレイテンシの低そうなところにしてみた。Tokyoでもok)
  • ami-db86a39e
  • Largeインスタンス
  • rootボリュームサイズ=60GiB

とした。

必要なパッケージのインストール

$ sudo apt-get update
$ sudo apt-get upgrade

一応12.04リリース以降の変更を取り込み、その後ごっそり依存ライブラリを突っ込む。

$ sudo apt-get install git-core subversion libgtk2.0-dev libc6-dev-i386 libgconf2-dev libgnome-keyring-dev libdbus-glib-1-dev libudev-dev gperf bison libpci-dev g++-multilib

それから、後で詰まないようにsun-java6-jre sun-java6-bin sun-java6-jdkをなんとかしてインストール( http://www.gaggl.com/2012/04/installing-java6-jdk-on-ubuntu-12-04/ こういう方法とかがあるらしい)しておく。
あと、antの1.8がUbuntu12.04では用意されてないので10.04のものを拾ってきてインストールしておく。

$ wget http://mirror.pnl.gov/ubuntu//pool/main/a/ant1.8/ant1.8_1.8.0-4ubuntu1_all.deb
$ wget http://mirror.pnl.gov/ubuntu//pool/main/a/ant1.8/ant1.8-optional_1.8.0-4ubuntu1_all.deb
$ sudo dpkg -i ant1.8_1.8.0-4ubuntu1_all.deb ant1.8-optional_1.8.0-4ubuntu1_all.deb

Chromiumのソースコードをダウンロード

基本的に、前の段階で必要なもの(ant1.8とかsun-java-*とか)をインストールしていれば

の手順通り。具体的には

$ cd ~ && mkdir Chromium && cd Chromium && git clone https://git.chromium.org/chromium/tools/depot_tools.git && export PATH="$PATH":`pwd`/depot_tools && gclient config https://src.chromium.org/chrome/trunk/src && echo "target_os = ['android']" >> .gclient

これでソース取得用の設定作成。丸ごと1行コピペでok。続いて

$ gclient sync --nohooks && export GYP_GENERATORS=ninja && . ./src/build/android/envsetup.sh && gclient runhooks

でソース取得と前処理(GYP_GENERATORS環境変数は.bash_profileなどに予め書いておいても良いかもしれません)。

$ cd src/build/ && sudo ./install-build-deps-android.sh

でAndroid関連のビルドに必要なパッケージを追加取得。

ビルド

ここまでやったら

$ cd ~/Chromium/src && android_gyp && ninja -C out/Release -j6 content_shell_apk

でok(並列度をどれくらいにするかは、インスタンスによって変更)。Largeインスタンスで、ソース取得から現状でのapk完成まで4時間ぐらいだったかな。結構かかるのでもっと高グレードのインスタンスを使ったほうが良いかもしれません。

ubuntu@ip-xx-xxx-xx-xxx:~/Chromium/src/out$ find . -name '*.apk' | xargs ls -l
-rw-rw-r-- 1 ubuntu ubuntu 361622 Aug 22 13:11 ./Debug/ipc_tests_apk/ipc_tests-debug.apk
-rw-rw-r-- 1 ubuntu ubuntu 361621 Aug 22 13:11 ./Debug/ipc_tests_apk/ipc_tests-debug-unaligned.apk
-rw-rw-r-- 1 ubuntu ubuntu 10637 Aug 22 13:11 ./Debug/replaceme_apk/replaceme-debug.apk
-rw-rw-r-- 1 ubuntu ubuntu 10636 Aug 22 13:11 ./Debug/replaceme_apk/replaceme-debug-unaligned.apk
-rw-rw-r-- 1 ubuntu ubuntu 16286294 Feb 13 06:14 ./Release/apks/ContentShell.apk
-rw-rw-r-- 1 ubuntu ubuntu 16286277 Feb 13 06:14 ./Release/apks/ContentShell-unaligned.apk
-rw-rw-r-- 1 ubuntu ubuntu 16283376 Feb 13 06:14 ./Release/apks/ContentShell-unsigned.apk

出来てますね! あとはadbで普通にインストールすればokです。