Phân vùng ODM

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/*/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.

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 về ABI từ odm đến vendor 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 odmvendor có thể phụ thuộc vào với nhau, nhưng phân vùng vendor phải hoạt động mà không có phân vùng odm.
  • ABI từ odm đến system giống với ABI từ vendor đến system.

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ố định
  • PRODUCT_USE_DYNAMIC_PARTITIONSBOARD_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ư 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ờ bản dựng này để cài đặt mộ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 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 vendorsystem).

Để 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 odmvendor). 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ýshell/libc.