Khi phát triển và phát hành thiết bị mới, nhà cung cấp có thể xác định và khai báo nhắm mục tiêu phiên bản FCM trong tệp kê khai thiết bị (DM). Khi nâng cấp hình ảnh nhà cung cấp đối với thiết bị cũ, nhà cung cấp có thể chọn triển khai các phiên bản HAL mới và tăng dần phiên bản FCM mục tiêu.
Phát triển thiết bị mới
Khi xác định phiên bản FCM mục tiêu theo thiết bị cho thiết bị mới:
- Rời khỏi
DEVICE_MANIFEST_FILE
vàPRODUCT_ENFORCE_VINTF_MANIFEST
chưa xác định. - Triển khai HAL cho phiên bản FCM mục tiêu.
- Ghi đúng tệp kê khai thiết bị.
- Ghi phiên bản FCM mục tiêu vào tệp kê khai thiết bị.
- Đặt
DEVICE_MANIFEST_FILE
. - Đặt
PRODUCT_ENFORCE_VINTF_MANIFEST
thànhtrue
.
Phát hành thiết bị mới
Khi một thiết bị mới được phát hành, phiên bản FCM mục tiêu ban đầu cần phải
được xác định và khai báo trong tệp kê khai thiết bị dưới dạng
"target-level
" ở cấp cao nhất
Phần tử <manifest>
.
Ví dụ: các thiết bị chạy Android 9 phải có phiên bản FCM mục tiêu bằng 3 (phiên bản cao hơn hiện có). Cách khai báo điều này trong tệp kê khai thiết bị:
<manifest version="1.0" type="device" target-level="3"> <!-- ... --> </manifest>
Nâng cấp hình ảnh nhà cung cấp
Khi nâng cấp hình ảnh nhà cung cấp cho một thiết bị cũ, nhà cung cấp có thể chọn triển khai các phiên bản HAL mới và tăng phiên bản FCM mục tiêu.
Nâng cấp HAL
Trong quá trình nâng cấp hình ảnh nhà cung cấp, nhà cung cấp có thể triển khai các phiên bản HAL mới miễn là tên HAL, tên giao diện và tên thực thể là giống nhau. Ví dụ:
- Thiết bị Google Pixel 2 và Pixel 2 XL ra mắt với phiên bản FCM mục tiêu
2, triển khai âm thanh 2.0 HAL theo yêu cầu
android.hardware.audio@2.0::IDeviceFactory/default
. - Đối với HAL âm thanh 4.0 được phát hành với Android
9, thiết bị Google Pixel 2 và Pixel 2 XL có thể sử dụng
OTA đầy đủ để nâng cấp lên HAL 4.0, triển khai
android.hardware.audio@4.0::IDeviceFactory/default
. - Mặc dù
compatibility_matrix.2.xml
chỉ định âm thanh 2.0 yêu cầu về hình ảnh nhà cung cấp có FCM mục tiêu phiên bản 2 là do khung Android 9 (phiên bản FCM) 3) coi âm thanh 4.0 là sự thay thế của HAL âm thanh 2.0 về mặt chức năng.
Tóm lại, vì compatibility_matrix.2.xml
yêu cầu
âm thanh 2.0 và compatibility_matrix.3.xml
yêu cầu âm thanh 4.0,
như sau:
Phiên bản FCM (hệ thống) | Phiên bản FCM (nhà cung cấp) mục tiêu | Yêu cầu |
---|---|---|
2 (8.1) | 2 (8.1) | Âm thanh 2.0 |
3 (9) | 2 (8.1) | Âm thanh 2.0 hoặc 4.0 |
3 (9) | 3 (9) | Âm thanh 4.0 |
Nâng cấp phiên bản FCM mục tiêu
Trong quá trình nâng cấp hình ảnh nhà cung cấp, nhà cung cấp cũng có thể tăng FCM mục tiêu phiên bản để chỉ định phiên bản FCM được nhắm mục tiêu mà hình ảnh nhà cung cấp đã nâng cấp có thể hoạt động với. Để chuyển sang phiên bản FCM mục tiêu của một thiết bị, nhà cung cấp cần phải:
- Triển khai tất cả các phiên bản HAL (Lớp trừu tượng phần cứng) mới cho phiên bản FCM mục tiêu.
- Sửa đổi phiên bản HAL trong tệp kê khai thiết bị.
- Sửa đổi phiên bản FCM mục tiêu trong tệp kê khai thiết bị.
- Xoá các phiên bản HAL (Lớp trừu tượng phần cứng) không dùng nữa.
Ví dụ: thiết bị Google Pixel và Pixel XL chạy Android 7.0
vì vậy, phiên bản FCM mục tiêu của họ tối thiểu phải là phiên bản cũ. Tuy nhiên, thiết bị
tệp kê khai khai báo FCM mục tiêu phiên bản 2 vì hình ảnh nhà cung cấp có
đã được cập nhật để phù hợp với compatibility_matrix.2.xml
:
<manifest version="1.0" type="device" target-level="2">
Nếu nhà cung cấp không triển khai tất cả các phiên bản HAL mới bắt buộc hoặc không xoá các phiên bản HAL không dùng nữa, nên không thể nâng cấp phiên bản FCM đích.
Ví dụ: thiết bị Google Pixel 2 và Pixel 2 XL có phiên bản FCM mục tiêu 2.
Mặc dù họ triển khai một số HAL (Lớp trừu tượng phần cứng) được yêu cầu bởi
compatibility_matrix.3.xml
(chẳng hạn như âm thanh 4.0, Health 2.0, v.v.),
chúng không xoá android.hardware.radio.deprecated@1.0
, tức là
không dùng nữa tại FCM phiên bản 3 (Android 9). Do đó,
thiết bị không thể nâng cấp phiên bản FCM mục tiêu lên 3.
Bắt buộc các yêu cầu về nhân hệ điều hành trong OTA
Đang cập nhật thiết bị từ Android 9 trở xuống
Trên thiết bị chạy Android 9 trở xuống, hãy đảm bảo các CL sau đây chọn quả anh đào:
Những thay đổi này giới thiệu cờ bản dựng
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
và rời khỏi
không đặt cờ cho các thiết bị chạy Android 9 hoặc
thấp hơn.
- Khi cập nhật lên Android 10, Ứng dụng OTA trên thiết bị chạy Android 9 hoặc thấp hơn, đừng kiểm tra chính xác các yêu cầu về nhân hệ điều hành trong gói OTA. Những thay đổi này là cần thiết để loại bỏ các yêu cầu về nhân hệ điều hành khỏi OTA đã tạo .
-
Khi cập nhật lên Android 11, bạn không bắt buộc phải đặt giá trị
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
tạo cờ để kiểm tra VINTF khả năng tương thích khi gói cập nhật được tạo.
Để biết thêm thông tin về cờ bản dựng này, hãy xem Cập nhật thiết bị từ Android 10.
Đang cập nhật thiết bị từ Android 10
Android 10 ra mắt cờ bản dựng mới
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
. Đối với thiết bị
được khởi chạy cùng với Android 10, cờ này là
tự động đặt thành true
. Khi cờ này được đặt thành
true
, một tập lệnh trích xuất phiên bản hạt nhân và nhân hệ điều hành
qua hình ảnh nhân hệ điều hành đã cài đặt.
- Khi cập nhật lên Android 10, gói cập nhật OTA chứa phiên bản và cấu hình kernel. Ứng dụng OTA trên thiết bị chạy Android 10 đọc thông tin này để kiểm tra khả năng tương thích.
- Khi cập nhật lên Android 11, thể loại gói OTA đọc phiên bản và cấu hình kernel để kiểm tra khả năng tương thích.
Nếu tập lệnh không trích xuất được thông tin này cho hình ảnh hạt nhân của bạn, hãy thực hiện một trong như sau:
- Chỉnh sửa tập lệnh để hỗ trợ định dạng nhân và đóng góp cho AOSP.
- Đặt
BOARD_KERNEL_VERSION
thành phiên bản kernel vàBOARD_KERNEL_CONFIG_FILE
đến đường dẫn của hạt nhân đã tạo tệp cấu hình.config
. Bạn phải cập nhật cả hai biến khi hình ảnh nhân hệ điều hành được cập nhật. - Hoặc đặt
PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS
thànhfalse
để bỏ qua bước kiểm tra các yêu cầu về nhân hệ điều hành. Bạn không nên làm vậy vì mọi sự không tương thích đều bị ẩn và chỉ được phát hiện khi chạy kiểm tra VTS sau khi cập nhật.
Bạn có thể xem mã nguồn của tập lệnh trích xuất thông tin hạt nhân
extract_kernel.py
.