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ân vùng ODM

Android 10 bao gồm hỗ trợ xây dựng phân vùng odm bằng hệ thống xây dựng Android.

Giới thiệu về phân vùng ODM

Các nhà sản xuất thiết kế ban đầu (ODM) tùy chỉnh các gói hỗ trợ bo mạch của nhà cung cấp hệ thống trên chip (SoC) (BSP) cho các thiết bị cụ thể của họ (bo mạch của họ). Điều này cho phép họ triển khai các mô-đun hạt nhân cho các thành phần dành riêng cho bo mạch, các daemon dành riêng cho bo mạch, hoặc các tính năng riêng của chúng trên các lớp trừu tượng phần cứng (HAL). Họ cũng có thể muốn thay thế hoặc tùy 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 tùy chỉnh như vậy đã ngăn cản việc sử dụng hình ảnh của một nhà cung cấp cho các thiết bị có cùng SoC (hoặc với các SoC khác nhau nhưng trong cùng một họ). Trong Android 10 trở lên, bạn có thể sử dụng phân vùng odm riêng cho các tùy chỉnh, cho phép bạn sử dụng một 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 hỗ trợ xây dựng phân vùng product , cho phép sử dụng một hình ảnh hệ thống duy nhất cho nhiều SKU phần mềm được cung cấp bởi các hình ảnh product.img khác nhau. Trong khi phân vùng product dành cho các SKU phần mềm, thì phân vùng odm dành cho các SKU phần cứng.

Với sản phẩm chuyên dụng và phân vùng ODM, bạn có thể sử dụng phân vùng system để lưu trữ mã chung để chia sẻ giữa nhiều SKU phần mềm và phân vùng của 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.

Sử dụng các phân vùng riêng biệt có những bất lợi, chẳng hạn như khó quản lý không gian đĩa (ví dụ, bạn phải dự trữ một lượng không gian hạn chế để tăng trưởng trong tương lai). Tuy nhiên, hỗ trợ Android 10 cho phân vùng động sẽ loại bỏ sự cố đĩa và giúp phân vùng lại thiết bị trong quá trình cập nhật qua mạng (OTA) .

Các 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 (tương tự như phân vùng của vendor ), được liệt kê trong bảng sau.

Thành phần dành riêng cho ODM Địa điểm
Các mô-đun nhân có thể tải được (LKM) /odm/lib/modules/*.ko
Thư viện bản địa /odm/lib[64]
HALs /odm/lib[64]/hw
SEPolicy /odm/etc/selinux
Dữ liệu đối tượng VINTF /odm/etc/vintf
tệp init.rc /odm/etc/init
Thuộc tính hệ thống /odm/build.prop
Lớp phủ tài nguyên thời gian chạy (RRO) /odm/overlay/*.apk
Ứng dụng /odm/app/*.apk
Ứng dụng cũ /odm/priv-app/*.apk
Thư viện Java /odm/framework/*.jar
Cấu hình hệ thống Android Framework /odm/etc/sysconfig/*/odm/etc/permissions/*

Không có hình ảnh tùy chỉnh

Không sử dụng hình ảnh tùy chỉnh vì chúng không hỗ trợ những điều sau:

  • Cài đặt một mô-đun cho một mục tiêu cụ thể. Hình ảnh tùy chỉnh hỗ trợ sao chép tạo tác vào một 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 OTA. Hình ảnh tùy chỉnh được sử dụng làm hình ảnh ROM gốc không thể chỉnh sửa OTA.

Duy trì ABI giữa các phân vùng

Phân vùng odm là một phần mở rộng của phân vùng vendor . Khi xem xét tính ổn định của giao diện nhị phân ứng dụng (ABI), hãy ghi nhớ kiến ​​trúc sau.

Duy trì ABI giữa các phân vùng
Hình 1. Duy trì ABI giữa các phân vùng
  • Không có sự ổn định ABI giữa phân vùng odmvendor . Cả hai phân vùng phải được nâng cấp cùng một lúc.
  • Phân vùng odmvendor có thể phụ thuộc vào nhau, nhưng phân vùng vendor phải hoạt động mà không có phân vùng odm .
  • ABI giữa odmsystem giống ABI giữa vendorsystem .

Không cho phép tương tác trực tiếp giữa phân vùng productvendor hoặc phân vùng odm . (Điều này được thực thi bởi 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 các thay đổi AOSP liên quan .

Thiết lập phân vùng ODM

Để thiết lập phân vùng odm , hãy bao gồm các cờ xây dựng sau:

  • BOARD_ODMIMAGE_PARTITION_SIZE cho kích thước phân vùng cố định
  • PRODUCT_USE_DYNAMIC_PARTITIONSBOARD_ODMIMAGE_PARTITION_RESERVED_SIZE cho kích thước phân vùng động
  • Loại hệ thống tệp BOARD_ODMIMAGE_FILE_SYSTEM_TYPE được sử dụng cho hình ảnh ODM
  • PRODUCT_ODM_PROPERTIES cho /odm/build.prop để sử dụng trong $(call inherit-product path/to/device.mk) , như trong PRODUCT_ODM_PROPERTIES += product.abc=ok

Cài đặt mô-đun vào phân vùng ODM

Sử dụng các cờ xây dựng này để cài đặt mô-đun vào phân vùng odm :

  • device_specific: true trong Android.bp
  • LOCAL_ODM_MODULE := true trong Android.mk

Bật khởi động đã xác minh

Để ngăn phần mềm độc hại giả mạo phân vùng odm , hãy bật Khởi động đã xác minh của Android (AVB) cho các phân vùng đó (giống như cách bạn làm đối với phân vùng của vendorsystem ).

Để bật AVB, hãy bao gồm cờ xây 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, hãy xem phần thay đổi cấu hình AVB .

Xử lý / odm như một 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 của vendor , hãy thay thế mọi tham chiếu của vendor được mã hóa cứng bằng một tập hợp các phân vùng hướng phần cứng (hiện tại là odmvendor ). Các vị trí tham chiếu vendor đáng chú ý trong nền tảng bao gồm trình liên kết động , trình quản lý góishell/libc .