Mã thông báo thiết kế OEM

Mã thông báo thiết kế OEM là một bản triển khai Android Automotive OS (AAOS) của hệ thống Material Design . Không giống như phương pháp lựa chọn theo thuật toán hoặc người dùng đối với các giá trị mã thông báo trên thiết bị di động, OEM chỉ định các giá trị mã thông báo thiết kế. Mã thông báo thiết kế đại diện cho các quyết định thiết kế nhỏ, lặp đi lặp lại tạo nên phong cách trực quan của hệ thống thiết kế và thay thế các giá trị tĩnh bằng các tên tự giải thích. Mã thông báo tương tự như mã thông báo được xác định bởi hệ thống Thiết kế Vật liệu.

Thư viện mã thông báo OEM

Mã thông báo thiết kế OEM được tham chiếu thông qua thư viện mã thông báo OEM, bao gồm ba thành phần được minh họa trong Hình 1.

Hình 1. Các thành phần thư viện mã thông báo OEM.

Thư viện tĩnh

Thành phần thư viện tĩnh của thư viện mã thông báo OEM tạo điều kiện truy cập vào các giá trị mã thông báo như sau.

  • Cung cấp API để truy cập các giá trị OEM cho mã thông báo.
  • Cho phép chọn tham gia ghi đè các tham chiếu mã thông báo trong chủ đề bằng các giá trị OEM.

Thư viện chia sẻ

Thành phần thư viện dùng chung chịu trách nhiệm xác định những điều sau:

  • Tên thư viện.
  • Chọn tham gia Boolean để kích hoạt các giá trị mã thông báo OEM.
  • Kiểu cung cấp giá trị mã thông báo OEM.

Để phù hợp với quyền sở hữu OEM của thành phần thư viện dùng chung này, bao gồm tên gói do OEM xác định, OEM có thể tạo ghi đè triển khai thư viện dùng chung.

Hình 2. Ghi đè triển khai thư viện dùng chung.

Thư viện chia sẻ OEM

Ghi đè OEM của thành phần thư viện dùng chung cho phép OEM sở hữu thư viện trong khi vẫn duy trì khả năng tương thích với các thành phần khác trong thư viện mã thông báo OEM bằng cách cung cấp phương tiện để OEM đặt tên gói và chữ ký trong khi không sửa đổi việc triển khai thư viện dùng chung.

Ghi đè cho thư viện dùng chung có thể được xác định như dưới đây:

override_android_app {
    name: "[OEM]-token-shared-lib",
    base: "token-shared-lib",
    package_name: "com.[OEM].sharedlib",
    rename_resources_package: false,
    certificate: …
}

Để đặt giá trị mã thông báo, hãy xem Chỉ định giá trị mã thông báo OEM .

Tùy chỉnh thư viện chia sẻ OEM

Để hỗ trợ các sơ đồ khác nhau cho các giá trị mã thông báo (ví dụ: phân biệt kiểu máy hoặc chế độ ổ đĩa), OEM có thể cung cấp giá trị động cho mã thông báo bằng cách nhắm mục tiêu thư viện chia sẻ OEM với Lớp phủ tài nguyên thời gian chạy (RRO). Để tìm hiểu thêm, hãy xem Thay đổi giá trị tài nguyên của ứng dụng khi chạy .

Để đặt giá trị mã thông báo, hãy xem Chỉ định giá trị mã thông báo OEM .

Chỉ định giá trị mã thông báo OEM

Để chỉ định giá trị mã thông báo, hãy đặt thuộc tính tương ứng theo kiểu OemStyle thành giá trị được yêu cầu.

<resources>
    <style name="OemStyle">
        <item name="colorPrimary">#B0C5FF</item>
        <item name="colorOnPrimary">#002B76</item>
        <item name="colorPrimaryContainer">#003FA4</item>
        <item name="colorOnPrimaryContainer">#D9E2FF</item>
        …
    </style>
</resources>

Chọn tham gia các giá trị OEM

Để ứng dụng có thể truy cập các giá trị mã thông báo do OEM cung cấp, trước tiên OEM phải chọn ghi đè các giá trị mã thông báo mặc định bằng cách định cấu hình boolean enable_oem_tokens thành true .

Giá trị mã thông báo RRO

Tương tự như cách đặt giá trị mã thông báo trong OemStyle , RRO có thể được sử dụng để sửa đổi kiểu nhằm cung cấp các giá trị mã thông báo thay thế.

<resources>
    <style name="OemStyle">
        <item name="com.android.oem.tokens:colorPrimary">#B0C5FF</item>
        <item name="com.android.oem.tokens:colorOnPrimary">#002B76</item>
        <item name="com.android.oem.tokens:colorPrimaryContainer">#003FA4</item>
        <item name="com.android.oem.tokens:colorOnPrimaryContainer">#D9E2FF</item>
        …
    </style>
</resources>

RRO nên đặt thuộc tính thư viện dùng chung theo kiểu bằng cách chỉ định tên thư viện dùng chung.

Cấu hình tải lần cuối

Các hệ thống bao gồm triển khai OEM của thư viện chia sẻ mã thông báo phải định cấu hình hệ thống để tải thư viện dùng chung sau các lớp ứng dụng. Để làm như vậy, hãy bao gồm tên thư viện ( com.android.oem.tokens ) trong cấu hình config_sharedLibrariesLoadedAfterApp trên hệ thống. Nếu bạn có quyền truy cập vào Dịch vụ ô tô của Google (GAS), thì điều này sẽ được thực thi như một yêu cầu.

<!-- The OEM token shared library will be loaded after app classes -->
<string-array name="config_sharedLibrariesLoadedAfterApp" translatable="false">
    <item>com.android.oem.tokens</item>
</string-array>

Thực hành tốt nhất

Các phương pháp hay nhất cho thư viện mã thông báo OEM được mô tả bên dưới.

Kích hoạt chiến lược cập nhật linh hoạt

Hãy xem các chiến lược bên dưới để đảm bảo bạn xây dựng tính linh hoạt đối với các bản cập nhật.

Thư viện chia sẻ OEM

Vì các thư viện chia sẻ hệ thống bắt buộc phải được cài đặt sẵn trên hình ảnh hệ thống nên các thiết bị phải đi kèm với thư viện hoặc thư viện phải được thêm vào như một phần của bản cập nhật qua mạng (OTA) (để tìm hiểu thêm, hãy xem Cập nhật OTA ). Tuy nhiên, việc bao gồm việc triển khai sơ khai ghi đè OEM của thư viện chia sẻ mã thông báo OEM trên hình ảnh hệ thống cho phép bản cập nhật triển khai hoạt động đầy đủ được đẩy tới các thiết bị sau này mà không cần OTA.

RRO thư viện chia sẻ

Mặc dù không có yêu cầu cài đặt RRO dưới dạng ứng dụng hệ thống, nhưng việc làm như vậy sẽ cung cấp một số hành vi cập nhật có thể mong muốn.

  • Tự động cập nhật ứng dụng khi người dùng chưa đăng nhập.
  • Người dùng không thể gỡ cài đặt (người dùng chỉ có thể gỡ cài đặt các bản cập nhật ).