Tổng quan nhanh VNDK là một tập hợp các thư viện VNDK-core và VNDK-SP dành cho bản phát hành Android.
Bạn chỉ có thể nâng cấp phân vùng hệ thống nếu system.img
bao gồm thông tin tổng quan nhanh tương ứng về VNDK mà
vendor.img
Các bản tổng quan nhanh chính thức của VNDK được tạo tự động trên máy chủ bản dựng Android
và đánh dấu vào /prebuilts/vndk
trong cây nguồn Android. Cho
bạn có thể tạo ảnh chụp nhanh VNDK cục bộ. Tổng quan nhanh về VNDK
hỗ trợ các phiên bản TARGET_ARCH
arm, arm64, x86 và x86_64.
Tạo bản tổng quan nhanh
Máy chủ bản dựng Android tạo cấu phần phần mềm bản dựng và tệp tổng quan nhanh VNDK bằng cách sử dụng các tham số bản dựng và lệnh tạo sau đây.
Tham số bản dựng
Tên mục tiêu bản dựng là vndk
. Cấu hình mục tiêu bản dựng
được hiển thị bên dưới.
TARGET_PRODUCT |
TARGET_ARCH |
TARGET_ARCH_VARIANT |
---|---|---|
aosp_arm |
arm |
armv7-a-neon |
aosp_arm64 |
arm64 |
armv8-a |
aosp_x86 |
x86 |
x86 |
aosp_x86_64 |
x86_64 |
x86_64 |
TARGET_PRODUCT=aosp_$(TARGET_ARCH)
TARGET_BUILD_VARIANT=user
TARGET_ARCH
giống với Hình ảnh hệ thống chung (GSI) số vòm mục tiêu (arm
,arm64
,x86
,x86_64
).TARGET_ARCH_VARIANT
. Đối với ảnh chụp nhanh phiên bản 28 (Android 9) trở lên, bao gồm các cấu hình phổ biến được nêu ở trên.
Tạo lệnh
Để xem thông tin tổng quan nhanh chính thức, Android 9 trở lên
bao gồm mục tiêu mẫu (vndk
) trong
vndk.mk
tạo và tạo ra một VNDK
vào $DIST_DIR
. Tệp ZIP chụp nhanh sử dụng định dạng
android-vndk-$(TARGET_ARCH).zip
.
Ví dụ:
lunch aosp_TARGET_ARCH-user
make -j vndk dist [BOARD_VNDK_VERSION=current]
Máy chủ bản dựng Android sử dụng
Tập lệnh build.sh
để tạo tất cả vòm được hỗ trợ
bằng lệnh sau.
DIST_DIR=dist_dir development/vndk/snapshot/build.sh
Ảnh chụp nhanh VNDK cho một phiên bản Android được tạo từ nhánh phát hành.
Tạo cục bộ
Trong quá trình phát triển, bạn có thể tạo ảnh chụp nhanh VNDK từ cây nguồn cục bộ bằng các lệnh sau.
- Để tạo tất cả các vòm được hỗ trợ cùng một lúc, hãy thực thi tập lệnh bản dựng sau đây
(
build.sh
).cd $ANDROID_BUILD_TOP
development/vndk/snapshot/build.sh
- Để tạo một
TARGET_ARCH
cụ thể, hãy thực thi như sau các lệnh.lunch aosp_TARGET_ARCH-user
m -j vndk dist
Tệp android-vndk-$(TARGET_ARCH).zip
tương ứng sẽ được tạo
dưới $DIST_DIR
.
Tệp ảnh chụp nhanh
Bản tổng quan nhanh VNDK bao gồm các tệp sau.
- Biến thể nhà cung cấp của thư viện chia sẻ VNDK-core và VNDK-SP.
- Không cần đến các thư viện dùng chung LL-NDK vì các thư viện này có khả năng tương thích ngược.
- Đối với các mục tiêu 64 bit, cả
TARGET_ARCH
và Thư việnTARGET_2ND_ARCH
được xây dựng và đi kèm.
- Bạn có thể xem danh sách các thư viện VNDK-core, VNDK-SP, LL-NDK và VNDK-private tại
[vndkcore|vndksp|llndk|vndkprivate].libraries.txt
. - Tệp giấy phép.
module_paths.txt
. Ghi lại đường dẫn mô-đun cho tất cả VNDK cần thiết để kiểm tra nhằm đảm bảo các dự án GPL có nguồn được phát hành trong một cây nguồn Android nhất định.
Đối với một tệp ZIP chụp nhanh của VNDK,
android-vndk-$(TARGET_ARCH).zip
, thư viện VNDK tạo sẵn
được nhóm thành các thư mục riêng biệt có tên
arch-$(TARGET_ARCH)-$(TARGET_ARCH_VARIANT)
theo ABI
chút ít. Ví dụ: đối với android-vndk-arm64.zip
, lib 64 bit
được đặt trong arch-arm64-armv8-a
và các lib 32 bit là
được đặt trong arch-arm-armv8-a
. Ví dụ bên dưới cho thấy
cấu trúc thư mục của arm64 (TARGET_ARCH=arm64
) VNDK
tệp ZIP chụp nhanh (android-vndk-arm64.zip
).
Xây dựng để lưu ảnh chụp nhanh về nhà cung cấp
Hỗ trợ Android 11
nhà cung cấp
ảnh chụp nhanh, cho phép bạn tạo vendor.img
bất kể
phiên bản Android trên cây nguồn. Ảnh chụp nhanh VNDK mặc định chứa
các tệp thư viện được chia sẻ (.so
) có thể được cài đặt vào thiết bị và
sau đó được liên kết từ các tệp nhị phân C++ của nhà cung cấp trong thời gian chạy. Để xây dựng dựa trên
Ảnh chụp nhanh VNDK đó, bạn cần các cấu phần phần mềm bổ sung như tệp tiêu đề và
Cờ đã xuất.
Để tạo ra những hiện vật đó (cùng với ảnh chụp nhanh VNDK) từ một nguồn địa phương hãy sử dụng lệnh sau.
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true development/vndk/snapshot/build.sh
Lệnh này tạo android-vndk-$(TARGET_ARCH).zip
tệp trong
$DIST_DIR
Ví dụ bên dưới là tệp ZIP chứa ảnh chụp nhanh của arm64 VNDK
với cấu phần phần mềm bản dựng. Các tệp in đậm là các tệp mới được thêm vào VNDK thông thường
ảnh chụp nhanh (như trong Hình 1) và bao gồm các tệp JSON (lưu trữ
cflags
của mỗi thư viện) và tất cả các tệp tiêu đề đã xuất.
android-vndk-arm64.zip ├── arch-arm64-armv8-a │ └── shared │ ├── vndk-core -> *.so files, *.json files │ └── vndk-sp -> *.so files, *.json files ├── arch-arm-armv8-a -> (same as arch-arm64-armv8-a) ├── configs -> *.libraries.txt, module_paths.txt, module_names.txt ├── include -> exported header files (*.h, *.hh, etc.) └── NOTICE_FILES -> license txt files
Tải ảnh chụp nhanh VNDK lên
Ảnh chụp nhanh VNDK được kiểm tra trong cây nguồn trong
/prebuilts/vndk/vVER
, trong đó
VER
tương đương với phiên bản của ảnh chụp nhanh VNDK
(theo phiên bản SDK của bản phát hành Android tương ứng). Cho
ví dụ: ảnh chụp nhanh Android 8.1 VNDK có phiên bản 27.
Sử dụng tập lệnh update.py
Tập lệnh update.py
(/development/vndk/snapshot/update.py
) tự động hoá quy trình
thêm ảnh chụp nhanh VNDK được tạo sẵn vào cây nguồn. Tính năng này tự động phát hiện
tạo cấu phần phần mềm và điền thích hợp vào các thuộc tính được liên kết trong
đã tạo Android.bp
. Tập lệnh này thực hiện các tác vụ sau:
- Trong
/prebuilts/vndk/vVER
, sử dụngrepo start
để tạo nhánh Git mới. - Tìm nạp và giải nén các cấu phần phần mềm bản dựng tổng quan nhanh VNDK.
- Chạy
gen_buildfiles.py
để tự động tạo tệp bản dựng (Android.bp
). - Chạy
check_gpl_license.py
để xác minh thư viện tạo sẵn được cấp phép theo Giấy phép chung (GPL) có các nguồn được công bố tại cây nguồn hiện tại. - Sử dụng
git commit
để cam kết các thay đổi mới.
Sử dụng ảnh chụp nhanh VNDK được tạo cục bộ
Bạn cũng có thể dùng các ảnh chụp nhanh VNDK được tạo cục bộ. Khi --local
được chỉ định, thì tập lệnh update.py
sẽ tìm nạp ảnh chụp nhanh VNDK
cấu phần phần mềm bản dựng từ thư mục cục bộ được chỉ định (thay vì Android
build server) có các tệp android-vndk-$(TARGET_ARCH).zip
được tạo từ development/vndk/snapshot/build.sh
. Với
Lựa chọn --local
, tập lệnh update.py
bỏ qua GPL
kiểm tra giấy phép và git commit
bước.
Cú pháp:
python update.py VER --local local_path
Lệnh mẫu để cập nhật ảnh chụp nhanh Android 8.1 VNDK bằng bản dựng cục bộ
cấu phần phần mềm trong /path/to/local/dir
:
python update.py 27 --local /path/to/local/dir
Ví dụ về cấu trúc thư mục của ảnh chụp nhanh VNDK được tạo cục bộ:
prebuilts/vndk ├── v30 │ ├── arm64 │ │ ├── arch-arm64-armv8-a -> (prebuilt libs) │ │ ├── arch-arm-armv8-a -> (prebuilt libs) │ │ ├── configs -> (config files) │ │ ├── include -> (exported header files) │ │ └── Android.bp -> (VNDK modules with cflags) │ ├── arm -> (same as above) │ ├── x86_64 -> (same as above) │ ├── x86 -> (same as above) │ ├── common │ │ ├── NOTICE_FILES -> (license files) │ │ └── Android.bp -> (license file modules) │ └── Android.bp -> (*.libraries.30.txt modules) └── (other VNDK versions) -> (same as above)Cấu phần phần mềm bản dựng cục bộ sẽ được tự động thêm nếu cấu phần phần mềm được tạo bằng
VNDK_SNAPSHOT_BUILD_ARTIFACTS=true
Cài đặt bản tổng quan nhanh VNDK
Hình ảnh hệ thống cài đặt các thư viện ảnh chụp nhanh VNDK tại thời điểm xây dựng bằng cách sử dụng
ở BOARD_VNDK_VERSION
,
PRODUCT_EXTRA_VNDK_VERSIONS
và ro.vndk.version
.
Bạn có thể kiểm soát những bản tổng quan nhanh VNDK được cài đặt từ VNDK được tạo sẵn
các thư mục tổng quan nhanh (ví dụ: /prebuilts/vndk/v29
hoặc
/prebuilts/vndk/v30
) bằng một trong các lựa chọn sau.
- Cách 1:
BOARD_VNDK_VERSION
. Sử dụng các mô-đun tổng quan nhanh để xây dựng các mô-đun nhà cung cấp hiện tại và chỉ cài đặt các mô-đun ảnh chụp nhanh bắt buộc đối với mô-đun nhà cung cấp. - Cách 2:
PRODUCT_EXTRA_VNDK_VERSIONS
. Cài đặt các mô-đun tổng quan nhanh của VNDK bất kể các mô-đun của nhà cung cấp hiện tại. Thao tác này sẽ cài đặt ảnh chụp nhanh VNDK được tạo sẵn có trongPRODUCT_EXTRA_VNDK_VERSIONS
mà không liên kết chúng với bất kỳ ứng dụng nào khác vào thời điểm xây dựng.
Đặt Board_VNDK_VERSION
BOARD_VNDK_VERSION
cho thấy phiên bản VNDK của nhà cung cấp hiện tại
cần có các mô-đun để xây dựng. Nếu BOARD_VNDK_VERSION
có một
phiên bản tổng quan nhanh VNDK có sẵn trong thư mục /prebuilts/vndk
,
Bản tổng quan nhanh VNDK chỉ báo trong BOARD_VNDK_VERSION
đã được cài đặt. Nếu
bản tổng quan nhanh VNDK không có trong thư mục, đã xảy ra lỗi bản dựng.
Việc xác định BOARD_VNDK_VERSION
cũng cho phép các mô-đun VNDK
. Mô-đun nhà cung cấp liên kết với phiên bản tổng quan nhanh của VNDK được xác định trong
BOARD_VNDK_VERSION
tại thời điểm xây dựng (đây không phải phiên bản hiện tại)
mô-đun VNDK trong nguồn hệ thống). Khi tải xuống toàn bộ cây nguồn từ
kho lưu trữ, cả các nguồn của hệ thống lẫn nhà cung cấp đều dựa trên cùng một Android
bản phát hành.
Đặt PRODUCT_EXTRA_VNDK_VERSIONS
PRODUCT_EXTRA_VNDK_VERSIONS
liệt kê các phiên bản VNDK bổ sung sẽ
. Thông thường, bạn chỉ cần có một ảnh chụp nhanh VNDK cho giá trị hiện tại
phân vùng nhà cung cấp. Tuy nhiên, trong một số trường hợp, bạn có thể cần bao gồm nhiều
ảnh chụp nhanh trong một ảnh hệ thống. Ví dụ: GSI có nhiều bản tổng quan nhanh để
hỗ trợ nhiều phiên bản nhà cung cấp cùng với một ảnh hệ thống. Theo chế độ cài đặt
PRODUCT_EXTRA_VNDK_VERSIONS
, bạn có thể cài đặt bản tổng quan nhanh VNDK
ngoài phiên bản VNDK trong BOARD_VNDK_VERSION
.
Nếu PRODUCT_EXTRA_VNDK_VERSIONS
có danh sách các phiên bản cụ thể,
hệ thống xây dựng tìm kiếm ảnh chụp nhanh được tạo sẵn của danh sách phiên bản trong
Thư mục prebuilts/vndk
. Nếu hệ thống xây dựng tìm thấy tất cả những
các tệp tổng quan nhanh này, nó sẽ cài đặt các tệp tổng quan nhanh đó vào mỗi APEX của VNDK
(out/target/product/$(TARGET_DEVICE)/system_ext/apex/com.android.vndk.vVER
.
Việc thiếu các phiên bản sẽ gây ra lỗi bản dựng.
Các mô-đun VNDK không liên kết với các mô-đun của nhà cung cấp trong thời gian xây dựng nhưng có thể
được sử dụng trong thời gian chạy nếu mô-đun nhà cung cấp trong phân vùng nhà cung cấp yêu cầu một trong
các phiên bản VNDK đã cài đặt. PRODUCT_EXTRA_VNDK_VERSIONS
hợp lệ
chỉ khi BOARD_VNDK_VERSION
được định nghĩa.
PLATFORM_VNDK_VERSION
PLATFORM_VNDK_VERSION
xác định phiên bản VNDK cho VNDK hiện tại
các mô-đun trong nguồn hệ thống. Giá trị được đặt tự động:
- Trước khi phát hành,
PLATFORM_VNDK_VERSION
được đặt thànhPLATFORM_VERSION_CODENAME
- Khi phát hành,
PLATFORM_SDK_VERSION
được sao chép vàoPLATFORM_VNDK_VERSION
Sau khi phiên bản Android được phát hành, các thư viện VNDK hiện tại
đã được cài đặt vào VNDK APEX
(/system/apex/com.android.vndk.vVER
), trong đó
VER
là phiên bản được lưu trữ trong
PLATFORM_VNDK_VERSION
.
Khi bạn đặt BOARD_VNDK_VERSION
thành current
,
PLATFORM_VNDK_VERSION
được lưu trữ trong ro.vndk.version
,
nếu không, BOARD_VNDK_VERSION
sẽ được lưu trữ trong
ro.vndk.version
. PLATFORM_VNDK_VERSION
được đặt thành
phiên bản SDK khi Android phát hành; trước khi phát hành, Android gồm chữ và số
tên mã được dùng cho PLATFORM_VNDK_VERSION
.
Tóm tắt chế độ cài đặt phiên bản VNDK
Bảng này tóm tắt các chế độ cài đặt của phiên bản VNDK.
Xây dựng nhà cung cấp |
Phiên bản bảng |
Bản phát hành SDK |
Phiên bản nền tảng |
Thuộc tính phiên bản |
Cài đặt thư mục |
---|---|---|---|---|---|
Các mô-đun VNDK hiện tại | current |
Trước | CODE_NAME |
CODE_NAME |
/system/apex/com.android.vndk.vCODE_NAME |
Sau | SDK_VER |
SDK_VER |
/system/apex/com.android.vndk.vSDK_VER |
||
Mô-đun tổng quan nhanh tạo sẵn | VNDK_VER để xem tổng quan nhanh |
Trước hoặc Sau | CODE_NAME hoặc SDK_VER |
VNDK_VER |
/system_ext/apex/com.android.vndk.vVNDK_VER |
- Phiên bản Board (
BOARD_VNDK_VERSION
). VNDK phiên bản mà mô-đun nhà cung cấp yêu cầu tạo. Đặt thànhcurrent
nếu mô-đun nhà cung cấp có thể liên kết với các mô-đun hệ thống hiện tại. - Phiên bản nền tảng (
PLATFORM_VNDK_VERSION
). Phiên bản VNDK mà các mô-đun hệ thống hiện tại đang xây dựng. Chỉ được tạo khiBOARD_VNDK_VERSION
bằng hiện tại. - Thuộc tính phiên bản (
ro.vndk.version
). Tài sản chỉ định phiên bản VNDK mà các tệp nhị phân và thư viện trong provider.img yêu cầu chạy. Lưu trữ trongvendor.img
tại/vendor/default.prop