Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Phát triển tệp kê khai thiết bị

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 Phiên bản FCM mục tiêu trong tệp kê khai thiết bị (DM). Khi nâng cấp hình ảnh nhà cung cấp cho các 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.

Phát triển các thiết bị mới

Khi xác định thiết bị Nhắm mục tiêu Phiên bản FCM cho các thiết bị mới:

  1. Không xác định DEVICE_MANIFEST_FILEPRODUCT_ENFORCE_VINTF_MANIFEST .
  2. Triển khai HAL cho Phiên bản FCM mục tiêu.
  3. Viết tệp kê khai thiết bị chính xác.
  4. Ghi Phiên bản FCM đích vào tệp kê khai thiết bị.
  5. Đặt DEVICE_MANIFEST_FILE .
  6. Đặt PRODUCT_ENFORCE_VINTF_MANIFEST thành true .

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ủa nó cần được xác định và khai báo trong tệp kê khai thiết bị dưới dạng thuộc tính " target-level " trong phần tử <manifest> cấp cao nhất.

Ví dụ: các thiết bị khởi chạy với 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ó tại thời điểm này). Để 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 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 của 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 phiên bản giống nhau. Ví dụ:

  • Các thiết bị Google Pixel 2 và Pixel 2 XL được phát hành với Target FCM Phiên bản 2, đã triển khai âm thanh 2.0 HAL bắt buộc android.hardware.audio@2.0::IDeviceFactory/default .
  • Đối với âm thanh 4.0 HAL được phát hành với Android 9, các thiết bị Google Pixel 2 và Pixel 2 XL có thể sử dụng OTA đầy đủ để nâng cấp lên 4.0 HAL, triển khai android.hardware.audio@4.0::IDeviceFactory/default .
  • Mặc dù compatibility_matrix.2.xml chỉ chỉ định âm thanh 2.0, nhưng yêu cầu về hình ảnh của nhà cung cấp với Target FCM Phiên bản 2 đã được nới lỏng vì khung Android 9 (FCM Phiên bản 3) coi âm thanh 4.0 là sự thay thế của âm thanh 2.0 HAL về mặt chức năng .

Tóm lại, với điều kiện là 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, các yêu cầu như sau:

Phiên bản FCM (Hệ thống) Phiên bản FCM mục tiêu (Nhà cung cấp) 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 Phiên bản FCM mục tiêu để chỉ định Phiên bản FCM mục tiêu mà hình ảnh nhà cung cấp đã nâng cấp có thể hoạt động. Để tăng Phiên bản FCM mục tiêu của một thiết bị, nhà cung cấp cần:

  1. Triển khai tất cả các Phiên bản HAL bắt buộc mới cho Phiên bản FCM mục tiêu.
  2. Sửa đổi Phiên bản HAL trong tệp kê khai thiết bị.
  3. Sửa đổi Phiên bản FCM mục tiêu trong tệp kê khai thiết bị.
  4. Xóa các phiên bản HAL không dùng nữa.

Ví dụ: các thiết bị Google Pixel và Pixel XL được khởi chạy với Android 7.0 nên Phiên bản FCM mục tiêu của chúng ít nhất phải kế thừa. Tuy nhiên, tệp kê khai thiết bị khai báo Phiên bản FCM mục tiêu 2 vì hình ảnh của nhà cung cấp đã đượ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 xóa các phiên bản HAL không dùng nữa, thì không thể nâng cấp Phiên bản FCM mục tiêu.

Ví dụ: các thiết bị Google Pixel 2 và Pixel 2 XL có Target FCM Phiên bản 2. Mặc dù chúng triển khai một số HAL được yêu cầu bởi compatibility_matrix.3.xml thích_matrix.3.xml (chẳng hạn như âm thanh 4.0, sức khỏe 2.0, v.v.), chúng không xóa android.hardware.radio.deprecated@1.0 , không được dùng ở FCM Phiên bản 3 (Android 9). Do đó, các thiết bị này không thể nâng cấp Phiên bản FCM mục tiêu lên 3.

Yêu cầu hạt nhân ủy quyền trong OTA

Cập nhật thiết bị từ Android 9 trở xuống

Trên các thiết bị chạy Android 9 trở xuống, hãy đảm bảo chọn các CL sau:

Những thay đổi này giới thiệu cờ bản dựng PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS và không đặt cờ cho các thiết bị chạy Android 9 trở xuống.

  • Khi cập nhật lên Android 10, ứng dụng khách OTA trên thiết bị chạy Android 9 trở xuống không kiểm tra chính xác các yêu cầu hạt nhân trong gói OTA. Những thay đổi này là cần thiết để loại bỏ các yêu cầu hạt nhân khỏi gói OTA đã tạo.
  • Khi cập nhật lên Android 11, bạn có thể tùy chọn đặt cờ bản dựng PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS để kiểm tra khả năng tương thích của VINTF khi gói cập nhật được tạo.

Để biết thêm thông tin về cờ xây dựng này, hãy xem Cập nhật thiết bị từ Android 10 .

Cập nhật thiết bị từ Android 10

Android 10 giới thiệu cờ bản dựng mới, PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS . Đối với các thiết bị chạy Android 10, cờ này tự động được đặt thành true . Khi cờ được đặt thành true , một tập lệnh sẽ trích xuất phiên bản hạt nhân và cấu hình hạt nhân từ hình ảnh hạt nhân đã 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 hạt nhân. Ứng dụng khách 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 hạt nhân và cấu hình để 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 các thao tác sau:

  • Chỉnh sửa tập lệnh để hỗ trợ định dạng hạt nhân của bạn và đóng góp cho AOSP.
  • Đặt BOARD_KERNEL_VERSION thành phiên bản hạt nhân và BOARD_KERNEL_CONFIG_FILE thành đường dẫn của tệp cấu hình hạt nhân đã xây dựng .config . Cả hai biến phải được cập nhật khi hình ảnh hạt nhân được cập nhật.
  • Ngoài ra, đặt PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS thành false để bỏ qua việc kiểm tra yêu cầu hạt nhân. Điều này không được khuyến khích vì mọi sự không tương thích đều bị ẩn và chỉ được phát hiện khi chạy các bài kiểm tra VTS sau khi cập nhật.

Bạn có thể xem mã nguồn của kịch bản trích xuất thông tin hạt nhân extract_kernel.py .