สร้าง Android

ทำตามวิธีการในหน้านี้เพื่อสร้าง 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-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 เป็น trunk_staging

  • ส่วน build_variant ของสตริงอาจเป็นค่าใดค่าหนึ่งต่อไปนี้ในตารางต่อไปนี้

    build_variant คำอธิบาย
    user เวอร์ชันของบิลด์นี้ให้สิทธิ์เข้าถึงด้านความปลอดภัยแบบจำกัด และเหมาะสำหรับเวอร์ชันที่ใช้งานจริง
    userdebug ตัวแปรบิลด์นี้ช่วยให้นักพัฒนาอุปกรณ์เข้าใจประสิทธิภาพและความสามารถของรุ่นที่กำลังพัฒนา เมื่อพัฒนาด้วยบิลด์ userdebug ให้ทำตามหลักเกณฑ์สำหรับ userdebug
    eng ตัวแปรของบิลด์นี้ใช้เวลาในการสร้างเร็วกว่าและเหมาะสําหรับการพัฒนาแบบวันต่อวันหากคุณไม่สนใจประสิทธิภาพและประสิทธิภาพ

หากคุณเรียกใช้ 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 ที่เป็นปัญหาออก