ソースのダウンロード

Android ソースツリーは、Google がホストする Git リポジトリにあります。Git リポジトリには、Android ソースのメタデータが含まれています。これには、ソースの変更と変更が行われた日時が含まれます。このページでは、特定の Android コードラインのソースツリーをダウンロードする方法について説明します。

ソースをダウンロードせず、特定のデバイスのファクトリー イメージから開始するには、デバイスビルドを選択するをご覧ください。

Repo クライアントの初期化

Repo ランチャーをインストールしたら、クライアントを設定して、Android ソース リポジトリにアクセスします。

  1. 作業ファイルを格納する空のディレクトリを作成します。ディレクトリに任意の名前を付けます。

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
    
  2. 実際のユーザー名とメールアドレスを使用して Git を構成します。Gerrit コードレビュー ツールを使用するには、登録済みの Google アカウントに関連付けられたメールアドレスが必要です。メッセージを受信できる有効なメールアドレスであることをご確認ください。ここで指定した名前は、コード送信の属性に表示されます。

    git config --global user.name Your Name
    git config --global user.email you@example.com
    
  3. repo init を実行して、最新のバグ修正を含む最新バージョンの Repo を入手します。Android ソースに含まれる各種のリポジトリが作業ディレクトリ内のどこに配置されるかを指定するマニフェストの URL を指定する必要があります。

    repo init -u https://android.googlesource.com/platform/manifest
    

    master ブランチをチェックアウトするには、次のコマンドを実行します。

    repo init -u https://android.googlesource.com/platform/manifest -b master
    

    master 以外のブランチをチェックアウトするには、-b で指定します。 ブランチのリストについては、ソースコード タグとビルドをご覧ください。

    Python 2 の場合

    Python 3 の場合

    /usr/bin/env 'python' no such file or directory」というエラー メッセージが表示された場合は、次のいずれかの解決策をお試しください。

    Ubuntu 20.04.2 LTS が、新規インストールされた(アップグレードとの比較)Linux バージョンである場合:

    sudo ln -s /usr/bin/python3 /usr/bin/python

    Git バージョン 2.19 以上を使用している場合は、repo init を実行する際に --partial-clone を指定できます。そうすると、Git の部分クローン機能を使用して、すべてをダウンロードするのではなく、必要に応じて Git オブジェクトのみをダウンロードできます。部分クローンを使用すると、多くのオペレーションがサーバーと通信する必要が生じるので、低レイテンシのネットワークを使用しているデベロッパーの場合は、次のコマンドを使用してください。

    repo init -u https://android.googlesource.com/platform/manifest -b master --partial-clone --clone-filter=blob:limit=10M
    

    Windows OS のみ: シンボリック リンクを作成できなかったというエラー メッセージが表示されて repo init が失敗した場合は、GitHub のシンボリック リンクに関するドキュメントを参照して、シンボリック リンクを作成するか、シンボリック リンクのサポートを有効にします。管理者以外のユーザーの場合は、「Allowing non-administrators to create symbolic links」セクションをご覧ください。

初期化が正常に終了すると、Repo が作業ディレクトリで初期化されたというメッセージが表示されます。クライアント ディレクトリの下に、マニフェストなどのファイルが保存される .repo ディレクトリが作成されます。

Android ソースツリーのダウンロード

Android ソースツリーを、デフォルトのマニフェストで指定されているリポジトリから作業ディレクトリにダウンロードするには、次のコマンドを実行します。

repo sync

同期を高速化するには、-c フラグ(現在のブランチ)と -jthreadcount フラグを指定します。

repo sync -c -j8

Android ソースファイルは、作業ディレクトリのプロジェクト名の下にダウンロードされます。

出力を抑制するには、-q(quiet)フラグを渡します。すべてのオプションについては、Repo コマンド リファレンスをご覧ください。

認証の使用

デフォルトでは、Android ソースコードへのアクセスは匿名です。サーバーの過剰な使用を防ぐため、各 IP アドレスは割り当てに関連付けられています。

IP アドレスを他のユーザーと共有する場合(たとえば、NAT ファイアウォールの外からソース リポジトリにアクセスする場合)、通常の使用パターン(短期間のうちに多数のユーザーが同じ IP アドレスから新しいクライアントを同期するなど)であっても、割り当てがトリガーされる場合があります。

その場合、認証済みアクセスを使用できます。これは、IP アドレスに関係なく、ユーザーごとに個別の割り当てを使用するものです。

まず、パスワード生成ツールを使用してパスワードを作成し、パスワード生成ツールのページの指示に沿って操作します。

次に、マニフェスト URI(https://android.googlesource.com/a/platform/manifest)を使用して、認証済みアクセスを必須にします。/a/ ディレクトリ プレフィックスによって必須認証がトリガーされることにご注意ください。既存のクライアントが必須認証を使用するように変更するには、次のコマンドを使用します。

repo init -u https://android.googlesource.com/a/platform/manifest

ネットワーク問題のトラブルシューティング

プロキシ環境でダウンロードする場合(これは一部の企業環境では一般的です)、通常は、Repo が使用するプロキシを次のように明示的に指定する必要があります。

export HTTP_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>
export HTTPS_PROXY=http://<proxy_user_id>:<proxy_password>@<proxy_server>:<proxy_port>

まれに、Linux クライアントで接続の問題が発生し、(通常はオブジェクトの受信中に)ダウンロードが途中で止まることがあります。TCP/IP スタックの設定を調整して非並列コマンドを使用すると、状況を改善できます。TCP 設定を変更するには、ルートアクセス権限が必要です。

sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1

ローカル ミラーリングの使用

複数のクライアントを使用する場合、サーバー コンテンツ全体のローカル ミラーを作成し、そのミラーからクライアントを同期できます(ネットワーク アクセスは必要ありません)。

この手順では、ミラーが /usr/local/aosp/mirror に作成されていることが前提となります。まず、ミラー自体を作成して同期します。--mirror は、新しいクライアントの作成時にのみ指定できることにご注意ください。

mkdir -p /usr/local/aosp/mirror
cd /usr/local/aosp/mirror
repo init -u https://android.googlesource.com/mirror/manifest --mirror
repo sync

ミラーが同期されたら、ミラーから新しいクライアントを作成できます。次のように、必ず絶対パスを指定する必要があります。

mkdir -p /usr/local/aosp/master
cd /usr/local/aosp/master
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync

最後に、クライアントをサーバーと同期するため、ミラーをサーバーと同期してから、クライアントをミラーと同期します。

cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/master
repo sync

LAN サーバーにミラーを保存して、NFS、SSH、Git のいずれかでミラーにアクセスすることが可能です。また、ミラーをリムーバブル ドライブに保存して、そのドライブをユーザーまたはマシン間でやり取りすることもできます。

Git タグの検証

次の公開鍵を GnuPG 鍵データベースに読み込みます。この鍵は、リリースを表すアノテーション付きタグに署名するために使用されます。

gpg --import

以下の鍵をコピーして貼り付けた後、EOFCtrl+D)を使用して入力を終了し、鍵を処理します。

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.2.2 (GNU/Linux)

mQGiBEnnWD4RBACt9/h4v9xnnGDou13y3dvOx6/t43LPPIxeJ8eX9WB+8LLuROSV
lFhpHawsVAcFlmi7f7jdSRF+OvtZL9ShPKdLfwBJMNkU66/TZmPewS4m782ndtw7
8tR1cXb197Ob8kOfQB3A9yk2XZ4ei4ZC3i6wVdqHLRxABdncwu5hOF9KXwCgkxMD
u4PVgChaAJzTYJ1EG+UYBIUEAJmfearb0qRAN7dEoff0FeXsEaUA6U90sEoVks0Z
wNj96SA8BL+a1OoEUUfpMhiHyLuQSftxisJxTh+2QclzDviDyaTrkANjdYY7p2cq
/HMdOY7LJlHaqtXmZxXjjtw5Uc2QG8UY8aziU3IE9nTjSwCXeJnuyvoizl9/I1S5
jU5SA/9WwIps4SC84ielIXiGWEqq6i6/sk4I9q1YemZF2XVVKnmI1F4iCMtNKsR4
MGSa1gA8s4iQbsKNWPgp7M3a51JCVCu6l/8zTpA+uUGapw4tWCp4o0dpIvDPBEa9
b/aF/ygcR8mh5hgUfpF9IpXdknOsbKCvM9lSSfRciETykZc4wrRCVGhlIEFuZHJv
aWQgT3BlbiBTb3VyY2UgUHJvamVjdCA8aW5pdGlhbC1jb250cmlidXRpb25AYW5k
cm9pZC5jb20+iGAEExECACAFAknnWD4CGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIX
gAAKCRDorT+BmrEOeNr+AJ42Xy6tEW7r3KzrJxnRX8mij9z8tgCdFfQYiHpYngkI
2t09Ed+9Bm4gmEO5Ag0ESedYRBAIAKVW1JcMBWvV/0Bo9WiByJ9WJ5swMN36/vAl
QN4mWRhfzDOk/Rosdb0csAO/l8Kz0gKQPOfObtyYjvI8JMC3rmi+LIvSUT9806Up
hisyEmmHv6U8gUb/xHLIanXGxwhYzjgeuAXVCsv+EvoPIHbY4L/KvP5x+oCJIDbk
C2b1TvVk9PryzmE4BPIQL/NtgR1oLWm/uWR9zRUFtBnE411aMAN3qnAHBBMZzKMX
LWBGWE0znfRrnczI5p49i2YZJAjyX1P2WzmScK49CV82dzLo71MnrF6fj+Udtb5+
OgTg7Cow+8PRaTkJEW5Y2JIZpnRUq0CYxAmHYX79EMKHDSThf/8AAwUIAJPWsB/M
pK+KMs/s3r6nJrnYLTfdZhtmQXimpoDMJg1zxmL8UfNUKiQZ6esoAWtDgpqt7Y7s
KZ8laHRARonte394hidZzM5nb6hQvpPjt2OlPRsyqVxw4c/KsjADtAuKW9/d8phb
N8bTyOJo856qg4oOEzKG9eeF7oaZTYBy33BTL0408sEBxiMior6b8LrZrAhkqDjA
vUXRwm/fFKgpsOysxC6xi553CxBUCH2omNV6Ka1LNMwzSp9ILz8jEGqmUtkBszwo
G1S8fXgE0Lq3cdDM/GJ4QXP/p6LiwNF99faDMTV3+2SAOGvytOX6KjKVzKOSsfJQ
hN0DlsIw8hqJc0WISQQYEQIACQUCSedYRAIbDAAKCRDorT+BmrEOeCUOAJ9qmR0l
EXzeoxcdoafxqf6gZlJZlACgkWF7wi2YLW3Oa+jv2QSTlrx4KLM=
=Wi5D
-----END PGP PUBLIC KEY BLOCK-----

鍵をインポートした後、次のコマンドを使用してタグを検証できます。

git tag -v TAG_NAME

プロプライエタリ バイナリの取得

AOSP は純粋なソースコードのみでは使用できず、ハードウェア グラフィック アクセラレーションなど、追加のハードウェア関連のプロプライエタリ ライブラリの実行が必要です。追加のリソースのダウンロード リンクとデバイス バイナリについては、下記のセクションをご覧ください。

プロプライエタリ バイナリのダウンロード

Google のドライバから、タグ付けされた AOSP のリリース ブランチを実行するサポート対象デバイスの公式バイナリをダウンロードできます。これらのバイナリにより、非オープン ソースコードを使用する追加ハードウェア機能にアクセスできるようになります。AOSP master ブランチをビルドする場合は、代わりにバイナリ プレビューを使用します。デバイスの master ブランチをビルドする場合は、最新のリリース番号のバイナリか、最新の日付を持つバイナリを使用します。

プロプライエタリ バイナリの抽出

バイナリの各セットは、圧縮されたアーカイブ内の自己解凍スクリプトとして提供されます。各アーカイブを解凍し、ソースツリーのルートにある自己解凍スクリプトを実行して、同梱されている使用許諾契約の条件に同意します。ソースツリーの vendor/ 階層に、バイナリとバイナリに対応する makefile がインストールされます。

クリーンアップ

新しくインストールされたバイナリが抽出後に適切に処理されるようにするには、次のコマンドを使用して以前のビルドによる既存の出力を削除します。

make clobber