doroidpanic.com

Ubuntu 10.04.3 LTSでAndroidのOSをビルド

AndroidのOSをビルドをしてみた。

マシンが余ったので、Ubuntu 10.04.3LTS(2.6.32-35-generic)をインストールしてAndroidのOSをビルドしてみた。
chromeOSのビルドをしたときもそうですが、yum、aptで育ったのでmakeは苦手です。
androidOSのビルドもrepoやgitは見よう見まねなところがあります。

Androidをビルドするマシンを準備

Android4.0のビルドは16GBのメモリを必要とか噂が出てますが、android2系と3系をとりあえずビルドして
エミュレータで動かしてみたいのが目的なので、PenDのメモリ2GマシンにUbuntu 10.04.3 LTSをUNetbootinを使ってUSBからインストールします。
GUIでは特に設定はせず、後でまとめてapt-getします。

AndroidOSビルドに必要なパッケージのインストール

何度もビルド中にエラーとなり調べると、-m32オプションがあるので、32bitライブラリも必要とのこと。
後になって足りなくなったりしたので、Androidビルドに必要なパッケージは重複してるかもしれません。

[sourcecode language=”bash”]
sudo apt-get install git-core gnupg flex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curl libncurses5-dev zlib1g-dev
sudo apt-get install libreadline5-dev
sudo apt-get install lib32z1-dev lib32ncurses5-dev
sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse"
sudo add-apt-repository "deb http://us.archive.ubuntu.com/ubuntu/ hardy-updates multiverse"
sudo apt-get update
sudo apt-get install sun-java5-jdk
sudo apt-get install sun-java6-jdk
[/sourcecode]

gitやrepoの設定

何度もビルド中にエラーとなり調べると、-m32オプションがあるので、32bitライブラリも必要とのこと。
後になって足りなくなったりしたので、Androidビルドに必要なパッケージは重複してるかもしれません。

[sourcecode language=”bash”]
mkdir ~/bin
curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
chmod a+x ~/bin/repo
[/sourcecode]

bashrcへ忘れずに書き込む

[sourcecode language=”bash”]
export PATH=$PATH:~/bin
[/sourcecode]

ava-1.5.0-sunでエラーが連発していたのでjava-6-sunへ切り替えました。

[sourcecode language=”bash”]
sudo update-alternatives –config java
There are 2 choices for the alternative java (providing /usr/bin/java).
Selection Path 優 Status
————————————————————
0 /usr/lib/jvm/java-6-sun/jre/bin/java 63 auto mode
1 /usr/lib/jvm/java-1.5.0-sun/jre/bin/java 53 manual mode
* 2 /usr/lib/jvm/java-6-sun/jre/bin/java 63 manual mode
[/sourcecode]

bashrcにも書いておきます。

[sourcecode language=”bash”]
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export ANDROID_JAVA_HOME=$JAVA_HOME
export PATH=$JAVA_HOME/bin:$PATH
[/sourcecode]

メールアドレスとユーザ名を入力します。(何でも良い)

[sourcecode language=”bash”]
git config –global user.email "root@doroidpanic.com"
git config –global user.name "doroidpanic.com"
[/sourcecode]

Androidのソースを取得

Androidのソースを取得
repo initは時間もあるので、バージョン指定のタグをつけずに行ないます。

[sourcecode language=”bash”]
doroidpanic@localhost:~/doroidpanic$mkdir doroidpanic
doroidpanic@localhost:~/doroidpanic$cd doroidpanic
doroidpanic@localhost:~/doroidpanic$repo init -u https://android.googlesource.com/platform/manifest
doroidpanic@localhost:~/doroidpanic$repo sync -j4
remote: Counting objects: 15, done
remote: Finding sources: 100% (13/13)
remote: Getting sizes: 120% (6/5)
remote: Compressing objects: 100% (3/3)
remote: Total 13 (delta 2), reused 13 (delta 2)
Unpacking objects: 100% (13/13), done.
From https://android.googlesource.com/platform/prebuilt
* [new branch] eclair-passion-release -> aosp/eclair-passion-release
* [new branch] eclair-release -> aosp/eclair-release
* [new branch] eclair-sholes-release -> aosp/eclair-sholes-release

doroidpanic@localhost:~/doroidpanic$source build/envsetup.sh
including device/htc/passion/vendorsetup.sh
including device/samsung/crespo/vendorsetup.sh
including device/samsung/crespo4g/vendorsetup.sh
including sdk/bash_completion/adb.bash

doroidpanic@localhost:~/doroidpanic$ lunch generic-eng
============================================
PLATFORM_VERSION_CODENAME=AOSP
PLATFORM_VERSION=3.1.4.1.5.9.2.6.5
TARGET_PRODUCT=generic
TARGET_BUILD_VARIANT=eng
TARGET_SIMULATOR=false
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
HOST_ARCH=x86
HOST_OS=linux
HOST_BUILD_TYPE=release
BUILD_ID=OPENMASTER
============================================

[/sourcecode]

指定してrepo initする人はこんな感じです。

[sourcecode language=”bash”]
repo init -u https://android.googlesource.com/platform/manifest -b android-2.3_r1
[/sourcecode]

また、なんどか試していると「期待してない token `newline’ のあたりにシンタックスエラー」と表示されたので、潔くrepoを削除して、やり直しました。
initするときに表示されたので、タグはこれらがあるみたいです。

[sourcecode language=”bash”]
* [new branch] android-1.6_r1 -> origin/android-1.6_r1
* [new branch] android-1.6_r1.1 -> origin/android-1.6_r1.1
* [new branch] android-1.6_r1.2 -> origin/android-1.6_r1.2
* [new branch] android-1.6_r1.3 -> origin/android-1.6_r1.3
* [new branch] android-1.6_r1.4 -> origin/android-1.6_r1.4
* [new branch] android-1.6_r1.5 -> origin/android-1.6_r1.5
* [new branch] android-1.6_r2 -> origin/android-1.6_r2
* [new branch] android-2.0.1_r1 -> origin/android-2.0.1_r1
* [new branch] android-2.0_r1 -> origin/android-2.0_r1
* [new branch] android-2.1_r1 -> origin/android-2.1_r1
* [new branch] android-2.1_r2 -> origin/android-2.1_r2
* [new branch] android-2.1_r2.1p -> origin/android-2.1_r2.1p
* [new branch] android-2.1_r2.1p2 -> origin/android-2.1_r2.1p2
* [new branch] android-2.1_r2.1s -> origin/android-2.1_r2.1s
* [new branch] android-2.2.1_r1 -> origin/android-2.2.1_r1
* [new branch] android-2.2.1_r2 -> origin/android-2.2.1_r2
* [new branch] android-2.2.2_r1 -> origin/android-2.2.2_r1
* [new branch] android-2.2_r1 -> origin/android-2.2_r1
* [new branch] android-2.2_r1.1 -> origin/android-2.2_r1.1
* [new branch] android-2.2_r1.2 -> origin/android-2.2_r1.2
* [new branch] android-2.2_r1.3 -> origin/android-2.2_r1.3
* [new branch] android-2.3.1_r1 -> origin/android-2.3.1_r1
* [new branch] android-2.3.2_r1 -> origin/android-2.3.2_r1
* [new branch] android-2.3.3_r1 -> origin/android-2.3.3_r1
* [new branch] android-2.3.3_r1.1 -> origin/android-2.3.3_r1.1
* [new branch] android-2.3.4_r0.9 -> origin/android-2.3.4_r0.9
* [new branch] android-2.3.4_r1 -> origin/android-2.3.4_r1
* [new branch] android-2.3.5_r1 -> origin/android-2.3.5_r1
* [new branch] android-2.3.6_r0.9 -> origin/android-2.3.6_r0.9
* [new branch] android-2.3.6_r1 -> origin/android-2.3.6_r1
* [new branch] android-2.3.7_r1 -> origin/android-2.3.7_r1
* [new branch] android-2.3_r1 -> origin/android-2.3_r1
[/sourcecode]

AndroidOSをビルド

Androidのビルドを開始してみる。
仮想CPUを入れれば4スレッドなので、j4のオプションを付けてみる。

[sourcecode language=”bash”]
make -j4
[/sourcecode]

まだまだ終わりません、オプション-j4は利いてそうですがPenDの2Gでは荷が重いようです。
そろそろVAIO TypeZをデュアルブートでubuntuインストールしておこうかな。。

[sourcecode language=”bash”]
16519 doroidpanic 20 0 271m 11m 5848 R 13.8 0.6 0:00.42 cc1
16553 doroidpanic 20 0 270m 9660 5456 R 4.9 0.5 0:00.15 cc1
16555 doroidpanic 20 0 270m 9372 5384 R 4.6 0.5 0:00.14 cc1
11478 doroidpanic 20 0 156m 148m 988 S 2.0 7.4 0:41.91 make
16564 doroidpanic 20 0 269m 5500 2848 R 1.6 0.3 0:00.05 cc1
4 root 20 0 0 0 0 S 0.3 0.0 0:01.98 ksoftirqd/0
13505 root 20 0 19224 1376 1028 R 0.3 0.1 0:06.32 top
16516 doroidpanic 20 0 1952 608 520 S 0.3 0.0 0:00.01 arm-eabi-gcc
16551 doroidpanic 20 0 1952 608 520 S 0.3 0.0 0:00.01 arm-eabi-gcc
16554 doroidpanic 20 0 1952 608 520 S 0.3 0.0 0:00.01 arm-eabi-gcc
16563 doroidpanic 20 0 1952 608 520 S 0.3 0.0 0:00.01 arm-eabi-gcc
[/sourcecode]