CentOS7で一からAndroid(AOSP)のビルド環境を構築した際の方法です。
CentOSの環境構築
OSのインストール
今回はVMWareにCentOS7(64bit)をインストールしました。
基本的にはデフォルトままでインストールしていますので紹介は割愛しますが、ネットワークの設定は忘れずに行ってください。(後で設定するのが面倒なため)
wgetやgitなどでファイルのダウンロードがあるため、ネットワーク設定は必須です。
固定IPを割り振っておくとsshでのアクセスの際に楽です。
パッケージの導入
インストールしたばかりだと、設定に必要なパッケージもありません。
まずは、以下のパッケージをyumでインストールします。
yum -y install wget zip unzip git bc perl-Git gcc gcc-c++
JavaSDKの導入
Oracle Java 6を入れます。
Lollipop以降のビルドを行う場合は、Oracle Java 7を導入してください。
http://www.oracle.com/technetwork/java/javase/downloads/index.html
./jdk-6u45-linux-x64-rpm.bin -noregister
update-alternatives --install /usr/bin/javac javac /usr/java/jdk1.6.0_38/bin/javac 50000
update-alternatives --install /usr/bin/java java /usr/java/jdk1.6.0_45/bin/java 50000
update-alternatives --install /usr/bin/javaws javaws /usr/java/jdk1.6.0_45/bin/javaws 50000
update-alternatives --install /usr/bin/javap javap /usr/java/jdk1.6.0_45/bin/javap 50000
update-alternatives --install /usr/bin/jar jar /usr/java/jdk1.6.0_45/bin/jar 50000
update-alternatives --install /usr/bin/jarsigner jarsigner /usr/java/jdk1.6.0_45/bin/jarsigner 50000
update-alternatives --install /usr/bin/javadoc javadoc /usr/java/jdk1.6.0_45/bin/javadoc 50000
ビルドに必要なパッケージを導入する
Androidのツールがi686用のため関連するライブラリをインストールします。
yum -y install libstdc++.i686 libgcc.i686 libxml2.i686 glibc.i686 nss-softokn-freebl.i686 zlib.i686
その他ビルドで必要なパッケージを導入
ビルド時に必要と言われた以下のパッケージを導入します。
yum -y bison flex python-mako
yasmだけyumで導入できなかったので、ソースコードを取得して自分でコンパイルします。
ソースコードの取得は以下から。
http://www.tortall.net/projects/yasm/releases/
wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
tar zvxf yasm-1.3.0.tar.gz
cd yasm-1.3.0
./configure
make
make install
これで下準備は完了です。
ソースコードを取得する
Android(AOSP)のGitからソースコードを取得します。
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
mkdir android
cd android
repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.4_r2
repo sync
初回のダウンロードにはとても時間が掛かります。寝る前に仕掛けて翌朝確認のつもりが良いと思います。
一度ダウンロードしたソースコードはtarなどで固めてバックアップを取っておくと良いです。
ビルドする
cd android
source build/envsetup.sh
lunch
この時点で以下のようにどの規格向けでビルドするか聞かれます。
今回は、arm用の設定を使いました。
You're building on Linux
Lunch menu... pick a combo:
1. aosp_arm-eng
2. aosp_x86-eng
3. aosp_mips-eng
4. vbox_x86-eng
5. aosp_deb-userdebug
6. aosp_flo-userdebug
7. aosp_grouper-userdebug
8. aosp_tilapia-userdebug
9. mini_armv7a_neon-userdebug
10. mini_mips-userdebug
11. mini_x86-userdebug
12. aosp_hammerhead-userdebug
13. aosp_mako-userdebug
14. aosp_manta-userdebug
Which would you like? [aosp_arm-eng] 1
これで設定が完了したので、あとはmakeするだけです。-j4は並列処理をする数を指定します。
make -j4
私の環境だと4コア4スレッドのなので、-j4にしています。-j8とかも試しましたが、メモリ不足に陥ったりしました。
10GB以上のメモリをVMに割り振っているなら-j8なども試してみると良いと思います。
ビルドにはかなりの時間が掛かります。
寝る前に仕掛けて翌朝確認くらいのつもりでいましょう。
ビルドが完了すると、out/target/productの下にlunchで設定した規格の関連ファイル一式が出来上がっています。