下載 Android 原始碼

Android 原始碼位於 Google 代管的 Git 存放區集合中。Git 存放區包含 Android 來源的完整歷史記錄,包括原始碼變更以及變更時間。本頁面將說明如何下載來源。

初始化 Repo 用戶端

設定用戶端以存取 Android 來源存放區:

  1. 建立並前往工作目錄:

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
  2. 初始化工作目錄以進行來源控制:

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

    -b 選項可用於識別要初始化的分支。如果未提供 -b,repo init 會預設為主要分支。如需分支和標記名稱清單,請參閱「程式碼標記和版本」。

    必須使用 -u 選項,才能指定 資訊清單檔案,這是一個 XML 檔案,可指定 Android 來源中各個 Git 專案在工作目錄中的放置位置。在這個範例中,系統未指定資訊清單檔案名稱,因此指令會使用預設的資訊清單檔案 (default.xml)。

    輸出內容應包含訊息:

    repo has been initialized in path_to_working_directory

如需瞭解資訊清單檔案格式,請參閱「repo 資訊清單格式」。

如需所有 Repo 指令的清單,請參閱 Repo 指令參考資料

下載 Android 原始碼

執行下列指令,將 Android 來源樹狀結構下載至工作目錄:

$ repo sync -c -j8

-c 引數會指示 Repo 從伺服器擷取目前的資訊清單分支版本。-j8 指令會將同步作業分散至各執行緒,以便加快完成速度。

這項作業應該會在一小時內完成。

如果在下載期間遇到任何問題,請參閱排解及修正同步處理問題

下載專屬二進位檔

Android 開放原始碼計畫可以直接在 Cuttlefish 模擬器上執行,但如果沒有額外的裝置專屬專屬程式庫,就無法在硬體上使用 Android 開放原始碼計畫。取得這些裝置二進位檔的方法如下:

  • 如果您要下載 main 分支並為 Nexus 或 Pixel 裝置進行建構,請從二進位檔預覽網站下載最新的二進位檔。
  • 如果您要下載及建構 main 分支,並為自己的裝置進行建構,則必須提供裝置專屬的二進位檔。
  • 如果您要下載及建構 Nexus 或 Pixel 裝置的已標記、非主要分支版本和建構項目,請從 Nexus 和 Pixel 裝置的二進位檔下載裝置專屬二進位檔。

擷取專屬二進位檔

每組二進位檔都是在壓縮封存檔中作為自我擷取指令碼。如何擷取這些二進位檔,並放在來源樹狀結構的正確位置:

  1. 將封存檔解壓縮。
  2. 從 AOSP 原始碼樹狀結構的根目錄執行隨附的自動解壓縮殼層指令碼。
  3. 同意隨附授權協議的條款。二進位檔和相符的 Makefile 會安裝在來源樹狀結構的 vendor/ 階層中。

(選用) 驗證代碼合法性

如果您擔心來源程式碼是否合法 (例如是否來自 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