Android ソースのダウンロード

Android ソースは、Google がホストする Git リポジトリのコレクションにあります。Git リポジトリには、ソースの変更点や変更日時など、Android ソースの履歴全体が格納されています。このページでは、ソースのダウンロード方法について説明します。

Repo クライアントの初期化

クライアントを設定して Android ソース リポジトリにアクセスします。

  1. 作業ディレクトリを作成し、そこに移動します。

    $ mkdir WORKING_DIRECTORY
    $ cd WORKING_DIRECTORY
    
  2. ソース コントロールの作業ディレクトリを初期化します。

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

    -b オプションを使用して、初期化するブランチを識別します。-b が指定されていない場合、repo init はデフォルトで main ブランチに設定されます。ブランチとタグ名の一覧については、ソースコード タグとビルドをご覧ください。

    -u オプションは必須で、これを使用してマニフェスト ファイルを指定します。マニフェスト ファイルとは、Android ソースのさまざまな Git プロジェクトを作業ディレクトリ内のどこに置くかを指定する XML ファイルです。この例では、マニフェスト ファイルの名前は指定されていないので、コマンドはデフォルトのマニフェスト ファイル(default.xml)を使用します。

    出力には、以下のメッセージが含まれます。

    $ repo has been initialized in path_to_working_directory
    

マニフェスト ファイルの形式については、Repo マニフェスト形式をご覧ください。

すべての Repo コマンドの一覧については、Repo コマンド リファレンスをご覧ください。

Android ソースのダウンロード

次のコマンドを実行して、作業ディレクトリに Android ソースツリーをダウンロードします。

$ repo sync -c -j8

-c 引数で、Repo にサーバーから現在のマニフェスト ブランチを取得するよう指示します。-j8 コマンドは、早く完了するために同期をスレッド間で分割します。

この操作の所要時間は 1 時間強です。

ダウンロード中に問題が発生した場合は、同期の問題のトラブルシューティングと解決を参照してください。

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

AOSP は Cuttlefish エミュレータでは直接実行できますが、ハードウェアではデバイス固有のプロプライエタリ バイナリを追加しないと使用できません。これらのデバイス バイナリを取得する方法は次のとおりです。

  • main ブランチをダウンロードして、Nexus デバイスまたは Google Pixel デバイス向けにビルドしている場合は、バイナリ プレビュー サイトから最新のバイナリをダウンロードします。
  • main ブランチをダウンロードして、独自のデバイス向けにビルドしている場合は、デバイス固有のバイナリを指定する必要があります。
  • タグ付けされた、main 以外のブランチをダウンロードし、Nexus デバイスまたは Google Pixel デバイス向けにビルドしている場合は、Nexus デバイスと Google Pixel デバイス用のバイナリからデバイス固有のバイナリをダウンロードします。

プロプライエタリ バイナリを解凍する

バイナリの各セットは、圧縮されたアーカイブ内の自己解凍スクリプトとして提供されます。これらのバイナリを解凍してソースツリーの適切な場所にインストールする手順は次のとおりです。

  1. アーカイブを解凍します。
  2. AOSP ソースツリーのルートにある自己解凍シェル スクリプトを実行します。
  3. 同梱されている使用許諾契約の条件に同意します。ソースツリーの vendor/ 階層に、バイナリとバイナリに対応する makefile がインストールされます。

(省略可)コードの正当性の検証

Google のソースコードかどうかなど、ソースコードの正当性に懸念がある場合は、ブランチの git タグを検証できます。Git タグを検証するには:

  1. keyfile.asc など、次の主要なブロックをコピーしてテキスト ファイルに貼り付けます。

    -----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-----
    
  2. 次のコマンドを実行し、公開鍵を GnuPG 鍵データベースに入力します。この鍵は、リリースを表すアノテーション付きタグに署名するために使用されます。

    $ gpg --import keyfile.asc
    
  3. 鍵をインポートした後、次のコマンドを実行してタグを検証できます。

    $ git tag -v TAG_NAME