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

Android 11 hỗ trợ các tạo phẩm xây dựng ảnh chụp nhanh VNĐK và ảnh chụp nhanh của nhà cung cấp mà bạn có thể sử dụng để xây dựng 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 hỗn hợp, chẳng hạn như nhà cung cấp cũ hơn và hình ảnh hệ thống mới hơn.

Các phiên bản hình ảnh hỗn hợp không được hỗ trợ cho các trường hợp sau.

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

  • Thuốc khử trùng. Ảnh chụp nhanh của nhà cung cấp và VNDK không hỗ trợ chất khử trùng vì các biến thể chất khử trùng cần được xây dựng riêng.

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

Ảnh chụp nhanh của nhà cung cấp là ảnh chụp nhanh thuộc sở hữu của OEM. Đó 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 nhanh ảnh chụp 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ể phá vỡ phân vùng nhà cung cấp vì các mô-đun ảnh chụp nhanh nhà cung cấp có thể bị xóa hoặc thay đổi mà không có khả năng tương thích API hoặc ABI.

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

  • Thư viện được chia sẻ, tĩnh và tiêu đề với 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à đố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.

Ảnh chụp nhanh của nhà cung cấp tòa nhà

Tạo ảnh chụp nhanh 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 tệp vendor-$(TARGET_DEVICE).zip trong $DIST_DIR . Ví dụ dưới đây hiển thị tệp ZIP ảnh chụp nhanh của 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 ảnh chụp nhanh của nhà cung cấp, hãy điều hướng đế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/v VER /$(TARGET_ARCH)/Android.bp . Ví dụ sau đây cho thấy cấu trúc thư mục của ả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)

Xây dựng hình ảnh nhà cung cấp

Sử dụng các tạo phẩm xây dựng ảnh chụp nhanh VNĐK và ảnh chụp nhanh của nhà cung cấp, bạn có thể xây dựng vendor.img bất kể phiên bản Android nào trên cây nguồn, giúp có thể tạo các phiên bản hình ảnh hỗn hợp. Sau khi cài đặt cả snapshot của VNĐK và snapshot 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 giá trị khác với giá trị current , hệ thống xây dựng:

  • Kích hoạt mô-đun chụp nhanh VNĐK và mô-đun chụp nhanh nhà cung cấp của BOARD_VNDK_VERSION . Mỗi mô-đun ảnh chụp nhanh sẽ ghi đè mô-đun nguồn C++ có cùng tên.
  • Đặt ro.vndk.version thành BOARD_VNDK_VERSION .
  • Cài đặt mô-đun chụp nhanh VNĐK của BOARD_VNDK_VERSION vào system_ext .