ทำตามวิธีการในหน้านี้เพื่อสร้าง Android
ตั้งค่าสภาพแวดล้อมการบิลด์
จากไดเรกทอรีที่ทำงานอยู่ ให้เรียกใช้สคริปต์ envsetup.sh
เพื่อตั้งค่าสภาพแวดล้อมการสร้าง
source build/envsetup.sh
สคริปต์นี้จะนำเข้าคำสั่งหลายรายการที่ช่วยให้คุณทำงานกับซอร์สโค้ดของ Android
ได้ ซึ่งรวมถึงคำสั่งที่ใช้ในหน้านี้ หากต้องการดูแหล่งที่มาของ
สคริปต์ โปรดดูที่
platform/build/envsetup.sh
หากต้องการดูความช่วยเหลือในตัว ให้พิมพ์ hmm
เลือกเป้าหมาย
ก่อนที่จะสร้าง Android คุณต้องระบุเป้าหมายที่จะสร้าง เป้าหมาย
แสดงถึงแพลตฟอร์มเป้าหมายที่คุณกำลังสร้าง หากต้องการระบุ
เป้าหมายที่จะสร้าง ให้ใช้คำสั่ง lunch
ตามด้วยสตริงที่แสดง
เป้าหมาย เช่น
lunch aosp_cf_x86_64_only_phone-aosp_current-userdebug
คุณควรเห็นข้อมูลสรุปของสภาพแวดล้อมเป้าหมายและสภาพแวดล้อมการสร้างดังนี้
============================================
PLATFORM_VERSION_CODENAME=Baklava
PLATFORM_VERSION=Baklava
TARGET_PRODUCT=aosp_cf_x86_64_only_phone
TARGET_BUILD_VARIANT=userdebug
TARGET_ARCH=x86_64
TARGET_ARCH_VARIANT=silvermont
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.10.11-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=BP1A.250305.020
OUT_DIR=out
============================================
สตริงที่แสดงเป้าหมายมีรูปแบบดังนี้
lunch product_name-release_config-build_variant
โดยคอมโพเนนต์ของสตริงนี้มีดังนี้
product_name
คือชื่อผลิตภัณฑ์ที่ต้องการสร้าง เช่นaosp_cf_x86_64_only_phone
หรือaosp_husky
product_name
ของคุณสามารถใช้รูปแบบของตัวเองสำหรับอุปกรณ์ได้ แต่รูปแบบที่ Google ใช้สำหรับอุปกรณ์ของตนเองมีองค์ประกอบต่อไปนี้aosp
หมายถึงแพลตฟอร์มโอเพนซอร์สของ Android- (ไม่บังคับ)
cf
จะรวมอยู่ด้วยเมื่อตั้งใจที่จะเรียกใช้เป้าหมายภายในโปรแกรมจำลอง Cuttlefish - สถาปัตยกรรมและฮาร์ดแวร์ (ชื่อรหัส) เช่น
x86_64_only_phone
หรือhusky
ซึ่งเป็นชื่อรหัสของ Pixel 8 Pro ดูรายการชื่อรหัสของ อุปกรณ์ Google ได้ที่ ชื่อรหัสของอุปกรณ์
release_config
ตั้งค่าเป็นการกำหนดค่ารุ่น เช่น การกำหนดค่ารุ่นสำหรับนักพัฒนาซอฟต์แวร์ที่ชื่อaosp_current
การกำหนดค่ารุ่นจะระบุฟีเจอร์และโค้ดบางอย่างที่อยู่เบื้องหลัง Flag การเปิดตัวฟีเจอร์ และจะเปิดหรือปิดใช้สำหรับบิลด์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าการเปิดตัวได้ที่ ตั้งค่าการเปิดตัวฟีเจอร์แฟล็กส่วน
build_variant
ของสตริงอาจเป็นค่าใดค่าหนึ่งใน 3 ค่าในตารางต่อไปนี้build_variant
คำอธิบาย user
ตัวแปรบิลด์นี้ให้สิทธิ์เข้าถึงแบบจำกัดและเหมาะสำหรับการใช้งานจริง userdebug
ตัวแปรบิลด์นี้ช่วยให้นักพัฒนาอุปกรณ์เข้าใจประสิทธิภาพและพลังของรุ่นที่อยู่ระหว่างการพัฒนา เมื่อพัฒนาด้วย userdebug
บิลด์ ให้ทำตามหลักเกณฑ์สำหรับ userdebugeng
ตัวแปรบิลด์นี้มีเวลาบิลด์ที่เร็วกว่าและเหมาะที่สุดสำหรับการพัฒนาในแต่ละวันหากคุณไม่สนใจประสิทธิภาพและพลังงาน
หากคุณเรียกใช้ lunch
โดยไม่มีอาร์กิวเมนต์ ระบบจะแสดงรายการเป้าหมายทั่วไป
นอกจากนี้ คุณยังสร้างสตริงเป้าหมายของคุณเองได้โดยการประกอบองค์ประกอบของ
สตริงเป้าหมายโดยใช้ข้อมูลในหน้านี้และชื่อรหัส
ที่แสดงถึงฮาร์ดแวร์ของ Google ที่เฉพาะเจาะจงที่
ชื่อรหัสของอุปกรณ์
ดูเป้าหมายปัจจุบัน
หากต้องการดูการตั้งค่าการเปิดตัวปัจจุบัน ให้เรียกใช้คำสั่งต่อไปนี้
$ echo "$TARGET_PRODUCT-$TARGET_BUILD_VARIANT"
สร้างโค้ด
เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างเป้าหมาย การสร้างครั้งแรกอาจใช้เวลาไม่ถึง 1 ชั่วโมงและสูงสุด 2-3 ชั่วโมง ทั้งนี้ขึ้นอยู่กับข้อกำหนดของเวิร์กสเตชัน บิลด์ต่อๆ ไปจะใช้เวลาน้อยลงอย่างมาก
m
เอาต์พุตของการสร้างจะปรากฏใน $OUT_DIR
หากคุณสร้างเป้าหมายที่แตกต่างกัน แต่ละเป้าหมายที่สร้างจะปรากฏใน
$OUT_DIR
คำสั่ง m
จะสร้างจากด้านบนของโครงสร้าง ดังนั้นคุณจึงเรียกใช้ m
จากภายใน
ไดเรกทอรีย่อยได้ หากคุณตั้งค่าตัวแปรสภาพแวดล้อม TOP
ไว้ คำสั่ง m
จะใช้ตัวแปรดังกล่าว หากไม่ได้ตั้งค่า TOP
ไว้ คำสั่ง m
จะค้นหาโครงสร้างจาก
ไดเรกทอรีปัจจุบันเพื่อหาจุดสูงสุดของโครงสร้าง
คำสั่ง m
สามารถจัดการงานแบบขนานได้ด้วยอาร์กิวเมนต์ -jN
หากคุณไม่ระบุอาร์กิวเมนต์ -j
ระบบบิลด์จะเลือกจำนวนงานแบบขนานโดยอัตโนมัติ
ซึ่งคิดว่าเหมาะสมที่สุดสำหรับระบบของคุณ
คุณสามารถสร้างโมดูลที่เฉพาะเจาะจงแทนที่จะเป็นอิมเมจอุปกรณ์แบบเต็มได้โดยการแสดงชื่อโมดูลในบรรทัดคำสั่ง m
นอกจากนี้ คำสั่ง m
ยังมีเป้าหมายจำลองบางอย่างที่เรียกว่าเป้าหมายด้วย เช่น m nothing
ไม่ได้สร้างอะไร แต่จะแยกวิเคราะห์และตรวจสอบโครงสร้างการสร้าง หากต้องการดูรายการเป้าหมายที่ถูกต้อง
ให้พิมพ์ m help
แก้ข้อผิดพลาดในการสร้าง (8.0 หรือเก่ากว่า)
หากคุณกำลังสร้าง AOSP 8 หรือเวอร์ชันก่อนหน้า m
อาจหยุดทำงานเมื่อพบปัญหาเกี่ยวกับ Java เวอร์ชันของคุณ เช่น คุณอาจได้รับข้อความต่อไปนี้
************************************************************
You are attempting to build with the incorrect version
of java.
Your version is: WRONG_VERSION.
The correct version is: RIGHT_VERSION.
Please follow the machine setup instructions at
https://source.android.com/source/initializing.html
************************************************************
สาเหตุและวิธีแก้ที่เป็นไปได้มีดังนี้
- คุณติดตั้ง JDK ที่ถูกต้องตามที่ระบุไว้ในส่วน JDK ของตั้งค่าสำหรับการพัฒนา AOSP (2.3 - 8.0) ไม่สำเร็จ
- มี JDK อื่นที่ติดตั้งไว้ก่อนหน้านี้ปรากฏในเส้นทางของคุณ เพิ่ม JDK ที่ถูกต้องที่จุดเริ่มต้นของเส้นทางหรือนำ JDK ที่มีปัญหาออก