このセクションでは、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 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 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)以降に限られます。
macOS ビルド環境をセットアップする
デフォルト インストールの場合、macOS は、大文字 / 小文字が保持されるが区別されないファイル システム上で稼働します。Git はこのタイプのファイル システムをサポートしていないため、一部の Git コマンド(git status
など)では異常な動作が発生します。そのため、AOSP ソースファイルは、大文字 / 小文字を区別するファイル システム上で常に処理することをおすすめします。この処理を非常に簡単に実行できる方法として、ディスク イメージを使用する方法があります。詳細については、下記の説明をご覧ください。
適切なファイル システムが利用可能な場合、最新の macOS 環境で簡単に master
ブランチをビルドできます。それより前のブランチの場合、追加のツールや SDK が必要になります。
大文字 / 小文字を区別するディスク イメージを作成する
ディスク イメージを使用すると、既存の macOS 環境内で、大文字 / 小文字を区別するファイル システムを作成できます。ディスク イメージを作成するには、ディスク ユーティリティを起動して、[新規イメージ] を選択します。ビルドを完了するために最低限必要な空き容量は 250 GB です。ただし、今後の増加を考慮して、それより多くの容量を確保することをおすすめします。スパース イメージを使用すると、容量を節約しつつ、必要に応じて拡張できます。ボリューム形式として [大文字 / 小文字を区別、ジャーナリング] を選択します。
また、次のコマンドを使用して、シェルからファイル システムを作成することもできます。
hdiutil create -type SPARSE -fs 'Case-sensitive Journaled HFS+' -size 250g ~/android.dmg.sparseimage
これにより、.dmg.sparseimage
ファイルが作成されます。このファイルをマウントすると、Android 開発に必要な形式でフォーマットされたドライブとして機能します。
後で大きなボリュームが必要になった場合は、次のコマンドでスパース イメージのサイズを変更できます。
hdiutil resize -size <new-size-you-want>g ~/android.dmg.sparseimage
ホーム ディレクトリに android.dmg.sparseimage
という名前のディスク イメージを格納している場合、以下のように、~/.bash_profile
にヘルパー関数を追加します。
mountAndroid
を実行したときにイメージをマウントするには:# mount the android file image mountAndroid() { hdiutil attach ~/android.dmg.sparseimage -mountpoint /Volumes/android; }
umountAndroid
を実行したときにマウントを解除するには:# unmount the android file image umountAndroid() { hdiutil detach /Volumes/android; }
android
ボリュームをマウントした後は、すべての作業をそこで行います。外部ドライブと同様、取り外し(マウント解除)が可能です。
Xcode や他のパッケージをインストールする
- Xcode コマンドライン ツールをインストールします。
xcode-select --install
古いバージョンの macOS(10.8 以前)の場合、Apple デベロッパー サイトから Xcode をインストールする必要があります。Apple デベロッパーとして登録していない場合、ダウンロードするには、Apple ID を作成する必要があります。 - パッケージ管理のために MacPorts か Homebrew のいずれかをインストールします。
- 関連ディレクトリに関して、
~/.bash_profile
ファイル内のパスで以下のようになっているか確認します。- MacPorts -
/usr/bin
が/opt/local/bin
の前に存在する必要がある:export PATH=/opt/local/bin:$PATH
- Homebrew -
/usr/local/bin
:export PATH=/usr/local/bin:$PATH
- MacPorts の場合、次のコマンドを発行します。
POSIXLY_CORRECT=1 sudo port install git gnupg
- Homebrew の場合、次のコマンドを発行します。
brew install git gnupg2
ファイル記述子制限を設定する
macOS の場合、同時にオープンできるファイル記述子数のデフォルト上限が小さすぎるため、高度に並列的なビルドプロセスを実行する際、この制限を超える場合があります。上限を増やすには、以下の行を
~/.bash_profile
に追加します。# set the number of open files to be 1024 ulimit -S -n 1024
次のステップ: ソースのダウンロード
以上でビルド環境の準備が整いました。ソースをダウンロードするに進みましょう。
- MacPorts -