Android Zaurusの日記

ザウルスをアンドロイドにしてあげる
本館 Android Zaurus

2011-05-09

ccacheを使ったリビルドの高速化と、android_disk_vdiのビルド

17:39 |  ccacheを使ったリビルドの高速化と、android_disk_vdiのビルドを含むブックマーク

先月のAndroid Builders Summit*1に参加した際に、USE_CCACHEを使ったビルドの高速化*2の話があって、そういえば使ってなかったなと思い出して、また、tetsu_kobaさんがエントリ*3書いて、Android Buildingに凸ってJBQさんからキャッシュ増やしてねというお返事が来てた*4ので、試してみた。


$ source build/envsetup.sh
$ lunch full-eng
$ export USE_CCACHE=1
$ prebuilt/linux-x86/ccache/ccache -M 10G
$ make clean
$ time make -j8
$ make clean
$ time make -j8
$ prebuilt/linux-x86/ccache/ccache -s

1回目のビルドは26分ほど。2度目は13分ほどに縮まった。ccache -sのサイズは1.1GBと、デフォルトの1Gをちょっとだけ越えていたので、キャッシュサイズを増やしておくのは多少有効。


別のソースツリー(バージョン違いとか)で、再びビルドをしてみると、同様に2度目のビルド時間が短縮され、キャッシュサイズが2.0GBに増えていた。JBQさんの100GBは大袈裟にしても、保守しているビルドツリーの個数GBに設定しておくのは有効そうだ。


蛇足だが、このキャッシュサイズがどこに保存されているかわからなかったので、ccacheのソースコードを読んでみたら、$CCACHE_DIR/statsにテキストで書かれている値の15番目にブロックサイズ16Kbyteの値のようだ。


ただビルドして時間を測るだけではつまらないので、ついでに気になっていたandroid_disk_vdiをビルドしてみた。これは、現在のmasterリポジトリに入っているVirtualBoxで起動できるx86イメージをビルドするオプション。


$ lunch vbox_86-eng
$ time make -j8 android_disk_vdi

ビルドしたandroid_disk.vdiがどうにも起動しないので、色々と調べて*5こうすれば動かせるというのが分かった。


  • VirtualBoxで新しい仮想マシンを作成。システムはLinux 2.6でメモリは512MB推奨。
  • 作成したandroid_disk.vdiを、IDEのプライマリとして登録。
  • GrubメニューのStartup from /dev/sdaで起動。
  • ESCキーがBack
  • F1キーがMenu
  • F4キーがEnd
  • ロック画面からの復帰はF1キー
  • 電源オフはF4キー長押しのダイアログで電源オフを選択した後、仮想マシンの電源オフ。

マウスもネットワークも使えないので、はっきり言ってまったく使い物にならない。ネットワーク経由でのadbが使えるとREADME.TXTに書かれているが、つなぎ方が分からない。現状ではandroid-x86.orgのISOイメージからVirtualBoxにインストールした方が幸せだろう。


make installer_vdiというビルドも出来るようだ。これは、空ディスクにAndroidをインストールするイメージが作成できる。使い方は、


  • VirtualBoxで新しい仮想マシンを作成。システムはLinux 2.6でメモリは512MB推奨。
  • 2GB以上の新規の仮想ディスクを作成し、IDEのプライマリとして登録。
  • 作成したinstaller.vdiを、IDEのセカンダリとして登録。
  • 仮想マシンを起動して、すかさずF12でブートオプション。
  • Secondry IDEから起動して、GrubメニューでInstall to /dev/sdaを選択。
  • /dev/sda5がマウント出来ないというエラーで止まるので、電源オフ。
  • 再度、仮想マシンを起動して、F12でSecondry IDから起動して再度Installを選択。
  • 今度はインストールが正常終了するので、rebootと入力して再起動
  • GrubメニューのStartup from /dev/sdaで起動。

embeddedembedded 2011/05/09 18:11 ccache確認乙です。

androidのmasterでビルドすると、emulator_x86というのができるので、次のSDKのリリースあたりでは普通にQEMUベースでx86版が動かせるようになるかもしれません。

androidzaurusandroidzaurus 2011/05/10 09:33 I/Oで発表されるかもしれないGoogle TV SDKの準備じゃないかなと妄想してます。