ทำตามวิธีการในหน้านี้เพื่อสร้าง Android
ตั้งค่าสภาพแวดล้อมการสร้าง
จากภายในไดเรกทอรีที่ทำงาน ให้เรียกใช้สคริปต์ envsetup.sh
เพื่อตั้งค่าสภาพแวดล้อมการสร้าง
source build/envsetup.sh
สคริปต์นี้จะนำเข้าคำสั่งหลายรายการที่ช่วยให้คุณทำงานกับซอร์สโค้ด Android ได้ รวมถึงคำสั่งที่ใช้ในหน้านี้ หากต้องการดูแหล่งที่มาของสคริปต์ ให้ไปที่ platform/build/envsetup.sh
หากต้องการดูความช่วยเหลือในตัว ให้พิมพ์ hmm
เลือกเป้าหมาย
ก่อนสร้าง Android คุณต้องระบุเป้าหมายที่จะสร้าง เป้าหมายจะแสดงแพลตฟอร์มเป้าหมายที่คุณกำลังสร้าง หากต้องการระบุเป้าหมายที่จะสร้าง ให้ใช้คําสั่ง lunch
ตามด้วยสตริงที่แสดงถึงเป้าหมาย เช่น
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
คุณควรเห็นข้อมูลสรุปของเป้าหมายและสภาพแวดล้อมการสร้างดังนี้
============================================
PLATFORM_VERSION_CODENAME=VanillaIceCream
PLATFORM_VERSION=VanillaIceCream
PRODUCT_INCLUDE_TAGS=com.android.mainline
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a-neon
TARGET_CPU_VARIANT=generic
HOST_OS=linux
HOST_OS_EXTRA=Linux-6.5.13-1rodete2-amd64-x86_64-Debian-GNU/Linux-rodete
HOST_CROSS_OS=windows
BUILD_ID=AOSP.MAIN
OUT_DIR=out
============================================
สตริงที่แสดงถึงเป้าหมายมีรูปแบบดังนี้
lunch product_name-release_config-build_variant
คอมโพเนนต์ของสตริงนี้มีดังนี้
product_name
คือชื่อผลิตภัณฑ์ที่ต้องการสร้าง เช่นaosp_cf_x86_64_phone
หรือaosp_husky
product_name
เฉพาะของคุณอาจใช้รูปแบบของคุณเองสำหรับอุปกรณ์ แต่รูปแบบที่ Google ใช้สำหรับอุปกรณ์จะมีคอมโพเนนต์ต่อไปนี้aosp
หมายถึงแพลตฟอร์มโอเพนซอร์ส Android- (ไม่บังคับ)
cf
จะรวมอยู่ด้วยเมื่อตั้งใจให้เป้าหมายทำงานภายในโปรแกรมจำลอง Cuttlefish - สถาปัตยกรรมและฮาร์ดแวร์ (ชื่อรหัส) เช่น
x86_64_phone
หรือhusky
ซึ่งเป็นชื่อรหัสของ Pixel 8 Pro ดูรายการชื่อรหัสของอุปกรณ์ Google ได้ที่ชื่อรหัสของอุปกรณ์
release_config
มีการตั้งค่าเป็นการกำหนดค่ารุ่น เช่น การกำหนดค่ารุ่นสำหรับการพัฒนาที่ชื่อtrunk_staging
การกําหนดค่ารุ่นจะระบุฟีเจอร์และโค้ดบางอย่างที่อยู่เบื้องหลัง Flag การเปิดตัวฟีเจอร์ และเปิดหรือปิดใช้ฟีเจอร์นั้นสําหรับบิลด์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการกําหนดค่ารุ่นได้ที่ตั้งค่าค่าการเปิดตัว Flag ฟีเจอร์ส่วน
build_variant
ของสตริงอาจเป็นค่าใดค่าหนึ่งต่อไปนี้ในตารางต่อไปนี้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 ที่มีปัญหาออก