ทำตามคำแนะนำในหน้านี้เพื่อสร้าง 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_BUILD_VARIANT"
สตริงที่แสดงถึงเป้าหมายมีรูปแบบดังต่อไปนี้:
lunch product_name-release-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)
-
release ถูกตั้งค่าเป็น
trunk_staging
ส่วน build_variant ของสตริงสามารถเป็นหนึ่งในสามค่าในตารางต่อไปนี้:
build_variant คำอธิบาย user
เวอร์ชัน build นี้ให้การเข้าถึงความปลอดภัยที่จำกัด และเหมาะสำหรับการใช้งานจริง userdebug
เวอร์ชันบิวด์นี้ช่วยให้นักพัฒนาอุปกรณ์เข้าใจถึงประสิทธิภาพและประสิทธิภาพของรุ่นที่กำลังพัฒนา เมื่อพัฒนาด้วย build userdebug
ให้ปฏิบัติตาม แนวทางสำหรับ userdebugอังกฤษ เวอร์ชันบิวด์นี้มีเวลาในการสร้างที่เร็วกว่า และเหมาะที่สุดสำหรับการพัฒนาในแต่ละวัน หากคุณไม่สนใจเกี่ยวกับประสิทธิภาพและพลัง
สร้างโค้ด
รันคำสั่งต่อไปนี้เพื่อสร้างเป้าหมายของคุณ ขึ้นอยู่กับข้อกำหนดของเวิร์กสเตชันของคุณ การสร้างครั้งแรกอาจใช้เวลาน้อยกว่าหนึ่งชั่วโมงถึงสองสามชั่วโมง การสร้างครั้งต่อไปใช้เวลาน้อยลงอย่างมาก
$ 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
============================================
คำสั่ง m
สร้างขึ้นจากด้านบนของแผนผัง ดังนั้นคุณจึงสามารถรัน m
จากภายในไดเร็กทอรีย่อยได้ หากคุณมีชุดตัวแปรสภาพแวดล้อม TOP
คำสั่ง m
จะใช้ชุดดังกล่าว หากไม่ได้ตั้ง TOP
ไว้ คำสั่ง m
จะค้นหาแผนผังจากไดเร็กทอรีปัจจุบัน โดยพยายามค้นหาส่วนบนสุดของแผนผัง
คำสั่ง m
สามารถจัดการงานแบบขนานด้วยอาร์กิวเมนต์ -jN
หากคุณไม่ได้ระบุอาร์กิวเมนต์ -j
ระบบบิลด์จะเลือกจำนวนงานแบบขนานที่คิดว่าเหมาะสมที่สุดสำหรับระบบของคุณโดยอัตโนมัติ
คุณสามารถสร้างโมดูลเฉพาะแทนอิมเมจอุปกรณ์แบบเต็มได้โดยการแสดงรายการชื่อโมดูลในบรรทัดคำสั่ง m
ของคุณ นอกจากนี้ คำสั่ง m
จัดเตรียมเป้าหมายเทียมบางเป้าหมาย เรียกว่า Goal ตัวอย่างเช่น 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 ที่มีปัญหาออก