Guide d'intégration de l'hôte AOSP

Automotive App Host du projet Android Open Source Project (AOSP) fait partie de la bibliothèque d'applications pour voitures utilisée par les développeurs tiers pour activer les applications pour Android Automotive. L'hôte d'application est une application système qui permet aux applications automobiles tierces d'afficher des composants d'interface utilisateur (UI) de style OEM en son nom.

Pour exécuter des applications tierces, l'application tierce et l'hôte d'application AOSP Automotive doivent être installés:

  • Automotive App Host fournit aux applications tierces un ensemble de composants et de modèles d'UI optimisés pour les véhicules, y compris des fonctionnalités telles que la facilité d'utilisation et la sécurité.
  • Les OEM peuvent styliser ces modèles et composants d'UI.
  • Résultat : Les applications tierces sont visuellement bien intégrées au système d'infoloisirs de l'OEM.

Cette page explique comment générer l'hôte d'application AOSP Automotive à partir du projet Gradle dans la branche ub-automotive, puis comment intégrer l'hôte d'application AOSP Automotive dans les cibles de voiture.

Consulter le code

Pour consulter le code non groupé:

  1. Exécutez la commande suivante :
    repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
    repo sync -j4
  2. Pour en savoir plus sur l'utilisation du code source AOSP, consultez la page Initialiser un client Repo.

  3. Installez Android Studio.

Créer l'APK hôte AOSP

  1. Vérifiez ub-automotive, puis ouvrez le projet Gradle sous packages/apps/Car/Templates/Host.
  2. Pour configurer le projet avec le SDK Android, configurez le fichier local.properties de votre projet. Vous trouverez le chemin d'accès sous "Android SDK Settings" (Paramètres du SDK Android) dans Android Studio.
    sdk.dir=${path_to_android_sdk_location}
  3. Créez l'APK hôte en tant que projet Gradle standard. Par exemple, exécutez la commande gradle:
    ./gradlew :app:assembleDebug

    Le fichier APK se trouve dans:

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

Intégrer l'hôte AOSP

  1. Créez un fichier Android.mk contenant le contenu suivant:
    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. Renommez app-debug.apk en AOSPHost.apk et placez l'APK dans le même dossier que Android.mk.
  3. Ajoutez le module CarAOSPHost à vos cibles en tant que PRODUCT_PACKAGES:
    PRODUCT_PACKAGES += \
       CarAOSPHost \

Ajouter la configuration des autorisations

  1. Créez un fichier nommé com.android.car.templates.host.xml contenant les éléments suivants:
    <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. Dans votre cible, ajoutez le fichier de configuration à vos cibles:
    PRODUCT_COPY_FILES += \
        <the file root>/com.android.car.templates.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/com.android.car.templates.host.xml

Créer la cible

Lorsque vous créez la cible, l'hôte est installé et l'autorisation est accordée:

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

Tester l'intégration

Pour créer et installer les exemples, consultez ce projet GitHub : car-samples/car_app_library.