Tạo ảnh chụp nhanh của nhà cung cấp

Android 11 hỗ trợ các cấu phần phần mềm của bản dựng nhanh VNDK và các bản dựng nhanh của nhà cung cấp. Bạn có thể dùng các cấu phần phần mềm 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 kết hợp các phiên bản hình ảnh, chẳng hạn như nhà cung cấp cũ và hình ảnh hệ thống mới hơn.

Chúng tôi không hỗ trợ các phiên bản hình ảnh kết hợp cho những trường hợp sau.

  • Android.mk. Vì Soong tạo ảnh chụp nhanh 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 ảnh chụp nhanh nhà cung cấp (các mô-đun độc quyền của SoC trong Android.mk cũng không đảm bảo hoạt động).

  • Dung dịch sát trùng. Ảnh chụp nhanh của nhà cung cấp và VNDK không hỗ trợ trình dọn dẹp vì các biến thể trình dọn dẹp cần được tạo riêng.

Giới thiệu về thông tin tổng quan nhanh về nhà cung cấp

Ảnh chụp nhanh nhà cung cấp là ảnh chụp nhanh do OEM sở hữu. Đây là một tập hợp các mô-đun C++ dựng sẵn được cài đặt trong /vendor nhưng được duy trì trên AOSP. Nếu không chụp ảnh nhanh nhà cung cấp của phiên bản Android trước, việc nâng cấp lên phiên bản Android mới có thể làm hỏng phân vùng nhà cung cấp vì các mô-đun ảnh nhanh nhà cung cấp có thể bị xoá hoặc thay đổi mà không có khả năng tương thích API hoặc ABI.

Ảnh chụp nhanh nhà cung cấp chứa các mô-đun sau trên AOSP.

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

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

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

Mã phần cứng thuộc sở hữu của SoC cũng có thể nằm trong các thư mục khác. Hiện tại, ả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 ảnh chụp nhanh của 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 sẽ tạo một tệp vendor-$(TARGET_DEVICE).zip trong $DIST_DIR. Ví dụ sau đây minh hoạ một tệp zip chứa bản tổng quan 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
  • Các tệp JSON chứa các cờ như tên mô-đun, thư mục đã xuất, tệp init_rc và tệp vintf_fragments.
  • Thư mục configs chứa các tệp .rc.xml từ các cờ init_rcvintf_fragments.

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

Để cài đặt một bản chụp nhanh của 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 ra /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 một ảnh chụp nhanh 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

Bằng cách sử dụng các cấu phần phần mềm của bản dựng ảnh chụp nhanh VNDK và ảnh chụp nhanh của nhà cung cấp, bạn có thể tạo vendor.img bất kể phiên bản Android trên cây nguồn, nhờ đó, bạn có thể 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 thành phiên bản của nhà cung cấp. Ví dụ:

# BoardConfig.mk
BOARD_VNDK_VERSION := 29

Khi BOARD_VNDK_VERSION được đặt thành một giá trị khác ngoài current, hệ thống xây dựng sẽ:

  • Cho phép các mô-đun ảnh chụp nhanh VNDK và mô-đun ảnh chụp nhanh của nhà cung cấp 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.