ซอร์สโค้ดของ Android อยู่ในคอลเล็กชันที่เก็บ Git ที่ Google โฮสต์ ที่เก็บ Git มีประวัติทั้งหมดของแหล่งที่มาของ Android รวมถึงการเปลี่ยนแปลงในแหล่งที่มาและเวลาที่มีการเปลี่ยนแปลง หน้านี้ อธิบายวิธีดาวน์โหลดซอร์สโค้ด
เริ่มต้นไคลเอ็นต์ Repo
ตั้งค่าไคลเอ็นต์เพื่อเข้าถึงที่เก็บแหล่งที่มาของ Android โดยทำดังนี้
สร้างและไปยังไดเรกทอรีที่ใช้งานอยู่
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
เริ่มต้นไดเรกทอรีการทำงานสำหรับการควบคุมแหล่งที่มาโดยทำดังนี้
repo init --partial-clone --no-use-superproject -b android-latest-release -u https://android.googlesource.com/platform/manifest
ตัวเลือก
-b
ใช้เพื่อระบุสาขาที่คุณกำลังเริ่มต้น ดู รายการชื่อสาขาและแท็กได้ที่ แท็กและบิลด์ของซอร์สโค้ด ใช้ชื่อแท็กหรือชื่อสาขาที่มี-b
ต้องระบุตัวเลือก
-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 ได้โดยตรง แต่ไม่สามารถใช้กับฮาร์ดแวร์ได้หากไม่มีไลบรารีที่เป็นกรรมสิทธิ์เฉพาะอุปกรณ์เพิ่มเติม วิธีขอรับไบนารีของอุปกรณ์มีดังนี้
- หากคุณกำลังดาวน์โหลดสาขา
main
และสร้างสำหรับอุปกรณ์ Nexus หรือ Pixel ให้ดาวน์โหลดไบนารีล่าสุดจากเว็บไซต์ตัวอย่างไบนารี - หากคุณดาวน์โหลดและสร้างกิ่ง
main
และสร้างสำหรับอุปกรณ์ของคุณเอง คุณต้องระบุไบนารีเฉพาะอุปกรณ์ - หากคุณกำลังดาวน์โหลดและสร้างกิ่งก้านที่ไม่ใช่กิ่งก้านหลักที่มีแท็กและสร้าง สำหรับอุปกรณ์ Nexus หรือ Pixel ให้ดาวน์โหลดไบนารีเฉพาะอุปกรณ์จาก ไบนารีสำหรับอุปกรณ์ Nexus และ Pixel
แยกไบนารีที่เป็นกรรมสิทธิ์
ไบนารีแต่ละชุดจะมาในรูปแบบสคริปต์ที่แตกไฟล์ได้ด้วยตัวเองในไฟล์เก็บถาวรที่บีบอัด วิธีแยกและวางไบนารีเหล่านี้ในตำแหน่งที่ถูกต้องของ แผนผังแหล่งที่มา
- แตกไฟล์ที่เก็บถาวร
- เรียกใช้สคริปต์เชลล์ที่แยกตัวเองได้ซึ่งรวมอยู่จากรูทของโครงสร้างแหล่งที่มาของ AOSP
- ยอมรับข้อกำหนดในข้อตกลงการอนุญาตให้ใช้สิทธิที่แนบมา ระบบจะติดตั้งไบนารีและ
ไฟล์ Makefile ที่ตรงกันในลำดับชั้น
vendor/
ของโครงสร้างไดเรกทอรีของแหล่งที่มา
(ไม่บังคับ) ยืนยันความถูกต้องของรหัส
หากคุณกังวลเกี่ยวกับความถูกต้องของซอร์สโค้ด เช่น โค้ดมาจาก Google หรือไม่ คุณสามารถยืนยันแท็ก Git สำหรับสาขาได้ วิธียืนยันแท็ก Git
คัดลอกและวางบล็อกคีย์ต่อไปนี้ลงในไฟล์ข้อความ เช่น
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-----
เรียกใช้คำสั่งต่อไปนี้เพื่อป้อนคีย์สาธารณะลงในฐานข้อมูลคีย์ GnuPG ระบบใช้คีย์เพื่อลงนามในแท็กที่มีคำอธิบายประกอบซึ่งแสดงถึงรุ่น
gpg --import keyfile.asc
หลังจากนำเข้าคีย์แล้ว คุณจะยืนยันแท็กใดก็ได้โดยเรียกใช้คำสั่งนี้
git tag -v TAG_NAME