このセクションでは、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)以降に限られます。
次のステップ: ソースのダウンロード
以上でビルド環境の準備が整いました。ソースをダウンロードするに進みましょう。