ทำตามวิธีการในหน้านี้เพื่อสร้าง Android
ตั้งค่าสภาพแวดล้อมของบิลด์
จากภายในไดเรกทอรีการทำงาน ให้ค้นหาสคริปต์ envsetup.sh
เพื่อตั้งค่า
ปรับปรุงสภาพแวดล้อมของบิลด์:
source build/envsetup.sh
สคริปต์นี้จะนำเข้าคำสั่งต่างๆ ที่ช่วยให้คุณทำงานกับ Android
ซอร์สโค้ด รวมถึงคำสั่งที่ใช้ในหน้านี้ หากต้องการดูแหล่งที่มาของ
สคริปต์, อ้างอิงถึง
platform/build/envsetup.sh
หากต้องการดูความช่วยเหลือในตัว ให้พิมพ์ hmm
เลือกเป้าหมาย
ก่อนสร้าง Android คุณต้องระบุเป้าหมายที่จะสร้าง เป้าหมาย
ให้สะท้อนถึงแพลตฟอร์มเป้าหมาย
ที่คุณกำลังสร้างอยู่ หากต้องการระบุ
กำหนดเป้าหมายไปยังบิลด์ ใช้คำสั่ง lunch
ตามด้วยสตริงที่แสดงถึง
เป้าหมาย เช่น
lunch aosp_cf_x86_64_phone-trunk_staging-userdebug
ดูเป้าหมายปัจจุบัน
หากต้องการดูการตั้งค่าอาหารกลางวันปัจจุบัน ให้เรียกใช้คำสั่งต่อไปนี้
echo "$TARGET_PRODUCT-$TARGET_RELEASE-$TARGET_BUILD_VARIANT"
สตริงที่แสดงถึงเป้าหมายจะมีรูปแบบต่อไปนี้
lunch product_name-release-build_variant
ส่วนประกอบของสตริงนี้คือ
product_name คือชื่อผลิตภัณฑ์ที่คุณต้องการ เช่น
aosp_cf_x86_64_phone
หรือaosp_husky
เฉพาะ product_name ทำตามรูปแบบสำหรับอุปกรณ์ของคุณได้ แต่รูปแบบที่ Google ใช้สำหรับอุปกรณ์มีส่วนประกอบดังนี้aosp
หมายถึงแพลตฟอร์มโอเพนซอร์สของ Android- (ไม่บังคับ)
cf
จะรวมอยู่เมื่อเป้าหมายที่จะเรียกใช้ภายใน โปรแกรมจำลองหมึกกระดอง - สถาปัตยกรรมและฮาร์ดแวร์ (ชื่อรหัส) เช่น
x86_64_phone
หรือhusky
ซึ่งเป็นชื่อรหัสของ Pixel 8 Pro สำหรับรายการชื่อรหัสของ Google โปรดดู ชื่อรหัสของอุปกรณ์
ตั้งค่า release เป็น
trunk_staging
ส่วน build_variant ของสตริงอาจเป็นสตริงใดก็ได้ ค่า 3 ค่าในตารางต่อไปนี้
build_variant คำอธิบาย user
เวอร์ชันของบิลด์นี้ให้สิทธิ์เข้าถึงด้านความปลอดภัยที่จำกัดและเหมาะสำหรับเวอร์ชันที่ใช้งานจริง userdebug
ตัวแปรของบิลด์นี้ช่วยให้นักพัฒนาแอปอุปกรณ์เข้าใจประสิทธิภาพและความสามารถของรุ่นที่อยู่ระหว่างการพัฒนา เมื่อพัฒนาด้วยบิลด์ userdebug
ให้ทำตามหลักเกณฑ์สำหรับการแก้ไขข้อบกพร่องeng
ตัวแปรของบิลด์นี้ใช้เวลาในการสร้างเร็วกว่าและเหมาะสําหรับการพัฒนาแบบวันต่อวันหากคุณไม่สนใจประสิทธิภาพและประสิทธิภาพ
หากคุณเรียกใช้ lunch
โดยไม่มีอาร์กิวเมนต์ ระบบจะแสดงรายการเป้าหมายทั่วไป
คุณยังสามารถสร้างสตริงเป้าหมายของคุณเอง โดยการนำองค์ประกอบของสิ่งต่างๆ ต่อไปนี้มาปะติดปะต่อกัน
สตริงเป้าหมายโดยใช้ข้อมูลในหน้านี้และชื่อไฟล์
ที่แสดงฮาร์ดแวร์ Google ที่เฉพาะเจาะจง
ชื่อรหัสของอุปกรณ์
สร้างโค้ด
เรียกใช้คำสั่งต่อไปนี้เพื่อสร้างเป้าหมาย ขึ้นอยู่กับข้อกำหนด ของเวิร์กสเตชัน การสร้างครั้งแรกใช้เวลาไม่ถึง 1 ชั่วโมงและนานถึง 2-3 ชั่วโมง การสร้างครั้งต่อๆ ไปจะใช้เวลาน้อยกว่าอย่างมาก
$ m
ผลลัพธ์แรกที่คุณน่าจะเห็นคือเรื่องย่อของเป้าหมายและบิลด์ สภาพแวดล้อม:
============================================
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
============================================
เอาต์พุตของบิลด์จะปรากฏใน $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 ที่เป็นปัญหาออก