Android 10 có tính năng hỗ trợ xây dựng
odm
phân vùng bằng hệ thống xây dựng Android.
Giới thiệu về phân vùng ODM
Nhà sản xuất thiết kế ban đầu (ODM) tuỳ chỉnh nhà cung cấp hệ thống trên chip (SoC) các gói hỗ trợ bo mạch (BSP) cho các thiết bị cụ thể của họ (bảng của chúng). Chiến dịch này cho phép chúng triển khai các mô-đun nhân cho các thành phần dành riêng cho hội đồng quản trị, các trình nền dành riêng cho bo mạch hoặc tính năng riêng của chúng trên lớp trừu tượng phần cứng (HAL). Họ cũng nên thay thế hoặc tuỳ chỉnh các thành phần SoC.
Trong các bản phát hành Android thấp hơn, những cách tuỳ chỉnh như vậy đã ngăn việc sử dụng một
hình ảnh nhà cung cấp cho các thiết bị có cùng SoC (hoặc với nhiều SoC khác nhau nhưng ở
cùng một gia đình). Trong Android 10 trở lên, bạn có thể sử dụng
phân vùng odm
riêng cho các tuỳ chỉnh. Điều này cho phép bạn
sử dụng hình ảnh nhà cung cấp duy nhất cho nhiều SKU phần cứng.
Sử dụng phân vùng sản phẩm và ODM
Android 9 bổ sung tính năng hỗ trợ xây dựng
product
phân vùng, cho phép sử dụng một hình ảnh hệ thống duy nhất cho nhiều phần mềm
SKU do các hình ảnh khác nhau của product.img
cung cấp. Trong khi
Phân vùng product
dành cho SKU phần mềm,
Phân vùng odm
dành cho SKU phần cứng.
Với phân vùng sản phẩm và ODM chuyên biệt, bạn có thể sử dụng system
phân vùng để lưu trữ mã chung để chia sẻ giữa nhiều SKU phần mềm và
Phân vùng vendor
để lưu trữ mã BSP dành riêng cho SoC để chia sẻ giữa
nhiều thiết bị dựa trên SoC đã cho.
Việc sử dụng các phân vùng riêng biệt có các nhược điểm, chẳng hạn như khó quản lý dung lượng ổ đĩa (ví dụ: bạn phải dự trữ một lượng dung lượng giới hạn cho tương lai tăng trưởng). Tuy nhiên, Android 10 hỗ trợ cho phân vùng động loại bỏ sự cố ổ đĩa và phân vùng lại thiết bị trong thời gian có thể cập nhật qua mạng không dây (OTA).
Thành phần ODM
Phân vùng odm
chứa các thành phần dành riêng cho ODM sau đây
(tương tự như phân vùng vendor
), được liệt kê trong bảng sau.
Thành phần dành riêng cho ODM | Vị trí |
---|---|
Mô-đun nhân hệ điều hành có thể tải (LKM) | /odm/lib/modules/*.ko |
Thư viện gốc | /odm/lib[64] |
HAL (Lớp trừu tượng phần cứng) | /odm/lib[64]/hw |
Chính sách SE | /odm/etc/selinux |
Đối tượng VINTF bằng nhiều dữ liệu | /odm/etc/vintf |
init.rc
tệp |
/odm/etc/init |
Thuộc tính hệ thống | /odm/build.prop |
Lớp phủ tài nguyên trong thời gian chạy (RRO) | /odm/overlay/*.apk |
Ứng dụng | /odm/app/*.apk |
Ứng dụng Priv | /odm/priv-app/*.apk |
Thư viện Java | /odm/framework/*.jar |
Cấu hình hệ thống Khung Android | /odm/etc/sysconfig/* và /odm/etc/permissions/* |
Không có hình ảnh tuỳ chỉnh
Không sử dụng tuỳ chỉnh images vì chúng không hỗ trợ những mục sau:
- Cài đặt mô-đun cho một mục tiêu cụ thể. Hình ảnh tuỳ chỉnh hỗ trợ sao chép cấu phần phần mềm vào hình ảnh, nhưng không thể cài đặt mô-đun vào một phân vùng cụ thể bằng cách chỉ định phân vùng đích như một phần của quy tắc xây dựng.
- Soong. Không thể tạo
custom_images
bằng hệ thống xây dựng Soong. - cập nhật qua mạng không dây. Hình ảnh tuỳ chỉnh được dùng làm hình ảnh ROM gốc không thể qua OTA.
Duy trì ABI giữa các phân vùng
Phân vùng odm
là phần mở rộng của vendor
phân vùng. Khi xem xét độ ổn định của giao diện nhị phân của ứng dụng (ABI), hãy giữ nguyên
cấu trúc sau đây.
Hình 1. Duy trì ABI giữa các phân vùng.
- Không có sự ổn định về ABI từ
odm
đếnvendor
phân vùng. Cả hai phân vùng phải được nâng cấp cùng lúc bất cứ lúc nào. - Phân vùng
odm
vàvendor
có thể phụ thuộc vào với nhau, nhưng phân vùngvendor
phải hoạt động mà không có phân vùngodm
. - ABI từ
odm
đếnsystem
giống với ABI từvendor
đếnsystem
.
Tương tác trực tiếp giữa phân vùng product
và
Phân vùng vendor
hoặc odm
không
được phép. (Hành động này được thực thi theo chính sách SEpolicy.)
Triển khai phân vùng ODM
Trước khi triển khai một phân vùng mới, hãy xem lại AOSP có liên quan thay đổi.
Thiết lập phân vùng ODM
Để thiết lập phân vùng odm
, hãy thêm các cờ bản dựng sau đây:
BOARD_ODMIMAGE_PARTITION_SIZE
cho kích thước phân vùng cố địnhPRODUCT_USE_DYNAMIC_PARTITIONS
vàBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE
cho một phân vùng động kích thước- Loại hệ thống tệp
BOARD_ODMIMAGE_FILE_SYSTEM_TYPE
được dùng cho Hình ảnh ODM PRODUCT_ODM_PROPERTIES
cho/odm/build.prop
trong sử dụng trong$(call inherit-product path/to/device.mk)
, như trongPRODUCT_ODM_PROPERTIES += product.abc=ok
Cài đặt mô-đun vào phân vùng ODM
Sử dụng các cờ bản dựng này để cài đặt một mô-đun vào phân vùng odm
:
device_specific: true
trongAndroid.bp
LOCAL_ODM_MODULE := true
trongAndroid.mk
Bật tính năng Xác minh quy trình khởi động
Để ngăn phần mềm độc hại can thiệp vào các phân vùng của odm
,
bật tính năng Khởi động được xác minh trên Android
(AVB) cho những phân vùng đó (giống như cách bạn thực hiện với vendor
và
system
).
Để bật AVB, hãy thêm cờ bản dựng
BOARD_AVB_ODM_ADD_HASHTREE_FOOTER_ARGS
. Để biết chi tiết về cách định cấu hình
AVB trên phân vùng động, xem
Cấu hình AVB
thay đổi.
Coi /odm là phân vùng /nhà cung cấp khác
Để đảm bảo rằng hệ thống xử lý phân vùng odm
dưới dạng
Phân vùng vendor
, thay thế mọi vendor
được cố định giá trị trong mã
tham chiếu có một tập hợp các phân vùng hướng phần cứng (hiện tại
odm
và vendor
). vendor
đáng chú ý
vị trí tham chiếu trong nền tảng bao gồm
động
trình liên kết,
gói
người quản lý và shell/libc
.