ソースのダウンロード

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

ソースをダウンロードするのではなく、特定のデバイスの工場出荷時のイメージから開始するには、「デバイス ビルドの選択」を参照してください。

Repo クライアントの初期化

Repo Launcher をインストールしたら、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 を取得します。マニフェストの URL を指定する必要があります。これは、Android ソースに含まれるさまざまなリポジトリが作業ディレクトリ内のどこに配置されるかを指定します。

    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シンボリック リンクのドキュメントを参照して作成するか、サポートを有効にしてください。非管理者については、「非管理者がシンボリック リンクを作成できるようにする」セクションを参照してください。

初期化が成功すると、作業ディレクトリで Repo が初期化されたことを示すメッセージが表示されます。クライアント ディレクトリには、マニフェストなどのファイルが保持される.repoディレクトリが含まれるようになりました。

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

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

repo sync

同期を高速化するには、 -c (現在のブランチ) および-j threadcountフラグを渡します。

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 設定を変更するには、root アクセスが必要です。

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

以下のキーをコピーして貼り付け、 EOF ( Ctrl-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 は、純粋なソース コードからのみ使用することはできず、ハードウェア グラフィック アクセラレーションなど、追加のハードウェア関連の専用ライブラリを実行する必要があります。ダウンロード リンクについては以下のセクションを参照し、その他のリソースについてはデバイス バイナリを参照してください。

独自のバイナリをダウンロード

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

独自のバイナリを抽出する

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

掃除

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

make clobber