Hướng dẫn tích hợp máy chủ AOSP

Dự án nguồn mở Android (AOSP) Automotive App Host là một phần của Thư viện ứng dụng ô tô mà các nhà phát triển bên thứ ba (3P) sử dụng để bật ứng dụng cho Android Automotive. Máy chủ ứng dụng là một ứng dụng hệ thống cho phép các ứng dụng ô tô của bên thứ ba thay mặt hiển thị các thành phần giao diện người dùng (UI) theo kiểu OEM.

Để chạy ứng dụng bên thứ ba, bạn phải cài đặt cả ứng dụng bên thứ ba và Máy chủ lưu trữ ứng dụng ô tô AOSP:

  • Automotive App Host cung cấp cho các ứng dụng bên thứ ba một bộ mẫu giao diện người dùng và các thành phần được tối ưu hoá cho xe, bao gồm cả các tính năng như khả năng hữu dụng và an toàn.
  • Nhà sản xuất thiết bị gốc (OEM) có thể tạo kiểu cho các mẫu và thành phần giao diện người dùng này.
  • Kết quả là gì? Ứng dụng bên thứ ba được tích hợp hiệu quả vào hệ thống thông tin giải trí của nhà sản xuất thiết bị gốc (OEM).

Trang này giải thích cách tạo Máy chủ ứng dụng ô tô AOSP từ dự án Gradle trong nhánh ub-automotive, sau đó cách tích hợp Máy chủ ứng dụng ô tô AOSP vào mục tiêu ô tô.

Hãy xem đoạn mã vừa tải

Cách kiểm tra mã đã tách:

  1. Chạy lệnh sau:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
  2. Để tìm hiểu thêm về cách làm việc với mã nguồn AOSP, hãy xem phần Khởi chạy ứng dụng Repo.

  3. Cài đặt Android Studio.

Tạo tệp APK máy chủ AOSP

  1. Xem ub-automotive rồi mở dự án Gradle trong packages/apps/Car/Templates/Host.
  2. Để định cấu hình dự án bằng SDK Android, hãy định cấu hình tệp local.properties của dự án. Bạn có thể tìm thấy đường dẫn này trong phần Cài đặt SDK Android trong Android Studio.
    sdk.dir=${path_to_android_sdk_location}
  3. Tạo tệp APK lưu trữ dưới dạng một dự án Gradle thông thường. Ví dụ: chạy lệnh gradle:
    ./gradlew :app:assembleDebug

    Tệp APK nằm ở:

    packages/apps/Car/Templates/Host/app/build/outputs/apk/debug/app-debug.apk

Nhúng máy chủ AOSP

  1. Tạo tệp Android.mk mới để thêm nội dung sau:
    LOCAL_PATH := $(my-dir)
    ################## Start of AOSPHost target ##################
    include $(CLEAR_VARS)
    LOCAL_MODULE := CarAOSPHost
    LOCAL_LICENSE_KINDS := legacy_notice
    LOCAL_LICENSE_CONDITIONS := notice
    LOCAL_MODULE_OWNER := google
    LOCAL_SRC_FILES := AOSPHost.apk
    LOCAL_MODULE_CLASS := APPS
    LOCAL_MODULE_TAGS := optional
    LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
    LOCAL_BUILT_MODULE_STEM := package.apk
    LOCAL_CERTIFICATE := PRESIGNED
    LOCAL_PRIVILEGED_MODULE := true
    LOCAL_PRODUCT_MODULE := true
    LOCAL_DEX_PREOPT := false
    include $(BUILD_PREBUILT)
  2. Đổi tên app-debug.apk thành AOSPHost.apk và đặt tệp APK vào cùng thư mục với Android.mk.
  3. Thêm mô-đun CarAOSPHost vào các mục tiêu dưới dạng PRODUCT_PACKAGES:
    PRODUCT_PACKAGES += \
       CarAOSPHost \

Thêm cấu hình quyền

  1. Tạo một tệp có tên là com.android.car.templates.host.xml để chứa nội dung sau:
    <permissions>
        <!-- Rename the package to com.android.car.templates.host -->
        <privapp-permissions package="com.android.car.templates.host">
            <!-- To be able to display activities in the cluster -->
            <permission name="android.car.permission.CAR_DISPLAY_IN_CLUSTER" />
    
            <!-- To be able to show navigation state (turn by turn directions) in the cluster.-->
            <permission name="android.car.permission.CAR_NAVIGATION_MANAGER" />
    
            <!-- To be considered a system-approved host -->
            <permission name="android.car.permission.TEMPLATE_RENDERER" />
        </privapp-permissions>
    
        <!-- Declare support for templated applications. -->
        <feature name="android.software.car.templates_host" />
    </permissions>
  2. Trong mục tiêu, hãy thêm tệp cấu hình vào mục tiêu:
    PRODUCT_COPY_FILES += \
        <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml

Tạo mục tiêu

Khi bạn tạo mục tiêu, máy chủ lưu trữ sẽ được cài đặt và cấp quyền:

      
      android.car.permission.CAR_NAVIGATION_MANAGER: granted=true
      android.car.permission.CAR_DISPLAY_IN_CLUSTER: granted=true
      android.car.permission.TEMPLATE_RENDERER: granted=true
      

Kiểm thử quá trình tích hợp

Để tạo và cài đặt các mẫu, hãy xem dự án GitHub này, car-samples/car_app_library.