ソースとビルド
ちょこちょこ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