Tạo ảnh chụp nhanh về nhà cung cấp

Android 11 hỗ trợ bản dựng tổng quan nhanh VNDK cấu phần phần mềm và ảnh chụp nhanh của nhà cung cấp. Bạn có thể sử dụng công cụ này để tạo vendor.img bất kể Phiên bản Android trên cây nguồn. Điều này cho phép các phiên bản hình ảnh kết hợp, chẳng hạn như làm nhà cung cấp cũ và hình ảnh hệ thống mới hơn.

Phiên bản hình ảnh kết hợp không được hỗ trợ cho những loại sau đây.

  • Android.mk. Vì Soong tạo thông tin tổng quan nhanh về nhà cung cấp, nên các mô-đun được xác định trong Android.mk không được ghi lại dưới dạng thông tin tổng quan nhanh về nhà cung cấp (các mô-đun thuộc quyền sở hữu riêng của SoC trong Android.mk cũng không được đảm bảo là sẽ hoạt động).

  • Chất khử trùng. Thông tin tổng quan nhanh về nhà cung cấp và VNDK không hỗ trợ công cụ dọn dẹp làm công cụ dọn dẹp bạn cần tạo riêng các biến thể.

Giới thiệu về ảnh chụp nhanh của nhà cung cấp

Thông tin tổng quan nhanh về nhà cung cấp là một bản tổng quan nhanh do OEM sở hữu. Đó là một tập hợp các mô-đun C++ được tạo sẵn đã được cài đặt trong /vendor nhưng vẫn được duy trì trên AOSP. Không yêu cầu nhà cung cấp tổng quan nhanh về phiên bản Android trước, nâng cấp lên phiên bản Android mới có thể phá vỡ phân vùng nhà cung cấp vì các mô-đun ảnh chụp nhanh của nhà cung cấp có thể bị xoá hoặc thay đổi mà không tương thích với API hay ABI.

Thông tin tổng quan nhanh về nhà cung cấp chứa các mô-đun sau trên AOSP.

  • Thư viện dùng chung, thư viện tĩnh và thư viện tiêu đề có vendor: true hoặc vendor_available: true
  • Thư viện tĩnh VNDK với vendor_available: true
  • Các tệp thực thi và tệp đối tượng có vendor: true hoặc vendor_available: true

Các mô-đun trong các thư mục sau được coi là mã phần cứng do SoC sở hữu và bị bỏ qua.

  • device/
  • vendor/
  • hardware/, ngoại trừ
    • hardware/interfaces
    • hardware/libhardware
    • hardware/libhardware_legacy

Mã phần cứng do SoC sở hữu cũng có thể tồn tại trong các thư mục khác. Tại thời điểm này, ảnh chụp nhanh của nhà cung cấp không hỗ trợ các cấu hình như vậy.

Tạo ảnh chụp nhanh về nhà cung cấp

Tạo thông tin tổng quan nhanh về nhà cung cấp bằng các lệnh sau.

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

Các lệnh này tạo một tệp vendor-$(TARGET_DEVICE).zip trong $DIST_DIR. Ví dụ sau đây cho thấy một tệp zip chứa ảnh chụp nhanh về nhà cung cấp:

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
  • Tệp JSON chứa các cờ như tên mô-đun, thư mục đã xuất, init_rc tệp và vintf_fragments tệp.
  • Thư mục configs chứa các tệp .rc.xml từ cờ init_rcvintf_fragments.

Cài đặt ảnh chụp nhanh của nhà cung cấp

Để cài đặt ảnh chụp nhanh về nhà cung cấp, hãy chuyển đến thư mục đích và sử dụng các lệnh sau.

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

Lệnh này tạo /vendor/vendor name/vendor_snapshot/vVER/$(TARGET_ARCH)/Android.bp. Ví dụ sau đây cho thấy cấu trúc thư mục của thông tin tổng quan nhanh về nhà cung cấp:

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)

Tạo hình ảnh nhà cung cấp

Sử dụng bản dựng ảnh chụp nhanh VNDK cấu phần phần mềm và thông tin tổng quan nhanh về nhà cung cấp, bạn có thể tạo vendor.img bất kể Android phiên bản trên cây nguồn, cho phép tạo các phiên bản hỗn hợp của hình ảnh. Sau khi cài đặt cả ảnh chụp nhanh VNDK và ảnh chụp nhanh của nhà cung cấp, hãy đặt BOARD_VNDK_VERSION đối với phiên bản của nhà cung cấp. Ví dụ:

# BoardConfig.mk
BOARD_VNDK_VERSION := 29

Khi bạn đặt BOARD_VNDK_VERSION thành một giá trị không phải là current, bản dựng hệ thống:

  • Bật mô-đun tổng quan nhanh VNDK và mô-đun tổng quan nhanh về nhà cung cấp của BOARD_VNDK_VERSION. Mỗi mô-đun chụp nhanh sẽ ghi đè một mô-đun nguồn C++ có cùng tên.
  • Đặt ro.vndk.version thành BOARD_VNDK_VERSION.
  • Cài đặt các mô-đun ảnh chụp nhanh VNDK của BOARD_VNDK_VERSION vào system_ext.