2011年11月22日

Android4.0(Ice Cream Sandwich)のソースのダウンロードとビルド

Android4.0(Ice Cream Sandwich)のソースコードが公開されたので、まずはemulatorをビルドしてみましょう。



ダウンロード、ビルドの方法

Android Open Source Projectのサイトに書いてありますので見てください。

ここでは、はまりやすい点だけ書きます。

ビルド環境

Android 2.3(Gingerbread)のときと同じ環境でビルドできます。私のビルド環境は Ubuntu 10.04 (x86_64), CPU: Intel Core i7 950 @3.07GHz, メモリ 24GB です。

JavaはSUNのJDKを入れてください。OpenJDKではバージョンチェックで引っかかります。

repoコマンドの取得

すでにrepoコマンドを持っていても、最新版でやりましょう。

$ curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
$ chmod a+x ~/bin/repo

ソースリポジトリの初期化

$ mkdir android-ics
$ cd andorid-ics
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1

ソースコードの取得

$ repo sync

デフォルトで -j4 オプションがついているそうです。

ARMのemulatorのビルド

$ source ./build/envsetup.sh
$ lunch full-eng
$ time make -j8 2>&1 |tee make.log
real    36m0.339s
user    263m44.560s
sys     14m9.700s

ビルドがエラーになったときには make.logを調べましょう。ヘッダファイルが足りないというエラーならば、それを含むパッケージをインストールしていないということなので、このページを見て sudo apt-get install ... を再度実行すればよいと思います。

起動

lunchのスクリプトがPATHやその他の環境変数をセットしていますが、念のため以下のコマンドで確認してください。

$ which emulator

これでSDKのemulatorがでてきてしまったときにはPATHの設定をやりなおすか、明示的に今ビルドしたemulatorを起動します。

$ ./out/host/linux-x86/bin/emulator

カーネルのログが見たい場合は

$ ./out/host/linux-x86/bin/emulator -show-kernel

間違えてSDKのemulatorで起動すると、"Kernel panic - not syncing; Attempted to kill init!" となり起動に失敗します。ICSではデフォルトでarmv7でビルドされていて、initはThumb2でコンパイルされています。今までのSDKのemulatorではデフォルトでARM926(armv5te)のカーネルを起動するのでThumb2が不正命令とみなされて落っこちます。

DalvikVMがどのようなコンフィグでビルドされているかは以下のコマンドで確認できます。

$ adb shell dalvikvm -help |grep ^Config
Configured with: debugger profiler hprof jit(armv7-a) show_exception=1

JITは有効になっていてarmv7-aのコードを生成するようになっています。

x86のemulatorのビルド

その前に現在のoutディレクトリを移動。

$ mv out out.full-eng

lunchの指定を変更してビルド。

$ lunch full_x86-eng
$ time make -j8 2>&1 |tee make.log
real    46m26.134s
user    349m48.670s
sys     15m8.320s

ARMよりも長くかかるようです。

起動

$ ./out/host/linux-x86/bin/emulator -show-kernel

KVMが使えるかどうかは自動判定しています。明示的にKVMを有効にするには

$ ./out/host/linux-x86/bin/emulator -show-kernel -qemu -enable-kvm

もしこれで、Permission deniedのエラーになる場合は、以下のように /dev/kvmのアクセス権を変更します。

$ sudo chmod o+rw /dev/kvm
$ ls -l /dev/kvm
crw-rw-rw-+ 1 root kvm 10, 232 2011-11-21 11:44 /dev/kvm

x86ではJITはまだ使えません。



トラックバックURL

コメントする

名前
 
  絵文字
 
 
記事検索
最新コメント
アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード