Hướng dẫn tích hợp máy chủ AOSP (Dự án nguồn mở Android)

Máy chủ ứng dụng Automotive App Host của Dự án nguồn mở Android (AOSP) là một phần của Thư viện Ứng dụng cho Ô 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 Automotive. Máy chủ lưu trữ ứng dụng là một hệ thống ứng dụng cho phép các ứng dụng ô tô của bên thứ ba kết xuất thành phần giao diện người dùng (UI) theo kiểu OEM thay mặt cho ứng dụng.

Để chạy ứng dụng bên thứ ba, cả ứng dụng bên thứ ba và AOSP Automotive App Host đều phải được đã cài đặt:

  • Automotive App Host cung cấp cho các ứng dụng bên thứ ba một bộ mẫu và thành phần giao diện người dùng được tối ưu hoá cho xe, bao gồm cả những tính năng như khả năng hữu dụng và độ an toàn.
  • OEM có thể tạo kiểu cho các thành phần và mẫu giao diện người dùng này.
  • Kết quả là gì? Các ứng dụng của bên thứ ba đượ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 AOSP Automotive App Host qua dự án Gradle trong Nhánh ub-automotive và sau đó là cách tích hợp AOSP Automotive App Host vào ô tô mục tiêu.

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

Để xem mã chưa được nhóm, hãy làm như sau:

  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 chạy ứng dụng Repo.

  3. Cài đặt Android Studio.

Tạo APK máy chủ AOSP

  1. Hãy 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. 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 APK máy chủ dưới dạng một dự án Gradle thông thường. Ví dụ: chạy gradle :
    ./gradlew :app:assembleDebug
    

    Tệp APK nằm trong:

    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 để 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 rồi đặt APK vào trong cùng thư mục với Android.mk.
  3. Thêm mô-đun CarAOSPHost vào các 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 là com.android.car.templates.host.xml để chứa các 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 các 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à quyền sẽ được cấp:

      …
      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.