การสร้างสภาพแวดล้อมในการสร้าง

ส่วนนี้อธิบายวิธีตั้งค่าสภาพแวดล้อมการทำงานในพื้นที่ของคุณเพื่อสร้างไฟล์ต้นฉบับของ Android คุณต้องใช้ลินุกซ์; ไม่รองรับการสร้างภายใต้ MacOS หรือ Windows อย่าลืมการเปลี่ยนแปลงที่สำคัญของไบนารี /usr/bin/python ด้วย

สำหรับภาพรวมของกระบวนการตรวจสอบโค้ดและการอัปเดตโค้ดทั้งหมด โปรดดูที่ Life of a Patch

การเลือกสาขา

ข้อกำหนดบางประการสำหรับสภาพแวดล้อมการสร้างถูกกำหนดโดยเวอร์ชันของซอร์สโค้ดที่คุณวางแผนจะคอมไพล์ สำหรับรายชื่อสาขาทั้งหมด โปรดดูที่ Build Numbers คุณยังสามารถเลือกดาวน์โหลดและสร้างซอร์สโค้ดล่าสุด (เรียกว่า master ) ซึ่งในกรณีนี้ คุณเพียงแค่ละเว้นข้อกำหนดสาขาเมื่อคุณเริ่มต้นที่เก็บ

หลังจากเลือกสาขาแล้ว ให้ทำตามคำแนะนำที่เหมาะสมด้านล่างเพื่อตั้งค่าสภาพแวดล้อมการสร้างของคุณ

การตั้งค่าสภาพแวดล้อมการสร้าง Linux

คำแนะนำเหล่านี้ใช้ได้กับทุกสาขา รวมถึง master .

บิลด์ Android ได้รับการทดสอบเป็นประจำในบ้านบน Ubuntu LTS (14.04) และการทดสอบเดเบียน ดิสทริบิวชันอื่นๆ ส่วนใหญ่ควรมีเครื่องมือสร้างที่จำเป็น

สำหรับ Gingerbread (2.3.x) และเวอร์ชันที่สูงกว่า รวมถึง master แบรนช์ จำเป็นต้องมีสภาพแวดล้อมแบบ 64 บิต รุ่นเก่ากว่าสามารถคอมไพล์บนระบบ 32 บิต

การติดตั้งแพ็คเกจที่จำเป็น (Ubuntu 18.04)

คุณต้องมี Ubuntu รุ่น 64 บิต

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

การติดตั้งแพ็คเกจที่จำเป็น (Ubuntu 14.04)

คุณต้องใช้ Ubuntu รุ่น 64 บิต (แนะนำให้ใช้ 14.04)

sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev libxml2-utils xsltproc unzip

การติดตั้งแพ็คเกจที่จำเป็น (Ubuntu 12.04)

คุณสามารถใช้ Ubuntu 12.04 เพื่อสร้าง Android เวอร์ชันเก่าได้ ไม่รองรับเวอร์ชัน 12.04 ในเวอร์ชัน master หรือเวอร์ชันล่าสุด

sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

การติดตั้งแพ็คเกจที่จำเป็น (Ubuntu 10.04-11.10)

ไม่รองรับการสร้างบน Ubuntu 10.04-11.10 อีกต่อไป แต่อาจมีประโยชน์สำหรับการสร้าง AOSP รุ่นเก่ากว่า

sudo apt-get install git gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev ia32-libs x11proto-core-dev libx11-dev lib32readline5-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc

บน Ubuntu 10.10:

sudo ln -s /usr/lib32/mesa/libGL.so.1 /usr/lib32/mesa/libGL.so

บน Ubuntu 11.10:

sudo apt-get install libx11-dev:i386

การกำหนดค่าการเข้าถึง USB

ติดตั้งชุดกฎ udev เริ่มต้นที่ดูแลโดยชุมชนสำหรับอุปกรณ์ Android ทั้งหมดโดยทำตามคำแนะนำเพื่อ ตั้งค่าอุปกรณ์สำหรับการพัฒนา

การใช้ไดเร็กทอรีเอาต์พุตแยกต่างหาก

โดยค่าเริ่มต้น เอาต์พุตของแต่ละบิลด์จะถูกเก็บไว้ในไดเร็กทอรีย่อย out/ ของทรีต้นทางที่ตรงกัน คุณสามารถแทนที่ได้โดยการส่งออกตัวแปรสภาพแวดล้อม OUT_DIR ตัวอย่างเช่น:

export OUT_DIR=out_mytarget

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

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

ในการตั้งค่านี้ ให้ส่งออกตัวแปร OUT_DIR_COMMON_BASE เพื่อชี้ไปยังตำแหน่งที่จะจัดเก็บไดเรกทอรีเอาต์พุตของคุณ

export OUT_DIR_COMMON_BASE=<path-to-your-out-directory>

ไดเร็กทอรีเอาต์พุตสำหรับทรีต้นทางแยกแต่ละอันตั้งชื่อตามไดเร็กทอรีที่มีทรีต้นทาง ตัวอย่างเช่น หากคุณมีซอร์ส /source/master1 และ /source/master2 master2 และหาก OUT_DIR_COMMON_BASE ถูกตั้งค่าเป็น /output output ไดเร็กทอรีเอาต์พุตจะเป็น /output/master1 และ /output/master2 /master2

หลีกเลี่ยงการมีทรีต้นทางหลายต้นจัดเก็บไว้ในไดเร็กทอรีที่มีชื่อเหมือนกัน เนื่องจากแผนผังต้นทางจะจบลงด้วยการแชร์ไดเร็กทอรีเอาต์พุตด้วยผลลัพธ์ที่คาดเดาไม่ได้ รองรับเฉพาะ Jelly Bean (4.1) และสูงกว่า รวมถึง master แบรนช์

ถัดไป: ดาวน์โหลดซอร์ส

สภาพแวดล้อมการสร้างของคุณพร้อมแล้ว! ดำเนินการ ดาวน์โหลดแหล่งที่มา