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é:
- Exécutez la commande suivante :
repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master repo sync -j4
Pour en savoir plus sur l'utilisation du code source AOSP, consultez la page Initialiser un client Repo.
- Installez Android Studio.
Créer l'APK hôte AOSP
- Vérifiez
ub-automotive
, puis ouvrez le projet Gradle souspackages/apps/Car/Templates/Host
. - 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}
- 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
- 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)
- Renommez
app-debug.apk
enAOSPHost.apk
et placez l'APK dans le même dossier queAndroid.mk
. - Ajoutez le module
CarAOSPHost
à vos cibles en tant quePRODUCT_PACKAGES
:PRODUCT_PACKAGES += \ CarAOSPHost \
Ajouter la configuration des autorisations
- 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>
- 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.