Guida all'integrazione dell'host AOSP

L'host di app Automotive Android Open Source Project (AOSP) fa parte della libreria di app per auto utilizzata da sviluppatori di terze parti (3P) per abilitare app per Android Automotive. L'app host è un'app di sistema che consente alle app per auto di terze parti di eseguire il rendering dei componenti dell'interfaccia utente (UI) in stile OEM per suo conto.

Per eseguire le app 3P, è necessario installare sia l'app 3P che l'host dell'app automobilistica AOSP:

  • Automotive App Host fornisce app di terze parti con una serie di modelli e componenti dell'interfaccia utente ottimizzati per i veicoli, incluse funzionalità come usabilità e sicurezza.
  • Gli OEM possono definire uno stile per questi modelli e componenti dell'interfaccia utente.
  • Il risultato? Le app 3P sono visivamente ben integrate nel sistema di infotainment dell'OEM.

Questa pagina spiega come generare l'AOSP Automotive App Host dal progetto Gradle nel ramo ub-automotive e quindi come integrare l'AOSP Automotive App Host nei target auto.

Controlla il codice

Per verificare il codice disaggregato:

  1. Eseguire il comando seguente:
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
    
  2. Per ulteriori informazioni sull'utilizzo del codice sorgente AOSP, consulta Inizializzare un client Repo .

  3. Installa AndroidStudio .

Crea l'APK dell'host AOSP

  1. Dai un'occhiata ub-automotive e quindi apri il progetto Gradle in packages/apps/Car/Templates/Host .
  2. Per configurare il progetto con Android SDK, configura il file local.properties del tuo progetto. Puoi trovare il percorso in Impostazioni SDK Android in Android Studio.
    sdk.dir=${path_to_android_sdk_location}
    
  3. Crea l'APK host come un tipico progetto Gradle. Ad esempio, esegui il comando gradle :
    ./gradlew :app:assembleDebug
    

    Il file APK si trova in:

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

Incorpora l'host AOSP

  1. Crea un nuovo file Android.mk per includere il seguente contenuto:
    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. Rinomina app-debug.apk in AOSPHost.apk e inserisci l'APK nella stessa cartella di Android.mk .
  3. Aggiungi il modulo CarAOSPHost ai tuoi target come PRODUCT_PACKAGES :
    PRODUCT_PACKAGES += \
       CarAOSPHost \
    

Aggiungi la configurazione delle autorizzazioni

  1. Crea un file chiamato com.android.car.templates.host.xml per contenere quanto segue:
    <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. Nella tua destinazione, aggiungi il file di configurazione alle tue destinazioni:
    PRODUCT_COPY_FILES += \
        <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml
    

Costruisci l'obiettivo

Quando crei la destinazione, l'host viene installato e viene concessa l'autorizzazione:

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

Testare l'integrazione

Per creare e installare gli esempi, vedere questo progetto GitHub, car-samples/car_app_library .