Przewodnik po integracji hosta AOSP

Host aplikacji samochodowej Android Open Source Project (AOSP) jest częścią biblioteki aplikacji samochodowych używanej przez zewnętrznych programistów (3P) do udostępniania aplikacji dla Android Automotive. Host aplikacji to aplikacja systemowa, która umożliwia aplikacjom samochodowym 3P renderowanie w jej imieniu komponentów interfejsu użytkownika w stylu OEM.

Aby uruchomić aplikacje 3P, należy zainstalować zarówno aplikację 3P, jak i hosta aplikacji samochodowej AOSP:

  • Automotive App Host zapewnia aplikacjom 3P zestaw szablonów interfejsu użytkownika i komponentów zoptymalizowanych pod kątem pojazdów, w tym funkcje takie jak użyteczność i bezpieczeństwo.
  • Producenci OEM mogą stylizować te szablony i komponenty interfejsu użytkownika.
  • Wynik? Aplikacje 3P są wizualnie dobrze zintegrowane z systemem informacyjno-rozrywkowym producenta OEM.

Na tej stronie wyjaśniono, jak wygenerować hosta aplikacji samochodowej AOSP z projektu Gradle w branży ub-automotive , a następnie jak zintegrować hosta aplikacji motoryzacyjnej AOSP z docelowymi miejscami samochodowymi.

Sprawdź kod

Aby sprawdzić uwolniony kod:

  1. Uruchom następujące polecenie:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
    
  2. Aby dowiedzieć się więcej o pracy z kodem źródłowym AOSP, zobacz Inicjowanie klienta Repo .

  3. Zainstaluj Android Studio .

Utwórz plik 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ą zestawu SDK systemu Android, skonfiguruj plik local.properties swojego projektu. Ścieżkę znajdziesz w Ustawieniach zestawu SDK systemu Android w Android Studio.
    sdk.dir=${path_to_android_sdk_location}
    
  3. Utwórz hostujący plik APK 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

Osadź hosta AOSP

  1. Utwórz nowy plik Android.mk , który będzie zawierał następującą treść:
    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ść plik APK w tym samym folderze co Android.mk .
  3. Dodaj moduł CarAOSPHost do swoich celów jako PRODUCT_PACKAGES :
    PRODUCT_PACKAGES += \
       CarAOSPHost \
    

Dodaj konfigurację uprawnień

  1. Utwórz plik o nazwie com.android.car.templates.host.xml , który będzie zawierał następujące elementy:
    <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 swoim celu dodaj plik konfiguracyjny do swoich celów:
    PRODUCT_COPY_FILES += \
        <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
    

Zbuduj cel

Kiedy budujesz cel, host jest instalowany i udzielane jest pozwolenie:

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

Przetestuj integrację

Aby skompilować i zainstalować przykłady, zobacz ten projekt GitHub, car-samples/car_app_library .