Panduan integrasi host AOSP

Host Aplikasi Otomotif Proyek Open Source Android (AOSP) adalah bagian dari Library Aplikasi Mobil digunakan oleh developer pihak ketiga (3P) untuk mengaktifkan aplikasi untuk Android Automotive. Host Aplikasi adalah sistem yang memungkinkan aplikasi mobil pihak ketiga merender komponen antarmuka pengguna (UI) bergaya OEM atas namanya.

Untuk menjalankan aplikasi pihak ketiga, aplikasi pihak ketiga dan AOSP Automotive App Host harus diinstal:

  • Automotive App Host menyediakan serangkaian template dan komponen UI ke aplikasi pihak ketiga dioptimalkan untuk kendaraan, termasuk kemampuan seperti kegunaan dan keamanan.
  • OEM dapat menata gaya template dan komponen UI ini.
  • Hasilnya? Aplikasi pihak ketiga secara visual terintegrasi dengan baik ke dalam sistem infotainmen OEM.

Halaman ini menjelaskan cara membuat Host Aplikasi Otomotif AOSP dari project Gradle dalam Cabang ub-automotive, lalu cara mengintegrasikan Host Aplikasi Automotive AOSP ke dalam mobil target.

Melihat kode

Untuk melihat kode yang tidak dipaketkan:

  1. Jalankan perintah berikut:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
    
  2. Untuk mempelajari lebih lanjut cara menggunakan kode sumber AOSP, lihat Melakukan inisialisasi klien Repo.

  3. Instal Android Studio.

Membuat APK host AOSP

  1. Lihat ub-automotive, lalu buka project Gradle di bagian packages/apps/Car/Templates/Host.
  2. Untuk mengonfigurasi project dengan Android SDK, konfigurasikan File local.properties. Anda dapat menemukan jalur di bagian Setelan Android SDK di Android di Studio.
    sdk.dir=${path_to_android_sdk_location}
    
  3. Buat APK host sebagai project Gradle standar. Misalnya, jalankan gradle berikut:
    ./gradlew :app:assembleDebug
    

    File APK terletak di:

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

Menyematkan host AOSP

  1. Buat file Android.mk baru untuk menyertakan konten berikut:
    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. Ganti nama app-debug.apk menjadi AOSPHost.apk dan tempatkan APK di folder yang sama dengan Android.mk.
  3. Tambahkan modul CarAOSPHost ke target Anda sebagai PRODUCT_PACKAGES:
    PRODUCT_PACKAGES += \
       CarAOSPHost \
    

Menambahkan konfigurasi izin

  1. Buat file bernama com.android.car.templates.host.xml untuk memuat hal berikut:
    <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. Pada target Anda, tambahkan file konfigurasi ke target:
    PRODUCT_COPY_FILES += \
        <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
    

Membuat target

Saat Anda membangun target, host akan diinstal dan izin akan diberikan:

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

Menguji integrasi

Untuk membangun dan menginstal contoh, lihat project GitHub ini, car-samples/car_app_library.