ดาวน์โหลดแหล่งที่มาของ Android

แหล่งที่มาของ Android อยู่ในคอลเล็กชันที่เก็บ Git ที่โฮสต์โดย Google ที่เก็บ Git มีประวัติทั้งหมดของซอร์สโค้ด Android รวมถึงการเปลี่ยนแปลงในซอร์สโค้ดและเวลาที่ทําการเปลี่ยนแปลง หน้านี้จะอธิบายวิธีดาวน์โหลดแหล่งที่มา

เริ่มต้นไคลเอ็นต์ที่เก็บ

ตั้งค่าไคลเอ็นต์เพื่อเข้าถึงที่เก็บต้นทางของ Android โดยทำดังนี้

  1. สร้างและไปยังไดเรกทอรีที่ใช้งานอยู่

    mkdir WORKING_DIRECTORY
    cd WORKING_DIRECTORY
  2. เริ่มต้นไดเรกทอรีทํางานสําหรับการควบคุมแหล่งที่มา

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

    ตัวเลือก -b จะใช้เพื่อระบุ Branch ที่คุณกำลังเริ่มต้น หากไม่ได้ระบุ -b repo init จะถือเป็นสาขาหลักโดยค่าเริ่มต้น ดูรายการสาขาและชื่อแท็กได้ที่แท็กและบิลด์ของซอร์สโค้ด

    คุณต้องระบุตัวเลือก -u เพื่อใช้ระบุไฟล์ manifest ซึ่งเป็นไฟล์ XML ที่ระบุตำแหน่งของโปรเจ็กต์ Git ต่างๆ ในซอร์สโค้ด Android ภายในไดเรกทอรีทํางาน ในตัวอย่างนี้ ไม่ได้ระบุชื่อไฟล์ Manifest ดังนั้นคำสั่งจะใช้ไฟล์ Manifest เริ่มต้น (default.xml)

    เอาต์พุตควรมีข้อความดังนี้

    repo has been initialized in path_to_working_directory

ดูข้อมูลเกี่ยวกับรูปแบบไฟล์ Manifest ได้ที่รูปแบบไฟล์ Manifest ของ repo

ดูรายการคำสั่ง Repo ทั้งหมดได้ที่ข้อมูลอ้างอิงคำสั่ง Repo

ดาวน์โหลดซอร์สโค้ด Android

เรียกใช้คำสั่งต่อไปนี้เพื่อดาวน์โหลดซอร์สโค้ดของ Android ลงในไดเรกทอรีที่ทำงานอยู่

$ repo sync -c -j8

อาร์กิวเมนต์ -c จะสั่งให้ Repo ดึงข้อมูลสาขาไฟล์ Manifest ปัจจุบันจากเซิร์ฟเวอร์ คำสั่ง -j8 แยกการซิงค์ในชุดข้อความต่างๆ เพื่อการดำเนินการที่เร็วขึ้น

การดำเนินการนี้ควรใช้เวลาประมาณ 1 ชั่วโมง

หากพบปัญหาระหว่างการดาวน์โหลด โปรดดูหัวข้อแก้ปัญหาการซิงค์

ดาวน์โหลดไบนารีที่เป็นกรรมสิทธิ์

AOSP สามารถทำงานบนโปรแกรมจำลอง Cuttlefish ได้โดยตรง แต่จะใช้ AOSP ในฮาร์ดแวร์ไม่ได้หากไม่มีไลบรารีที่เป็นกรรมสิทธิ์เฉพาะอุปกรณ์เพิ่มเติม วิธีการรับไบนารีของอุปกรณ์มีดังนี้

  • หากคุณกำลังดาวน์โหลดสาขา main และบิลด์สำหรับอุปกรณ์ Nexus หรือ Pixel ให้ดาวน์โหลดไบนารีล่าสุดจากเว็บไซต์ตัวอย่างไบนารี
  • หากกำลังดาวน์โหลดและสร้างสาขา main และสร้างสำหรับอุปกรณ์ของคุณเอง คุณต้องระบุไบนารีสำหรับอุปกรณ์ของคุณโดยเฉพาะ
  • หากคุณกำลังดาวน์โหลดและสร้างสาขาที่ไม่ใช่สาขาหลักที่ติดแท็กและสร้างสำหรับอุปกรณ์ Nexus หรือ Pixel ให้ดาวน์โหลดไบนารีสำหรับอุปกรณ์โดยเฉพาะจากไบนารีสำหรับอุปกรณ์ Nexus และ Pixel

แยกไฟล์ไบนารีที่เป็นกรรมสิทธิ์

ชุดไบนารีแต่ละชุดจะมาพร้อมกับสคริปต์ที่แตกไฟล์เองในไฟล์เก็บถาวรที่บีบอัด วิธีแยกและวางไบนารีเหล่านี้ไว้ในตำแหน่งที่ถูกต้องของต้นไม้ซอร์สโค้ด

  1. แตกไฟล์ที่เก็บถาวร
  2. เรียกใช้สคริปต์เชลล์แบบแยกไฟล์เองที่รวมมาด้วยจากรูทของต้นไม้ซอร์สโค้ด AOSP
  3. ยอมรับข้อกำหนดในข้อตกลงการอนุญาตให้ใช้สิทธิที่แนบมา ระบบจะติดตั้งไฟล์ไบนารีและไฟล์ make ที่ตรงกันในลําดับชั้น 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