กำลังดาวน์โหลดแหล่งที่มา

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

เริ่มต้นด้วยภาพโรงงานสำหรับอุปกรณ์ที่เฉพาะเจาะจงแทนการดาวน์โหลดแหล่งที่มาดู การเลือกสร้างอุปกรณ์

กำลังเริ่มต้นไคลเอนต์ Repo

หลังจาก ติดตั้งเปิด Repo , การตั้งค่าของลูกค้าในการเข้าถึงพื้นที่เก็บข้อมูลแหล่งที่มาของ 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
    

    เพื่อตรวจสอบสาขาหลัก:

    repo init -u https://android.googlesource.com/platform/manifest -b master
    

    เพื่อตรวจสอบสาขาอื่นที่ไม่ใช่ต้นแบบระบุว่ามี -b สำหรับรายชื่อของสาขาให้ดู แท็กรหัสที่มาและสร้าง

    สำหรับ Python2

    สำหรับ Python 3

    หากคุณได้รับ " /usr/bin/env 'python' no such file or directory " ข้อผิดพลาดอย่างใดอย่างหนึ่งของการแก้ปัญหาการใช้งานต่อไปนี้:

    หากคุณ Ubuntu 20.04.2 LTS เป็นที่ติดตั้งใหม่ (เทียบกับการอัพเกรด) รุ่นลินุกซ์:

    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 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 (เงียบ) ธง ดู 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>

เพิ่มเติมไม่ค่อยลินุกซ์ลูกค้าประสบการณ์ปัญหาการเชื่อมต่อ, การติดอยู่ในช่วงกลางของการดาวน์โหลด (โดยปกติในช่วงที่ได้รับวัตถุ) การปรับการตั้งค่าของสแต็ก 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/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 ใช้ ดูตัวอย่างไบนารี แทน เมื่อมีการสร้างสาขาต้นแบบสำหรับอุปกรณ์ใช้ไบนารีสำหรับ การเปิดตัวหมายเลขล่าสุด หรือวันที่ล่าสุด

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

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

ทำความสะอาด

เพื่อให้แน่ใจว่าไบนารีที่ติดตั้งใหม่ได้รับการพิจารณาอย่างเหมาะสมหลังจากแตกไฟล์แล้ว ให้ลบเอาต์พุตที่มีอยู่ของบิลด์ก่อนหน้าโดยใช้:

make clobber