ソースのダウンロード

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

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

Repo のインストール

Repo は、Android で Git を使いやすくするツールです。Repo の詳細については、Repo コマンド リファレンスRepo の README をご覧ください。

Repo は 2 つの要素で構成されています。1 つはインストールするランチャー スクリプトです。これは、もう 1 つの要素であるソースコードのチェックアウトに含まれる完全な Repo ツールと通信します。Repo をインストールするには:

  1. bin/ ディレクトリがホーム ディレクトリにあり、パスに含まれていることを確認します。

        mkdir ~/bin
        PATH=~/bin:$PATH
        
  2. Repo ランチャーをダウンロードし、実行可能であることを確認します。

        curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
        chmod a+x ~/bin/repo
        

バージョン 1.25 の場合、Repo の SHA-256 チェックサムは d06f33115aea44e583c8669375b35aad397176a411de3461897444d247b6c220 です。

バージョン 1.26 の場合、Repo の SHA-256 チェックサムは 0cf5f52bcafb8e1d3ba0271b087312f6117b824af272bedd4ee969d52363a86b です。

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
        

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

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

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

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

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

repo sync

Android ソースファイルは、作業ディレクトリのプロジェクト名の下にあります。同期を高速化するには、-jthreadcount フラグを使用します。また、-qc を追加して、現在のブランチのみにサイレント同期を実行することも検討してください。詳細については、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