แผนผังต้นทางของ Android ตั้งอยู่ในพื้นที่เก็บข้อมูล Git ที่โฮสต์โดย Google พื้นที่เก็บข้อมูล Git มีข้อมูลเมตาสำหรับแหล่งที่มาของ Android รวมถึงการเปลี่ยนแปลงแหล่งที่มาและเวลาที่มีการเปลี่ยนแปลง หน้านี้อธิบายวิธีการดาวน์โหลดแผนผังซอร์สสำหรับบรรทัดโค้ด Android เฉพาะ
หากต้องการเริ่มต้นด้วยอิมเมจจากโรงงานสำหรับอุปกรณ์เฉพาะแทนที่จะดาวน์โหลดแหล่งที่มา โปรดดู การเลือกบิลด์อุปกรณ์
กำลังเริ่มต้นไคลเอ็นต์ Repo
หลังจาก ติดตั้ง Repo Launcher แล้ว ให้ตั้งค่าไคลเอนต์ของคุณให้เข้าถึงแหล่งเก็บข้อมูล Android:
สร้างไดเร็กทอรีว่างเพื่อเก็บไฟล์งานของคุณ ตั้งชื่อตามที่คุณชอบ:
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY
กำหนดค่า Git ด้วยชื่อจริงและที่อยู่อีเมลของคุณ หากต้องการใช้เครื่องมือตรวจสอบโค้ด Gerrit คุณต้องมีที่อยู่อีเมลที่เชื่อมต่อกับ บัญชี Google ที่ลงทะเบียน แล้ว ตรวจสอบให้แน่ใจว่านี่คือที่อยู่จริงที่คุณสามารถรับข้อความได้ ชื่อที่คุณระบุที่นี่จะแสดงในการระบุแหล่งที่มาสำหรับการส่งโค้ดของคุณ
git config --global user.name Your Name
git config --global user.email you@example.com
เรียกใช้
repo init
เพื่อรับ Repo เวอร์ชันล่าสุดพร้อมการแก้ไขข้อบกพร่องล่าสุด คุณต้องระบุ URL สำหรับรายการ ซึ่งระบุตำแหน่งที่เก็บข้อมูลต่างๆ ที่รวมอยู่ในแหล่งที่มาของ Android จะถูกวางไว้ภายในไดเร็กทอรีการทำงานของคุณrepo init -u https://android.googlesource.com/platform/manifest
หากต้องการตรวจสอบสาขาหลัก:
repo init -u https://android.googlesource.com/platform/manifest -b main
หากต้องการตรวจสอบสาขา อื่นที่ไม่ใช่ main ให้ระบุด้วย
-b
สำหรับรายชื่อสาขา โปรดดูที่แท็กซอร์สโค้ดและบิลด์สำหรับหลาม 2
สำหรับหลาม 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 หรือสูงกว่า คุณสามารถระบุ
--partial-clone
เมื่อดำเนินการrepo init
สิ่งนี้ใช้ความสามารถ โคลนบางส่วน ของ Git เพื่อดาวน์โหลดออบเจ็กต์ Git เมื่อจำเป็นเท่านั้น แทนที่จะดาวน์โหลดทุกอย่าง เนื่องจากการใช้โคลนบางส่วนหมายความว่าการดำเนินการหลายอย่างต้องสื่อสารกับเซิร์ฟเวอร์ ให้ใช้สิ่งต่อไปนี้หากคุณเป็นนักพัฒนาและคุณกำลังใช้เครือข่ายที่มีเวลาแฝงต่ำ:repo init -u https://android.googlesource.com/platform/manifest -b main --partial-clone --clone-filter=blob:limit=10M
สำหรับระบบปฏิบัติการ Windows เท่านั้น: หากคุณได้รับข้อความแสดงข้อผิดพลาดที่ระบุว่าไม่สามารถสร้างลิงก์สัญลักษณ์ได้ ทำให้การเริ่มต้น
repo init
เหลว ให้อ้างอิง เอกสาร GitHub Symbolic Links เพื่อสร้างลิงก์เหล่านี้ หรือเพื่อเปิดใช้งานการสนับสนุน สำหรับผู้ที่ไม่ใช่ผู้ดูแลระบบ โปรดดูส่วน การอนุญาตให้ผู้ที่ไม่ใช่ผู้ดูแลระบบสร้างลิงก์สัญลักษณ์
การเริ่มต้นที่สำเร็จจะจบลงด้วยข้อความระบุว่า Repo ได้รับการเตรียมใช้งานในไดเร็กทอรีการทำงานของคุณ ขณะนี้ไดเร็กทอรีไคลเอ็นต์ของคุณมีไดเร็กทอรี .repo
ซึ่งเก็บไฟล์ต่างๆ เช่น manifest ไว้
กำลังดาวน์โหลดแผนผังต้นทางของ Android
หากต้องการดาวน์โหลดแผนผังต้นทางของ Android ไปยังไดเร็กทอรีการทำงานของคุณจากที่เก็บตามที่ระบุไว้ในรายการเริ่มต้น ให้รัน:
repo sync
หากต้องการเร่งความเร็วในการซิงค์ ให้ส่งแฟล็ก -c
(สาขาปัจจุบัน) และ -j threadcount
:
repo sync -c -j8
ไฟล์ต้นฉบับของ Android จะถูกดาวน์โหลดลงในไดเร็กทอรีการทำงานของคุณภายใต้ชื่อโปรเจ็กต์
หากต้องการระงับเอาต์พุต ให้ส่งแฟล็ก -q
(เงียบ) ดู การอ้างอิงคำสั่ง Repo สำหรับตัวเลือกทั้งหมด
การใช้การรับรองความถูกต้อง
ตามค่าเริ่มต้น การเข้าถึงซอร์สโค้ดของ Android จะไม่ระบุชื่อ เพื่อป้องกันเซิร์ฟเวอร์จากการใช้งานมากเกินไป ที่อยู่ IP แต่ละรายการจะเชื่อมโยงกับโควต้า
เมื่อแชร์ที่อยู่ IP กับผู้ใช้รายอื่น (เช่น เมื่อเข้าถึงแหล่งเก็บข้อมูลต้นทางจากนอกเหนือจากไฟร์วอลล์ NAT) โควต้าสามารถทริกเกอร์ได้แม้จะเป็นรูปแบบการใช้งานปกติ (เช่น หากผู้ใช้จำนวนมากซิงค์ไคลเอนต์ใหม่จากที่อยู่ IP เดียวกันภายใน ช่วงสั้น ๆ).
ในกรณีดังกล่าว คุณสามารถใช้การเข้าถึงที่ผ่านการรับรองความถูกต้อง ซึ่งจากนั้นจะใช้โควต้าแยกต่างหากสำหรับผู้ใช้แต่ละราย โดยไม่คำนึงถึงที่อยู่ IP
ขั้นแรก สร้างรหัสผ่านด้วย ตัวสร้างรหัสผ่าน และปฏิบัติตามคำแนะนำในหน้าตัวสร้างรหัสผ่าน
ถัดไป บังคับเข้าถึงการตรวจสอบสิทธิ์โดยใช้ไฟล์ Manifest 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:
sudo sysctl -w net.ipv4.tcp_window_scaling=0
repo sync -j1
การใช้กระจกท้องถิ่น
เมื่อใช้ไคลเอนต์หลายตัว คุณสามารถสร้างมิเรอร์ในเครื่องของเนื้อหาเซิร์ฟเวอร์ทั้งหมด และซิงค์ไคลเอนต์จากมิเรอร์นั้น (ซึ่งไม่จำเป็นต้องเข้าถึงเครือข่าย)
คำแนะนำเหล่านี้ถือว่ามิเรอร์ถูกสร้างขึ้นใน /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/main
cd /usr/local/aosp/main
repo init -u /usr/local/aosp/mirror/platform/manifest.git
repo sync
สุดท้าย หากต้องการซิงค์ไคลเอ็นต์กับเซิร์ฟเวอร์ ให้ซิงค์มิเรอร์กับเซิร์ฟเวอร์ จากนั้นจึงซิงค์ไคลเอ็นต์กับมิเรอร์:
cd /usr/local/aosp/mirror
repo sync
cd /usr/local/aosp/main
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 ให้ใช้ Binaries Preview แทน เมื่อสร้างสาขาหลักสำหรับอุปกรณ์ ให้ใช้ไบนารีสำหรับ รีลีสที่มีหมายเลขล่าสุด หรือวันที่ล่าสุด
แยกไบนารีที่เป็นกรรมสิทธิ์
ไบนารีแต่ละชุดมาเป็นสคริปต์ที่ขยายในตัวในไฟล์บีบอัด คลายการบีบอัดไฟล์เก็บถาวรแต่ละรายการ รันสคริปต์ที่ขยายในตัวที่รวมมาจากรากของแผนผังต้นทาง จากนั้นยืนยันว่าคุณยอมรับเงื่อนไขของข้อตกลงสิทธิ์การใช้งานที่แนบมาด้วย ไบนารีและ makefiles ที่ตรงกันได้รับการติดตั้งใน vendor/
ลำดับชั้นของแผนผังต้นทาง
ทำความสะอาด
เพื่อให้แน่ใจว่าไบนารีที่ติดตั้งใหม่จะถูกนำมาพิจารณาอย่างเหมาะสมหลังจากแตกไฟล์ ให้ลบเอาต์พุตที่มีอยู่ของบิลด์ก่อนหน้าโดยใช้:
make clobber