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

ソースのダウンロード

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

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

Repo クライアントの初期化

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

  1. 作業ファイルを格納する空のディレクトリを作成します。macOS を使用している場合、このディレクトリは大文字と小文字が区別されるファイルシステム上に置く必要があります。任意の名前を付けます。

    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
    

    注: 証明書のエラーが原因で macOS で repo init が失敗する場合は、最初に以下の実行が必要になることがあります。

    # macOS only
    open /Applications/Python\ 3.6/Install\ Certificates.command
    

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

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

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

初期化が正常に終了すると、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

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

複数のクライアントを使用する際、特に帯域幅が不足している場合は、サーバー コンテンツ全体のローカルミラーを作成し、そのミラーからクライアントを同期することをおすすめします(ネットワーク アクセスは不要です)。ミラー全体をダウンロードすると、2 つのクライアントをダウンロードする場合よりもサイズが小さくなる一方で、より詳細な情報が含まれるようになります。

この手順では、ミラーが /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