ソースとビルド

ちょこちょこAndroidアプリを作って勉強ぽいことしててふと思ったこと。
「OSのソースも公開されてたよな」
そんなわけでソースを入手する方法をサイトでみるとWindows環境での方法がないw
なのでUbontu10.10をDLしてきてVMware上でソースの入手をやってみた。

Ubontu10.10の環境構築

Ubontu homepageからDesktop EditionのISOをDL。
仮想環境のゲストOSにメモリは1.0GBほど割り当てて普通にインスト。
コンパイルに必要なパッケージを導入。
AndroidOSのビルドはJDK5が必要らしいのでこれをリポジトリに追加。
Ubontu10.10はOpenJDK6が入ってるため。

sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ jaunty multiverse"
sudo apt-get update

あとは一気にパッケージをインスト。(実際は1行で入力)

sudo apt-get -y install git-core gnupg sun-java5-jdk
 flex bison gperf libsdl1.2-dev libesd0-dev libwxgtk2.6-dev
 build-essential zip curl libncurses5-dev zlib1g-dev valgrind g++

インストが終わったらjavaとjavacのデフォルト設定?を変更する。

sudo update-alternatives --config java
sudo update-alternatives --config javac

alternativesてので管理してるらしい。
実行するとどのjava/javacを使うか選択できるのでsun-jdk5のものを選択。

ソースの入手

repoのインスト

gitのラッパーらしいrepoをまずはインスト&実行権限の付与。

curl http://android.git.kernel.org/repo >~/bin/repo
chmod a+x ~/bin/repo
ソースのDL

repoをPATHに通しておいて、作業用ディレクトリを作成。(ディレクトリはどこでもおk)

export PATH=$PATH:~/bin
mkdir froyo

作業ディレクトリの中でrepo initを実行。

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

「-b」で取得するブランチを指定。
今回はFroyo(2.2)のソース。
しばし待ってからsyncを実行してやっとソースのDLが始まる。

repo sync

ここまででソースのみなら作業は終了。
通信状況にもよるけど余裕で1時間位はかかってた気がする。

無駄にビルド

折角なのでビルドもしてみた。

make -j2

作業ディレクトリの中でmakeコマンドを実行。
「-j」オプションで実行スレッド数が指定できるみたいなので2CPU割り当ててたので2スレッドでやってみた。
3〜4時間とかひたすらかかって何とか成功。
エミュレータ(AVD)の起動はこんな感じ。(実際には1行で…)

./emulator -sysdir /media/android/froyo/out/target/product/generic
 -kernel /media/android/froyo/prebuilt/android-arm/kernel/kernel-qemu
 -data /media/android/froyo/out/target/product/generic/userdata.img
 -noaudio -skindir /media/android/froyo/sdk/emulator/skins -skin WVGA800


このあと調子に乗ってfroyo-x86のソースもDLしてLiveCD作ってみたりして。
x86のビルドで何でかコンパイルエラーでたりして。
こんときはCPU数=スレッド数でmakeのオプション指定して、ゲストOSのメモリを1.5GB位まで盛ってみたら成功。
よくわかりませぬw