Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

ビルド環境を構築する

このセクションでは、Android ソースファイルをビルドするためのローカル作業環境をセットアップする方法について説明します。Linux を使用する必要があります。MacOS または Windows でのビルドはサポートされません。

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

ブランチを選択する

ビルド環境の要件の一部は、コンパイルするソースコードのバージョンによって決まります。利用可能なブランチの完全なリストについては、ビルド番号をご覧ください。また、最新のソースコード(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 gcc-multilib g++-multilib libc6-dev-i386 libncurses5-dev 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 gcc-multilib g++-multilib libc6-dev-i386 libncurses5-dev 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 g++-multilib 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 g++-multilib 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_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)以降に限られます。

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

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