กำลังสร้างสแนปชอตผู้ขาย Ven

Android 11 สนับสนุน VNDK ภาพรวมการสร้างสิ่งประดิษฐ์ และภาพรวมของผู้ขายซึ่งคุณสามารถใช้เพื่อสร้าง vendor.img โดยไม่คำนึงถึงรุ่น Android บนต้นไม้แหล่งที่มา ซึ่งจะทำให้อิมเมจเวอร์ชันผสม เช่น ผู้จำหน่ายรุ่นเก่าและอิมเมจระบบที่ใหม่กว่า

ไม่รองรับรูปภาพแบบผสมสำหรับสิ่งต่อไปนี้

  • Android.mk. เพราะ Soong สร้างภาพรวมของผู้จัดจำหน่ายโมดูลที่กำหนดไว้ใน Android.mk ยังไม่ได้บันทึกเป็นภาพรวมของผู้ขาย (โมดูล SoC กรรมสิทธิ์ใน Android.mk ยังไม่รับประกันว่าจะทำงาน)

  • น้ำยาฆ่าเชื้อ สแนปชอตของผู้ขายและ VNDK ไม่รองรับการฆ่าเชื้อเนื่องจากต้องสร้างตัวแปรฆ่าเชื้อแยกต่างหาก

เกี่ยวกับสแนปชอตของผู้ขาย

สแนปชอตของผู้ขายคือสแนปชอตที่ OEM เป็นเจ้าของ มันเป็นชุดของที่สร้างไว้ล่วงหน้า c ++ โมดูลติดตั้งใน /vendor แต่ยังคงอยู่บน AOSP หากไม่จับภาพสแน็ปช็อตผู้ขายของ Android เวอร์ชันก่อนหน้า การอัปเกรดเป็น Android เวอร์ชันใหม่อาจทำให้พาร์ทิชันของผู้ขายเสียหายได้ เนื่องจากโมดูลสแนปชอตของผู้ขายสามารถลบหรือเปลี่ยนแปลงได้โดยไม่ต้องใช้ API หรือ ABI

สแน็ปช็อตของผู้ขายประกอบด้วยโมดูลต่อไปนี้บน AOSP

  • ที่ใช้ร่วมกันแบบคงที่และห้องสมุดส่วนหัวกับ vendor: true หรือ vendor_available: true
  • ห้องสมุดคง VNDK กับ vendor_available: true
  • executables และไฟล์วัตถุที่มี vendor: true หรือ vendor_available: true

โมดูลภายใต้ไดเร็กทอรีต่อไปนี้ถือเป็นรหัสฮาร์ดแวร์ของ SoC และจะถูกละเว้น

  • device/
  • vendor/
  • hardware/ ยกเว้น
    • hardware/interfaces
    • hardware/libhardware
    • hardware/libhardware_legacy

รหัสฮาร์ดแวร์ที่เป็นเจ้าของ SoC อาจมีอยู่ในไดเรกทอรีอื่นด้วย ในขณะนี้ สแนปชอตของผู้ขายไม่สนับสนุนการกำหนดค่าดังกล่าว

ภาพรวมของผู้ขายอาคาร

สร้างสแน็ปช็อตของผู้ขายโดยใช้คำสั่งต่อไปนี้

. build/envsetup.sh
lunch target
m dist vendor-snapshot

คำสั่งเหล่านี้สร้าง vendor-$(TARGET_DEVICE).zip แฟ้มใน $DIST_DIR ตัวอย่างด้านล่างแสดงไฟล์ ZIP สแน็ปช็อตของผู้ขาย

vendor-$(TARGET_DEVICE).zip
├── arch-arm64-armv8-a
│   ├── binary         -> binary files, *.json files
│   ├── header         -> *.json files
│   ├── object         -> *.o files, *.json files
│   ├── shared         -> *.so files, *.json files
│   └── static         -> *.a files, *.json files
├── arch-arm-armv8-a   -> (arch-arm64-armv8-a)
├── configs            -> *.rc files, *.xml files
├── include            -> exported header files (*.h, *.hh, etc.)
└── NOTICE_FILES       -> license txt files
  • ไฟล์ JSON ประกอบด้วยธงเช่นชื่อโมดูลไดเรกทอรีส่งออก init_rc ไฟล์และ vintf_fragments ไฟล์
  • configs ไดเรกทอรีมี .rc และ .xml ไฟล์จากธง init_rc และ vintf_fragments

การติดตั้งสแน็ปช็อตของผู้ขาย

ในการติดตั้งสแน็ปช็อตของผู้ขาย ให้ไปที่ไดเร็กทอรีปลายทางและใช้คำสั่งต่อไปนี้

python3 development/vendor_snapshot/update.py --local $DIST_DIR --install-dir \
    vendor/vendor name/vendor_snapshot VER

คำสั่งนี้จะสร้าง /vendor/ vendor name /vendor_snapshot/v VER /$(TARGET_ARCH)/Android.bp ตัวอย่างต่อไปนี้แสดงโครงสร้างไดเร็กทอรีของสแน็ปช็อตของผู้จัดจำหน่าย

vendor/vendor name/vendor_snapshot/
├── v30
│   ├── arm64
│   │   ├── arch-arm64-armv8-a
│   │   │   ├── binary         -> (prebuilt libs)
│   │   │   ├── object         -> (prebuilt libs)
│   │   │   ├── shared         -> (prebuilt libs)
│   │   │   └── static         -> (prebuilt libs)
│   │   ├── arch-arm-armv8-a   -> (same as above)
│   │   ├── configs            -> (config files)
│   │   ├── include            -> (exported header files)
│   │   ├── NOTICE_FILES       -> (license files)
│   │   └── Android.bp         -> (snapshot modules)
│   ├── arm                    -> (same as above)
│   ├── x86_64                 -> (same as above)
│   └── x86                    -> (same as above)
└── (other vendor versions)    -> (same as above)

ภาพผู้ขายอาคาร

ใช้ VNDK ภาพรวมการสร้างสิ่งประดิษฐ์ และภาพรวมของผู้ขายคุณสามารถสร้าง vendor.img โดยไม่คำนึงถึงรุ่น Android บนต้นไม้แหล่งที่มาทำให้มันเป็นไปได้ที่จะสร้างรุ่นผสมของภาพ หลังจากติดตั้งทั้ง VNDK ภาพรวมและผู้ขายภาพรวมชุด BOARD_VNDK_VERSION กับรุ่นของผู้ขาย ตัวอย่างเช่น:

# BoardConfig.mk
BOARD_VNDK_VERSION := 29

เมื่อ BOARD_VNDK_VERSION ถูกกำหนดเป็นค่าอื่นนอกเหนือจาก current , การสร้างระบบ:

  • ช่วยให้ภาพรวม VNDK โมดูลและผู้ขายภาพรวมของโมดูล BOARD_VNDK_VERSION โมดูลสแน็ปช็อตแต่ละโมดูลจะแทนที่โมดูลต้นทาง C++ ที่มีชื่อเหมือนกัน
  • ชุด ro.vndk.version เพื่อ BOARD_VNDK_VERSION
  • การติดตั้งโมดูล VNDK ภาพรวมของ BOARD_VNDK_VERSION เพื่อ system_ext