Panduan integrasi host AOSP

Host Aplikasi Otomotif Proyek Sumber Terbuka Android (AOSP) adalah bagian dari Perpustakaan Aplikasi Mobil yang digunakan oleh pengembang pihak ketiga (3P) untuk mengaktifkan aplikasi untuk Android Otomotif. App Host adalah aplikasi sistem yang memungkinkan aplikasi mobil 3P merender komponen antarmuka pengguna (UI) bergaya OEM atas namanya.

Untuk menjalankan aplikasi 3P, aplikasi 3P dan Host Aplikasi Otomotif AOSP harus diinstal:

  • Automotive App Host menyediakan aplikasi 3P dengan serangkaian templat dan komponen UI yang dioptimalkan untuk kendaraan, termasuk kemampuan seperti kegunaan dan keselamatan.
  • OEM dapat mengatur gaya template dan komponen UI ini.
  • Hasil? Aplikasi 3P secara visual terintegrasi dengan baik ke dalam sistem infotainment OEM.

Halaman ini menjelaskan cara membuat AOSP Automotive App Host dari proyek Gradle di cabang ub-automotive dan kemudian cara mengintegrasikan AOSP Automotive App Host ke dalam target mobil.

Lihat kodenya

Untuk memeriksa kode yang tidak dibundel:

  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 tentang bekerja dengan kode sumber AOSP, lihat Menginisialisasi klien Repo .

  3. Instal Android Studio .

Buat APK host AOSP

  1. Periksa ub-automotive lalu buka proyek Gradle di bawah packages/apps/Car/Templates/Host .
  2. Untuk mengonfigurasi proyek dengan Android SDK, konfigurasikan file local.properties proyek Anda. Anda dapat menemukan jalurnya di Pengaturan Android SDK di Android Studio.
    sdk.dir=${path_to_android_sdk_location}
    
  3. Buat APK host sebagai proyek Gradle pada umumnya. Misalnya, jalankan perintah gradle :
    ./gradlew :app:assembleDebug
    

    File APK terletak di:

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

Sematkan 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 letakkan APK di folder yang sama dengan Android.mk .
  3. Tambahkan modul CarAOSPHost ke target Anda sebagai PRODUCT_PACKAGES :
    PRODUCT_PACKAGES += \
       CarAOSPHost \
    

Tambahkan konfigurasi izin

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

Bangun targetnya

Saat Anda membangun target, host diinstal dan izin 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
      …

Uji integrasinya

Untuk membuat dan menginstal sampel, lihat proyek GitHub ini, car-samples/car_app_library .