MacでAndroidソースをビルド

MacBook ProにAndroidのソースを入れてビルドしたときの備忘録です(参考: http://source.android.com/download)。

ディスクイメージの準備

Mac OS X で動かすには、大文字/小文字を区別するファイルシステムが必要になります。デフォルトでは大文字/小文字を区別しないようになっています。したがって、新たにファイルシステムを作り直さなければなりません。でも大文字/小文字を区別すると、Adobe系のソフトが動かなくなるという話もあります(最近のはどうなのか未確認です)。これは困ります。

幸い、Mac OS X では簡単にディスクイメージを作ることができるので、これを使えば既存のパーティションを変更することなく、Androidの開発環境をインストールすることができます。

アプリケーション/ユーティリティにあるディスクユーティリティを使って「HFS+」のパーティションを作ります。
以下のように、サイズはカスタム8GB、フォーマットをMac OS 拡張(大文字/小文字を区別、ジャーナリング)にしておきます。ここでは名前をandroid.dmgにしておきました。

create-android-dmg

.bash_profileに以下を追加。

# command to mount the android file image
function mountAndroid  { hdiutil attach ~/android.dmg  -mountpoint /Volumes/android; }

そして、

# mountAndroid

することで、ディスクイメージを /Volumes/android にマウントします。
以後、必要なときにこのコマンドでマウントすればいいです。

ツールの準備

必要なツールを port を使ってインストールします。

$ sudo port selfupdate
$ sudo port install gmake
$ sudo ln -s gmake /opt/local/bin/make
$ sudo port install libsdl
$ sudo port install git-core gnupg

.bash_profileに以下を追加します。

# set the number of open files to be 1024
ulimit -S -n 1024

設定を読み直しておきます。

$ . ~/.bash_profile

Repoのインストール

repo の置き場をつくります。

$ cd ~
$ mkdir bin

.bash_profile の PATH に ~/bin を追加しておく必要があります。

repo をダウンロードしてきます。

$ curl http://android.git.kernel.org/repo >~/bin/repo
$ chmod a+x ~/bin/repo

ソースの取得

これでツールの準備はできました。Androidのソースを取ってきます。

$ cd /Volumes/android
$ mkdir mydroid
$ cd mydroid
$ repo init -u git://android.git.kernel.org/platform/manifest.git
$ repo sync 

時間がかかるので気長に待ちましょう。

ビルド

いよいよビルドです。

$ make

これにはすごく時間がかかります。しばらく放置しておきましょう。

トラブルシューティング

repo sync してソースをアップデートすると、ビルドできなくなるときがありました。

$ make
build/core/main.mk:178: implicitly installing apns-conf_sdk.xml
build/core/base_rules.mk:117: *** recovery: MODULE.TARGET.EXECUTABLES.recovery already defined by bootable/recovery.  中止.

この場合には以下のようにすればいいようです。

$ rm -rf recovery
$ make

これで、MacにAndroidソースのビルド環境ができました。