2011/04/26

Androidのビルド

公式のガイドを参考にAndroidのソースコードのビルド環境を作ってみた。

公式のガイドによると、Android のソースコードはおよそ 2.6GBあり、ビルドするのに空き容量が 10GB 必要。(ちなみに実際にダウンロードした froyo のソースコードは 4.6GB あった)
Android は、Ubuntu (10.04以降) でテストしているようだが、多くのディストリビューションで必要なビルドツールが利用できるはず、とのこと。

ここでは、VMware Workstation 上で環境を作ることにして、クライアントに、Ubuntu 10.10 x64版を使ってみた。公式ガイドに、少なくとも 8GB の RAM と Swap が必要であること、また、12GB 以上の空き容量が必要とあるので、20GB の仮想HDDを / (ルート)に割り当て、さらに、8GB の仮想HDDを用意してスワップに割り当てて Ubuntu をインストールした。実際には 8GB もなくても大丈夫みたいだが、メモリ容量またはスワップサイズが小さいとリソース不足でビルドに失敗したとフォーラムに書かれているのを見たので、ある程度の容量は割り当てておく必要がある。とりあえず、仮想PCに物理メモリ 2GB を割り当てたところうまくいった。Ubuntu のインストール完了後、アップデート・マネージャから更新パッチを適用し、VMware-Tools もインストールした。この状態で作業を開始。

1. JDK のインストール
Gingerbread 以降は JDK6、froyo 以前は JDK5 が必要らしい。ここでは froyo を対象にするため JDK5 をインストールした。

$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper main multiverse"
$ sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu dapper-updates main multiverse"
$ sudo apt-get update
$ sudo apt-get install sun-java5-jdk

ライセンス条項が表示されるので、Tab を押して<了解>にフォーカスをセットした後 Enter、次いでライセンス条項に同意するか聞かれたら<はい>を選択する。


2. 必要なパッケージのインストール
ビルドに必要なパッケージをインストールする。

$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev

froyo 以前の場合、x64 環境では以下のパッケージも必要なのでインストールする。

$ sudo apt-get install gcc-multilib g++-multilib libc6-i386 libc6-dev-i386


3. Repo のインストール
Android のソースコードは複数の Git リポジトリからできているため、それらのリポジトリをまとめて扱うためのツールをインストールする。
公式のガイドに従って、$HOME に bin フォルダを作成してパスを通す。

$ mkdir ~/bin
$ PATH=~/bin:$PATH

Repo をダウンロードして実行権限を付与する。

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


4. Repo クライアントの初期化
Repo から Android のソースコードのリポジトリにアクセスするための設定をする。

作業フォルダを作成する。好きなフォルダ名にして良い。

$ mkdir android-froyo
$ cd android-froyo

froyo のブランチを指定して Repo を設定する。

$ repo init -u git://android.git.kernel.org/platform/manifest.git -b froyo

Git のユーザ名やメールアドレスを聞かれるので、それぞれ入力する。また、カラー表示を可能にするか聞かれるので答える。


5. ソースコードの取得
リポジトリからソースコードを取得する。上述の通りソースコードの容量はかなり大きいため、時間がかかるので注意。

$ repo sync


6. ビルド

環境の初期化処理をする。envsetup.sh で定義されているコマンド群を実行できるようになる。

$ source build/envsetup.sh

以下のコマンドを実行して、メニューからビルド対象を選択する。ここでは generic-eng のままにした。なお、メニューの simulator というのはサポートされていないらしい。simulator を選択してビルドしてもコンパイルエラーになる。

$ lunch

ビルドの実行。-j2 の部分は、CPU のコア数やスレッド数に応じて設定することで、コンパイル時間を短縮できる。

$ make -j2


7. エミュレータでの実行

コンパイルが正常終了した場合、

$ emulator

でエミュレータが実行できる。途中で失敗して何度かやり直したりして正常終了させた場合などうまく実行できない場合、以下のようにする。android-froyo の部分は、4 で作成した作業フォルダ名に合わせる。エミュレータは、最初 A N D R O I D _ と表示された後、Android のロゴに変わり、その後 HOME 画面が表示される。

$ cd out/host/linux-x86/bin
$ ./emulator -sysdir ~/android-froyo/out/target/product/generic/ -kernel ~/android-froyo/prebuilt/android-arm/kernel/kernel-qemu -data ~/android-froyo/out/target/product/generic/userdata.img

以前は -skindir や -skin という起動オプションもあったようだが、現在は非推奨となっている。
他のオプションや、エミュレータの操作キーについては、Android Developers のAndroid Emulator のページ参照。

0 件のコメント:

コメントを投稿