ビルド環境を構築する

このセクションでは、Android ソースファイルをビルドするためのローカル作業環境をセットアップする方法について説明します。Linux を使用する必要があります。MacOS または Windows でのビルドはサポートされません。また、/usr/bin/python バイナリに関する重要な変更にも注意してください。

コードレビューおよびコード更新プロセス全体の概要については、パッチのライフサイクルをご覧ください。

ブランチを選択する

ビルド環境の要件の一部は、コンパイルするソースコードのバージョンによって決まります。利用可能なブランチの完全なリストについては、ビルド番号をご覧ください。また、最新のソースコード(master と呼ばれます)をダウンロードしてビルドすることもできます。その場合、リポジトリを初期化するときのブランチの指定は不要です。

ブランチを選択したら、以下の手順に沿ってビルド環境をセットアップします。

Linux ビルド環境をセットアップする

下記の手順は、master を含むすべてのブランチに適用されます。

Google では、Android ビルドに対し、内部で定期的に Ubuntu LTS(14.04)と Debian に関するテストを行っています。他のディストリビューションに関してもほとんどの場合、必要なビルドツールが用意されています。

master ブランチを含め、Gingerbread(2.3.x)以降のバージョンでは、64 ビット環境が必要となります。それよりも古いバージョンの場合は、32 ビットシステムでもコンパイル可能です。

必須パッケージをインストールする(Ubuntu 18.04 以降)

64 ビット版の Ubuntu が必要です。

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

必須パッケージをインストールする(Ubuntu 14.04)

64 ビット版の Ubuntu が必要です(14.04 を推奨します)。

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

必須パッケージをインストールする(Ubuntu 12.04)

Ubuntu 12.04 を使用して、古いバージョンの Android をビルドできます。バージョン 12.04 は、master リリースや最近のリリースではサポートされていません。

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

必須パッケージをインストールする(Ubuntu 10.04~11.10)

Ubuntu 10.04~11.10 上でのビルドはサポートが終了していますが、古い AOSP リリースをビルドする際に役立つ場合があります。

sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev mingw32 tofrodos python-markdown libxml2-utils xsltproc

Ubuntu 10.10 の場合:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

Ubuntu 11.10 の場合:

sudo apt-get install libx11-dev:i386

USB アクセスを設定する

すべての Android デバイスに対し、コミュニティが管理するデフォルト udev ルールセットをインストールします。手順の詳細については、開発用デバイスをセットアップするをご覧ください。

個別の出力ディレクトリを使用する

デフォルトでは、各ビルドの出力は、合致するソースツリーの out/ サブディレクトリに格納されます。これは OUT_DIR 環境変数をエクスポートすることでオーバーライドできます。次に例を示します。

export OUT_DIR=out_mytarget

これにより、ビルドの出力がソースツリーの out_mytarget/ サブディレクトリに格納されます。同じソースツリーを使用して複数のターゲットをビルドする場合は、ターゲットごとに個別の OUT_DIR を使用することを推奨します。

複数のストレージ デバイスを備えたマシンの場合、ソースファイルと出力を別々のボリュームに保存することで、ビルドが高速になります。ファイル システムが破損してもすべてのファイルを再生成できるため、クラッシュに対する堅牢性よりも速度を重視して最適化されたファイル システムに出力を保存することで、パフォーマンスを高めることができます。

そのように設定するには、出力ディレクトリを保存する場所を指定して OUT_DIR_COMMON_BASE 変数をエクスポートします。

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

各ソースツリーの出力ディレクトリは、そのソースツリーを保持するディレクトリに基づいて名前が付けられます。たとえば、/source/master1/source/master2 というソースツリーがあり、OUT_DIR_COMMON_BASE/output に設定されている場合、出力ディレクトリはそれぞれ /output/master1/output/master2 になります。

複数のソースツリーを同一の名前のディレクトリ内に格納しないようにしてください。ソースツリーが出力ディレクトリを共有することになり、予期しない結果が生じます。この機能がサポートされるのは、master ブランチを含め、Jelly Bean(4.1)以降に限られます。

次のステップ: ソースのダウンロード

以上でビルド環境の準備が整いました。ソースをダウンロードするに進みましょう。