Android 11 hỗ trợ các cấu phần phần mềm bản dựng tổng quan nhanh VNDK và bản tổng quan nhanh của nhà cung cấp. Bạn có thể sử 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 các phiên bản hình ảnh kết hợp, chẳng hạn như nhà cung cấp cũ và hình ảnh hệ thống mới hơn.
Các phiên bản hình ảnh kết hợp không được hỗ trợ cho những 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 trongAndroid.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 trongAndroid.mk
cũng không được đảm bảo sẽ hoạt động).Chất khử 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ề ảnh chụp nhanh nhà cung cấp
Ảnh chụp nhanh của nhà cung cấp là ảnh chụp nhanh do nhà sản xuất thiết bị gốc sở hữu. Đây là một tập hợp các mô-đun C++ tạo sẵn được cài đặt trong /vendor
nhưng được duy trì trên AOSP. Nếu không chụp ảnh chụp nhanh của nhà cung cấp 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 của 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 có khả năng tương thích với API hoặc 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, tĩnh và tiêu đề bằng
vendor: true
hoặcvendor_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ặcvendor_available: true
Các mô-đun trong các thư mục sau đây được coi là mã phần cứng do SoC sở hữu và sẽ 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. 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 của 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 tạo một tệp vendor-$(TARGET_DEVICE).zip
trong $DIST_DIR
. Ví dụ sau đây cho thấy tệp zip tổng quan 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ệpvintf_fragments
. - Thư mục
configs
chứa tệp.rc
và.xml
từ cờinit_rc
vàvintf_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 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 ả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 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, cho phép tạo các phiên bản hình ảnh kết hợp. 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 bạn đặt BOARD_VNDK_VERSION
thành một giá trị không phải là current
, hệ thống xây dựng sẽ:
- Bật các mô-đun ảnh chụp nhanh VNDK và mô-đun ảnh chụp nhanh của 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ànhBOARD_VNDK_VERSION
. - Cài đặt các mô-đun ảnh chụp nhanh VNDK của
BOARD_VNDK_VERSION
vàosystem_ext
.