Ubuntu 16.04 64bit版で Android のビルド環境を作った時のメモ。
AOSP の master、android 6.0.1、5.1.1、4.4.4 のビルドと、ビルドして出来た Emulator の起動確認をした環境。
必要なソフトのインストール
$ sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev lib32z1 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev g++-multilib tofrodos python-markdown libxml2-utils python-software-properties xsltproc libx11-dev:i386 liblz4-tool android-tools-adb android-tools-fastboot google-android-build-tools-installer bzip2 libbz2-dev libbz2-1.0 libghc-bzlib-dev squashfs-tools pngcrush schedtool dpkg-dev make optipng maven python-mako python3-mako python python3 syslinux-utils

OpenJDK と OracleJDK のインストール
$ sudo add-apt-repository ppa:openjdk-r/ppa
$ sudo apt-get update
$ sudo apt-get install openjdk-7-jdk
$ sudo apt-get install openjdk-8-jdk
$ sudo add-apt-repository ppa:webupd8team/java
$ sudo apt-get update
$ sudo apt-get install oracle-java6-installer

git/repo の設定
$ mkdir ~/bin
$ curl http://commondatastorage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ git config --global user.email "android"
$ git config --global user.name "android"
※メールアドレスとユーザ名は何でも良い。

環境変数の設定
android 6.0.1 と android-5.1.1 をビルドする場合。
~/bin/android-env.sh を作成して、以下の内容を書く。
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export ANDROID_JAVA_HOME=$JAVA_HOME
export PATH=$PATH:~/bin
ビルドする前にandroid-env.shを読み込む。
$ source ~/bin/android-env.sh

android 4.4.4 をビルドする場合。
~/bin/android-kitkat-env.sh を作成して、以下の内容を書く。
export JAVA_HOME=/usr/lib/jvm/java-6-oracle
export PATH=$PATH:$JAVA_HOME/bin
export ANDROID_JAVA_HOME=$JAVA_HOME
export PATH=$PATH:~/bin
ビルドする前に android-kitkat-env.sh を読み込む。
$ source ~/bin/android-kitkat-env.sh

master をビルドする場合。
~/bin/android-master-env.sh を作成して、以下の内容を書く。
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin
export ANDROID_JAVA_HOME=$JAVA_HOME
export PATH=$PATH:~/bin
ビルドする前に android-master-env.sh を読み込む。
$ source ~/bin/android-master-env.sh

Android のビルド確認
master の場合
$ repo init -u https://android.googlesource.com/platform/manifest
$ repo sync -j8
$ source ~/bin/android-master-env.sh
$ source build/envsetup.sh
$ lunch aosp_arm-eng
$ make -j8

android-6.0.1_r30 の場合
$ repo init -u https://android.googlesource.com/platform/manifest -b android-6.0.1_r30
$ repo sync -j8
$ source ~/bin/android-env.sh
$ source build/envsetup.sh
$ lunch aosp_arm-eng
※linker error が発生するため暫定対応。ML に投稿されてるので、いずれ解決するかも?
$ cp -a /usr/bin/x86_64-linux-gnu-ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin/ld
$ make -j8

android-5.1.1_r30 の場合
$ repo init -u https://android.googlesource.com/platform/manifest -b android-5.1.1_r30
$ repo sync -j8
$ source ~/bin/android-env.sh
$ source build/envsetup.sh
$ lunch aosp_arm-eng
※linker error が発生するため暫定対応。ML に投稿されてるので、いずれ解決するかも?
$ cp -a /usr/bin/x86_64-linux-gnu-ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.6/x86_64-linux/bin/ld
$ make -j8

android-4.4.4_r2 の場合
$ repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.4_r2
$ repo sync -j8
$ source ~/bin/android-kitkat-env.sh
$ source build/envsetup.sh
$ lunch aosp_arm-eng
※make のバージョンが 3.81 か 3.82 じゃないと弾かれるので、バージョンチェックを外す。
$ make -j8

バージョンチェックを外すパッチ。build/core/main.mkを修正する。
diff --git a/core/main.mk b/core/main.mk
index d424b25..8c696fc 100644
--- a/core/main.mk
+++ b/core/main.mk
@@ -47,7 +47,7 @@ $(warning * You are using version $(MAKE_VERSION) of make.)
$(warning * Android can only be built by versions 3.81 and 3.82.)
$(warning * see https://source.android.com/source/download.html)
$(warning ********************************************************************************)
-$(error stopping)
+#$(error stopping)
endif
endif
endif