สร้าง 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

ดูเป้าหมายปัจจุบัน

หากต้องการดูการตั้งค่าอาหารกลางวันปัจจุบัน ให้รัน:

$ 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 ที่มีปัญหาออก