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

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

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

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

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

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

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

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

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

สำหรับ 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 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 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 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 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 และหากตั้งค่า OUT_DIR_COMMON_BASE เป็น / /output ไดเร็กทอรีเอาต์พุตจะเป็น /output/master1 และ /output/master2

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

ถัดไป: ดาวน์โหลดแหล่งที่มา

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