สร้างอุปกรณ์แบบผสม Cuttlefish

หน้านี้จะอธิบายวิธีสร้างอุปกรณ์ไฮบริด Cuttlefish (CHD)

CHD คืออุปกรณ์ Cuttlefish เสมือนแบบไฮบริด ซึ่งเรียกใช้อิมเมจระบบของอุปกรณ์จริงแทนอิมเมจระบบ Cuttlefish ใน HAL ของอุปกรณ์ ซึ่งมีข้อดีดังนี้

  • การพัฒนาและการทดสอบในช่วงแรก: CHD ช่วยให้สามารถพัฒนาและทดสอบซอฟต์แวร์ระบบรุ่นถัดไปได้ก่อนที่จะมีฮาร์ดแวร์จริง

  • ความสามารถในการปรับขนาด: CHD ช่วยให้ขยายความสามารถในการพัฒนาและการทดสอบได้ง่ายขึ้น

สร้าง Image ของ CHD

หากต้องการสร้าง Image ของ CHD ให้ทำตามขั้นตอนต่อไปนี้

  1. สร้างไฟล์เป้าหมายสำหรับเป้าหมายของผู้ให้บริการและอุปกรณ์จริงโดยใช้ make dist สร้างไฟล์เป้าหมายของผู้ให้บริการโดยใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

  2. รวมไฟล์เป้าหมาย 2 ไฟล์เป็นไฟล์เป้าหมายของ CHD และสร้าง Image ของ CHD จากไฟล์เป้าหมายของ CHD โดยเรียกใช้ build_cf_hybrid_device.py สคริปต์ สคริปต์นี้จะรวมไฟล์เป้าหมาย 2 ไฟล์เป็นไฟล์เป้าหมายของ CHD โดยใช้ merge_target_files.py และสร้าง Image ของ CHD จากไฟล์เป้าหมายของ CHD โดยใช้ img_from_target_files

    python3 tools/treble/cuttlefish/build_cf_hybrid_device.py \
      --framework_target_files_zip <physical_device_target_files.zip> \
      --vendor_target_files_zip <cuttlefish_device_target_files.zip> \
      --otatools_zip <cuttlefish_otatools.zip> \
      --target chd \
      --output_dir <output_directory>
    

สร้างเป้าหมายของผู้ให้บริการ Cuttlefish

คุณสามารถใช้ aosp_cf_vendor.mk เพื่อกำหนดเป้าหมาย aosp_cf_arm64_phone_vendor ซึ่งคุณสามารถใช้เป็นไฟล์เป้าหมายของผู้ให้บริการ สำหรับ Image ของ CHD ได้

หากต้องการสร้างเป้าหมายของผู้ให้บริการ Cuttlefish เท่านั้น ให้ทำตามขั้นตอนต่อไปนี้

  1. สืบทอดเป้าหมาย Cuttlefish ที่สร้างอาร์ติแฟกต์แบบเต็ม

    $(call inherit-product, device/google/cuttlefish/vsoc_arm64/phone/aosp_cf.mk)
    
  2. กำหนดชื่อเป้าหมาย

    PRODUCT_NAME := aosp_cf_arm64_phone_vendor
    
  3. ปิดใช้การสร้างที่ไม่จำเป็นจากอาร์ติแฟกต์แบบเต็ม

    PRODUCT_BUILD_SYSTEM_IMAGE := false
    PRODUCT_BUILD_SYSTEM_OTHER_IMAGE := false
    PRODUCT_BUILD_PRODUCT_IMAGE := false
    PRODUCT_BUILD_SYSTEM_EXT_IMAGE := false
    PRODUCT_BUILD_SUPER_PARTITION := false
    TARGET_SKIP_OTA_PACKAGE := true