หมึกกระดอง: สร้างอุปกรณ์ตามสั่ง

หน้านี้จะอธิบายวิธีสร้างอุปกรณ์ Cuttlefish ที่กําหนดเอง หมึกกระดอง รวมประเภทอุปกรณ์ที่กำหนดไว้ล่วงหน้าในรูปแบบของอุปกรณ์ต่างๆ ตามที่ระบุไว้ใน AndroidProducts.mk นอกเหนือจากตัวเลือกการปรับแต่งอุปกรณ์ทั่วไปที่อธิบายไว้ในการเพิ่มอุปกรณ์ใหม่แล้ว คุณสามารถปรับแต่งเฉพาะสำหรับ Cuttlefish เช่น ค่าที่กำหนดล่วงหน้าของกระดานอุปกรณ์เสมือนจริง (vsoc_x88_64, vsoc_arm64, vsoc_riscv64), เคอร์เนลที่สร้างไว้ล่วงหน้า, การกำหนดค่าผู้ให้บริการบูตโหลดเดอร์, การกำหนดค่าการสนับสนุนระบบ, ตัวเลือกระบบซ้อน ดูรายการพารามิเตอร์เวลาสร้างทั้งหมดที่ปรับแต่งได้ได้ที่ device/google/cuttlefish/vsoc_x86_64/phone/aosp_cf.mk

ขั้นตอนต่อไปนี้จะอธิบายวิธีสร้างอุปกรณ์ x86-64 สมมติbig_phoneที่มีขนาดเป็น 10 เท่าของอุปกรณ์ Cuttlefish ธรรมดา

รับค่าจากเป้าหมายที่มีอยู่

วิธีรับค่าจากเป้าหมายที่มีอยู่

  • สร้างไดเรกทอรี device/google/cuttlefish/vsoc_x86_64/big_phone
  • สร้างไฟล์ aosp_cf.mk ในไดเรกทอรีนั้น
$(call inherit-product, device/google/cuttlefish/vsoc_x86_64_phone.mk)

PRODUCT_NAME: big_phone
PRODUCT_DEVICE: vsoc_x86_64
PRODUCT_MANUFACTURER := My Company
PRODUCT_MODEL: My Company very large phone

PRODUCT_VENDOR_PROPERTIES += \
    ro.soc.manufacturer=$(PRODUCT_MANUFACTURER) \
    ro.soc.model=$(PRODUCT_DEVICE)

เพิ่มเป้าหมายอาหารกลางวัน

แทรกเป้าหมาย lunch ลงในไฟล์ device/google/cuttlefish/AndroidProducts.mk

PRODUCT_MAKEFILES := \
  ...
  big_phone:$(LOCAL_DIR)/vsoc_x86_64/big_phone/aosp_cf.mk
  ...
lunch big_phone

กำหนดการกำหนดค่า JSON

หากต้องการเปิดใช้งานอุปกรณ์ Cuttlefish ให้สร้างไฟล์การกำหนดค่า JSON ชื่อ big_phone.json ซึ่งมีโครงสร้างตามลําดับชั้นที่แสดงถึงคุณสมบัติของอุปกรณ์ เช่น ในไฟล์การกําหนดค่า JSON คุณสามารถระบุตัวเลือกต่างๆ เช่น RAM ที่จัดสรรสําหรับ VM และการกําหนดค่าการแสดงผล ไฟล์นี้ไม่จำเป็นต้องอยู่ในต้นไม้ AOSP โปรดดูรายละเอียดเกี่ยวกับรูปแบบ JSON สําหรับการกําหนดค่าที่หัวข้อการกําหนดค่าตามแบบฉบับ

{
  "instances":
      [
        {
          "vm": {
            "memory_mb": 40960,
          },
          "graphics": {
            "displays": [
              {
                "width": 7200,
                "height": 12800,
                "dpi": 320
              }
            ]
          }
        }
      ]
}

หากต้องการเปิดใช้งานการกําหนดค่า ให้เรียกใช้

cvd create --config_file=big_phone.json

เรียกใช้ Launch_cvd (เดิม)

คุณสมบัติการกําหนดค่าบางอย่างไม่พร้อมใช้งานในรูปแบบการกําหนดค่า JSON แบบลําดับชั้น สําหรับการกําหนดค่าดังกล่าว คุณสามารถตั้งค่าlaunch_cvd flag ค่าเริ่มต้นจากพจนานุกรม JSON ระดับเดียว ดูรายการตัวเลือกการกำหนดค่าทั้งหมดได้ที่ cf_flags_validator.cpp

ข้อมูลต่อไปนี้จะอธิบายตัวอย่างวิธีลบล้างค่าเริ่มต้นของตัวเลือก Flag launch_cvd โดยใช้ไฟล์การกำหนดค่า JSON และเปิดใช้ Cuttlefish launcher เพื่อเปิดตัวการกำหนดค่าที่กำหนดเอง

  1. สร้างไฟล์การกําหนดค่า JSON device/google/cuttlefish/shared/config/config_big_phone.json ซึ่งมีค่าที่กําหนดเอง

    {
      "x_res": 7200,
      "y_res": 12800,
      "dpi": 320,
      "memory_mb": 40960,
      "ddr_mem_mb": 49150,
    }
    
  2. หากต้องการให้ Launcher ของ Cuttlefish เปิดการกำหนดค่า big_phone ขึ้นมา ให้ตรวจสอบว่าโปรแกรมดังกล่าวมีสิทธิ์เข้าถึงไฟล์ device/google/cuttlefish/shared/config/config_big_phone.json โดยทำตามขั้นตอนต่อไปนี้

    1. ประกาศอาร์ติแฟกต์ JSON เป็นอาร์ติแฟกต์บิลด์ด้วยการเพิ่มสตริง prebuilt_etc_host ในไฟล์ device/google/cuttlefish/shared/config/Android.bp

      prebuilt_etc_host {
          name: "cvd_config_big_phone.json",
          src: "config_big_phone.json",
          sub_dir: "cvd_config",
      }
      
    2. เพิ่มการประกาศอาร์ติแฟกต์ของบิลด์ที่ได้ลงใน Launcher ของ Cuttlefish โดยเรียกใช้คำสั่งต่อไปนี้ใน device/google/cuttlefish/shared/device.mk

      $(call soong_config_append,cvd,launch_configs,cvd_config_big_phone)
      
    3. สร้างไฟล์ android_info.txt และเชื่อมโยงการกําหนดค่า big_phone กับไฟล์โดยเพิ่มบรรทัดต่อไปนี้ลงใน device/google/cuttlefish/vsoc_x86_64/big_phone/aosp_cf.mk

      TARGET_BOARD_INFO_FILE := device/google/cuttlefish/vsoc_x86_64/<var>big_phone</var>/android-info.txt
      
    4. ติดป้ายกํากับประเภทอุปกรณ์ด้วยการกำหนดค่า big_phone โดยป้อนข้อมูลใน device/google/cuttlefish/vsoc_x86_64/big_phone/android-info.txt ดังนี้

      config=big_phone