Hình ảnh hệ thống có thể sử dụng ảnh chụp nhanh của VNDK để cung cấp đúng VNDK thư viện đến hình ảnh của nhà cung cấp ngay cả khi hình ảnh hệ thống và nhà cung cấp được tạo từ các phiên bản Android khác nhau. Việc tạo ảnh chụp nhanh VNDK cần chụp Các thư viện VNDK như một phần tổng quan nhanh và đánh dấu các thư viện này bằng số phiên bản. Chiến lược phát hành đĩa đơn hình ảnh nhà cung cấp có thể liên kết với một phiên bản VNDK cụ thể cung cấp các ABI bắt buộc cho các mô-đun trong ảnh nhà cung cấp. Tuy nhiên, trong cùng một phiên bản VNDK, các thư viện VNDK phải Ổn định theo ABI.
Thiết kế ảnh chụp nhanh VNDK bao gồm các phương thức để tạo ra tạo sẵn bản tổng quan nhanh VNDK từ ảnh hệ thống hiện tại và đang cài đặt các lib tạo sẵn đó vào phân vùng hệ thống của phiên bản Android mới.
Giới thiệu về thư viện VNDK
HIDL-HAL, được giới thiệu trong Android 8.0, cho phép nâng cấp riêng biệt cho các phân vùng của hệ thống và nhà cung cấp. VNDK xác định các tập hợp thư viện (VNDK-core, VNDK-SP và LL-NDK) mà mã nhà cung cấp có thể liên kết và ngăn chặn nhà cung cấp sử dụng các thư viện không thuộc VNDK thiết lập. Do đó, hình ảnh nhà cung cấp có thể được xây dựng và chạy nếu VNDK thích hợp các nhóm trên ảnh hệ thống được cung cấp cho ảnh nhà cung cấp.
lõi VNDK
Bộ thư viện VNDK-core được cài đặt trong
/system/lib[64]/vndk-${VER}
và có sẵn
chỉ dành cho các quy trình của nhà cung cấp có cấp độ API bằng
${VER}
. Các quy trình của hệ thống có thể không sử dụng các thư viện này và phải
thay vào đó, hãy sử dụng các thư viện được cài đặt trong /system/lib[64]
. Bởi vì
về hạn chế không gian tên nghiêm ngặt cho mỗi quy trình, thư viện VNDK-core
đều an toàn với khả năng tải kép.
Để đưa một thư viện vào VNDK-core, hãy thêm đoạn mã sau vào
Android.bp
:
vendor_available: true, vndk: { enabled: true, },
VNDK-SP
Thư viện VNDK-SP được cài đặt trong /system/lib[64]/vndk-sp-${VER}
và sẵn có cho các quy trình và quy trình hệ thống của nhà cung cấp (thông qua SP-HAL
thư viện được cài đặt trong phân vùng nhà cung cấp). Thư viện VNDK-SP có thể
tải kép.
Để đưa một thư viện vào VNDK-SP, hãy thêm đoạn mã sau vào Android.bp
:
vendor_available: true, vndk: { enabled: true, support_system_process: true, },
LL-NDK
Thư viện LL-NDK được cài đặt trong /system/lib[64]
. Mô-đun nhà cung cấp
có thể dùng các thư viện mã giả lập LL-NDK để truy cập vào các ký hiệu được chọn trước của LL-NDK
thư viện. Thư viện LL-NDK phải có khả năng tương thích ngược và ổn định với ABI
cho phép phiên bản cũ của các mô-đun nhà cung cấp sử dụng phiên bản mới của thư viện LL-NDK.
Do các đặc điểm ổn định trên ABI của LL-NDK, ảnh chụp nhanh VNDK
không cần thêm thư viện LL-NDK cho hình ảnh cũ của nhà cung cấp.
Giới thiệu về ảnh chụp nhanh VNDK
Android 8.1 có VNDK thư viện được tạo từ mã nguồn. Tuy nhiên, với các phiên bản sau này của Với Android, mỗi phiên bản VNDK phải được ghi lại dưới dạng một ảnh chụp nhanh và được cung cấp dưới dạng một tạo trước để cho phép liên kết với hình ảnh nhà cung cấp cũ hơn.
Kể từ Android 9, các phiên bản Android mới sẽ
có ít nhất một ảnh chụp nhanh các thư mục VNDK-core và VNDK-SP cho
các phiên bản trong mã nguồn Android. Trong thời gian xây dựng, các bản tổng quan nhanh bắt buộc sẽ
được cài đặt vào /system/lib[64]/vndk-${VER}
và
/system/lib[64]/vndk-sp-${VER}
(thư mục có thể được sử dụng bởi
phân vùng nhà cung cấp), trong đó ${VER}
là biến chuỗi
là tên phiên bản của ảnh chụp nhanh VNDK.
Vì các thư viện tổng quan nhanh của VNDK có thể khác nhau đối với từng phiên bản VNDK, nên
ảnh chụp nhanh cũng bao gồm các cấu hình không gian tên trình liên kết, được cài đặt dưới dạng
etc/ld.config.${VER}.txt
,
/etc/llndk.libraries.${VER}.txt
và
/etc/vndksp.libraries.${VER}.txt
.
Ví dụ: Nâng cấp hệ thống và nhà cung cấp hình ảnh
Không cần ảnh chụp nhanh; bản dựng không có cấu hình bổ sung cho VNDK ảnh chụp nhanh.
Ví dụ: Chỉ nâng cấp hình ảnh hệ thống
Phải bao gồm tệp cấu hình không gian tên trình liên kết và ảnh chụp nhanh VNDK cho
hình ảnh nhà cung cấp trong hình ảnh hệ thống. Các tệp cấu hình không gian tên trình liên kết
được định cấu hình tự động để tìm thư viện VNDK trong
/system/lib[64]/vndk-${VER}
và
/system/lib[64]/vndk-sp-${VER}
Ví dụ: Nâng cấp hình ảnh hệ thống, thay đổi nhỏ về hình ảnh của nhà cung cấp
Chưa hỗ trợ xây dựng hình ảnh nhà cung cấp dựa trên ảnh chụp nhanh VNDK, vì vậy, bạn phải tạo hình ảnh nhà cung cấp riêng biệt với mã nguồn ban đầu, sau đó nâng cấp hình ảnh hệ thống như được mô tả trong ví dụ trước.
Kiến trúc của VNDK
Để giúp ảnh hệ thống Android 9 tương thích với Ảnh nhà cung cấp Android 8.1, ảnh chụp nhanh VNDK phù hợp với Android 8.1 hình ảnh nhà cung cấp phải được cung cấp cùng với Android 9 hình ảnh hệ thống, như minh hoạ dưới đây:
Thiết kế ảnh chụp nhanh VNDK bao gồm các phương thức sau:
- Tạo thông tin tổng quan nhanh về VNDK-core và VNDK-SP
thư viện. Android 9 có một tập lệnh mà bạn
có thể dùng để tạo ảnh chụp nhanh của bản dựng VNDK hiện tại. Tập lệnh này nhóm tất cả
các thư viện trong
/system/lib[64]/vndk-28
và/system/lib[64]/vndk-sp-28
được tạo bằng dòng dữ liệu nguồn dưới dạng ảnh chụp nhanh của VNDK, trong đó28
là phiên bản VNDK của Android 9. Thông tin tổng quan nhanh cũng bao gồm trình liên kết tệp cấu hình không gian tên/etc/ld.config.28.txt
,/etc/llndk.libraries.28.txt
và/etc/vndksp.libraries.28.txt
. Thông tin tổng quan nhanh đã tạo sẽ được sử dụng bằng các phiên bản Android mới hơn (cao hơn Android 9). - Cài đặt thư viện VNDK-core và VNDK-SP dựng sẵn từ
tóm tắt. Trong Android 9, ảnh chụp nhanh VNDK đã
một nhóm thư viện VNDK-core dựng sẵn và một bộ thư viện VNDK-SP cũng như
dưới dạng tệp cấu hình không gian tên trình liên kết. Trường hợp bạn cung cấp danh sách VNDK
các phiên bản tổng quan nhanh được cài đặt, tại thời điểm xây dựng, cài đặt hình ảnh hệ thống
các thư viện tổng quan nhanh VNDK vào
/system/lib[64]/vndk-${VER}
và các thư mục/system/lib[64]/vndk-sp-${VER}
và trình liên kết tệp cấu hình không gian tên cho các ảnh chụp nhanh VNDK đó để Thư mục/etc
.
Tạo phiên bản VNDK
Mỗi bản phát hành Android chỉ có một ảnh chụp nhanh VNDK và phiên bản SDK được dùng làm
phiên bản VNDK (có nghĩa là phiên bản VNDK có một số nguyên, chẳng hạn như 27
cho Android 8.1). Phiên bản VNDK được khắc phục khi phiên bản Android
phát hành. Phiên bản VNDK mà phân vùng nhà cung cấp sử dụng sẽ được lưu trữ
tự động trong thuộc tính ro.vndk.version
. Thuộc tính này có thể được đọc
trong thời gian chạy. Sau đó, phiên bản này được dùng để xác định phiên bản VNDK của nhà cung cấp
đối với một số thư viện và xác định phiên bản tổng quan nhanh VNDK cho không gian tên
.
Xây dựng thư viện VNDK
Lệnh make vndk
tạo các thư viện có vndk:
{ enabled: true, … }
, bao gồm cả các phần phụ thuộc và không gian tên
tệp cấu hình. Nếu bạn đặt BOARD_VNDK_VERSION := current
,
các thư viện này được tạo bằng lệnh make
.
Vì bản dựng này không cài đặt các thư viện VNDK từ bản tổng quan nhanh, nên các thư viện VNDK đã cài đặt không ổn định với ABI. Tuy nhiên, khi phiên bản Android được phát hành, ABI cho phiên bản VNDK hiện tại đã được khắc phục. Tại thời điểm này, bất kỳ Lỗi ABI là một lỗi bản dựng nên các bản vá cho phiên bản Android không được thay đổi ABI cho thư viện VNDK.