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

Máy chủ ứng dụng ô tô của Dự án mã nguồn mở Android (AOSP) là một phần của Thư viện ứng dụng ô tô được các nhà phát triển bên thứ ba (3P) sử dụng để hỗ trợ các ứng dụng cho Android Ô tô. 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 3P thay mặt nó 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 3P, phải cài đặt cả ứng dụng 3P và Máy chủ ứng dụng ô tô AOSP:

  • Máy chủ ứng dụng ô tô cung cấp cho ứng dụng 3P một bộ mẫu giao diện người dùng và thành phần được tối ưu hóa cho ô tô, bao gồm các khả năng như khả năng sử dụng và an toàn.
  • 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ả? Các ứng dụng 3P được tích hợp trực quan vào hệ thống thông tin giải trí của 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 và sau đó cách tích hợp Máy chủ ứng dụng ô tô AOSP vào mục tiêu ô tô.

Kiểm tra mã

Để kiểm tra mã chưa được nhóm:

  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 Khởi tạo ứng dụng khách Repo .

  3. Cài đặt Android Studio .

Tạo APK máy chủ AOSP

  1. Hãy xem ub-automotive và sau đó 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 trong Cài đặt SDK Android trong Android Studio.
    sdk.dir=${path_to_android_sdk_location}
    
  3. Tạo APK máy chủ dưới dạng dự án Gradle điển hình. 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 một tệp Android.mk mới để bao gồ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 APK vào cùng thư mục với Android.mk .
  3. Thêm mô-đun CarAOSPHost vào mục tiêu của bạn 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 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 của bạn, hãy thêm tệp cấu hình vào mục tiêu của bạn:
    PRODUCT_COPY_FILES += \
        <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
    

Xây dựng mục tiêu

Khi bạn xây dựng mục tiêu, máy chủ sẽ được cài đặt và được 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 tra sự tích hợp

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