Ubuntu14.04でAndroid OSをビルドしたときの手順を残しておく。
最新情報は以下を参照
https://source.android.com/source/initializing.html
##PCの初期設定
http://packages.ubuntu.com/vivid/openjdk-8-jdk から以下をDLする。
自分のPCアーキチェクチャに合ったバイナリをDLすること。
・openjdk-8-jre-headless
・openjdk-8-jre
・openjdk-8-jdk
PCのアーキチェクチャ確認方法
$uname -m
x86_64→amd64
i386/i486/i586/i686→i386
自分の場合は以下をDLした。
・openjdk-8-jre-headless_8u45-b14-1_amd64.deb
・openjdk-8-jre_8u45-b14-1_amd64.deb
・openjdk-8-jdk_8u45-b14-1_amd64.deb
DLした三つのファイルそれぞれに対して以下を実行する。
$sudo dpkg -i {downloaded.deb file}
途中でエラーがでるので以下を実行する。
$ sudo apt-get -f install
先にJavaが入っていた場合でpathの切り替えが必要な場合は以下を実行する。
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
ビルドに必要なツール一式をインストールする。
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
USBアクセス許可を設定する。
$ wget -S -O - http://source.android.com/source/51-android.rules | sed "s/<username>/$USER/" | sudo tee >/dev/null /etc/udev/rules.d/51-android.rules; sudo udevadm control --reload-rules
反映する。
$ /etc/init.d/udev restart
ソースコードのDLに必要となるRepoをインストールする。RepoはGitコマンドをまとめて実行してくれるようなもの。
$ mkdir ~/bin
$ PATH=~/bin:$PATH
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
##Androidソースコードのダウンロード
基本的にはビルドしたいVersion毎にフォルダを作成し、そこへ目的のブランチをクローンする。ブランチ、タグの一覧はここで確認できる。
https://source.android.com/source/build-numbers.html
例えば"android-7.0.0_r1"のブランチをクローン場合は以下。
$ mkdir ~/git/aosp/android-7.0.0_r1
$ cd ~/git/aosp/android-7.0.0_r1
$ repo init -u https://android.googlesource.com/platform/manifest -b android-7.0.0_r1
そして同期する。ゼロからの同期には数時間かかる。
$ repo sync
特定のブランチではなくmasterをクローンしたい場合は"-b"オプションなしでinitする。
##Androidソースコードの変更
同期直後は、指定したブランチのHEADを指している状態。ソースコードを変更する場合ははトピックブランチを作成しそこから枝を分岐させた方がよい。
$ repo start <topic_branch_name> <repository> ... <repository>
##ソースコードのビルド
$ cd ~/git/aosp/android-7.0.0_r1
$ source build/envsetup.sh
$ lunch
lunchでビルド対象デバイスを指定する。一覧はここで確認できる。
https://source.android.com/source/running.html
ビルドする。
$ make
"-jN"オプションで並列処理が可能。
$ make -j4
手元の環境(Intel® Core™ i7 3.60GHz × 8 Memory32GB)でクリーンビルドに2,3数時間かかった。参考程度に。