Integracja hosta AOSP

Host aplikacji Automotive w ramach Android Open Source Project (AOSP) jest częścią biblioteki aplikacji do samochodu używanej przez deweloperów zewnętrznych do włączania aplikacji na Androida Automotive. Host aplikacji to aplikacja systemowa, która umożliwia aplikacjom samochodowym deweloperów zewnętrznych renderowanie w ich imieniu komponentów interfejsu użytkownika w stylu OEM.

Aby uruchamiać aplikacje deweloperów zewnętrznych, należy zainstalować zarówno aplikację dewelopera zewnętrznego, jak i hosta aplikacji Automotive w ramach AOSP:

  • Host aplikacji Automotive udostępnia aplikacjom deweloperów zewnętrznych zestaw szablonów i komponentów interfejsu użytkownika zoptymalizowanych pod kątem pojazdów, w tym funkcji takich jak użyteczność i bezpieczeństwo.
  • Producenci OEM mogą stylizować te szablony i komponenty interfejsu użytkownika.
  • Jaki jest efekt? Aplikacje deweloperów zewnętrznych są wizualnie dobrze zintegrowane z systemem informacyjno-rozrywkowym producenta OEM.

Z tej strony dowiesz się, jak wygenerować hosta aplikacji Automotive w ramach AOSP z projektu Gradle w gałęzi ub-automotive, a następnie jak zintegrować hosta aplikacji Automotive w ramach AOSP z elementami docelowymi w samochodzie.

Sprawdź kod

Aby sprawdzić kod bez pakietu:

  1. Uruchom to polecenie:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
  2. Więcej informacji o pracy z kodem źródłowym AOSP znajdziesz w artykule Inicjowanie klienta Repo.

  3. Zainstaluj Android Studio.

Tworzenie pakietu APK hosta AOSP

  1. Sprawdź ub-automotive, a następnie otwórz projekt Gradle w packages/apps/Car/Templates/Host.
  2. Aby skonfigurować projekt za pomocą pakietu Android SDK, skonfiguruj plik local.properties projektu. Ścieżkę znajdziesz w Android Studio w Ustawieniach pakietu Android SDK.
    sdk.dir=${path_to_android_sdk_location}
  3. Utwórz pakiet APK hosta jako typowy projekt Gradle. Na przykład uruchom polecenie gradle:
    ./gradlew :app:assembleDebug

    Plik APK znajduje się w:

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

Osadzanie hosta AOSP

  1. Utwórz nowy plik Android.mk, aby dodać do niego te treści:
    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. Zmień nazwę pliku app-debug.apk na AOSPHost.apk i umieść go w tym samym folderze co Android.mk.
  3. Dodaj moduł CarAOSPHost do elementów docelowych jako PRODUCT_PACKAGES:
    PRODUCT_PACKAGES += \
       CarAOSPHost \

Dodawanie konfiguracji uprawnień

  1. Utwórz plik o nazwie com.android.car.templates.host.xml, który będzie zawierać te treści:
    <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. W elemencie docelowym dodaj plik konfiguracyjny do elementów docelowych:
    PRODUCT_COPY_FILES += \
        <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml

Kompilowanie elementu docelowego

Gdy skompilujesz element docelowy, host zostanie zainstalowany i przyznane zostaną uprawnienia:

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

Testowanie integracji

Aby skompilować i zainstalować próbki, zapoznaj się z tym projektem na GitHubie: car-samples/car_app_library.