Intégrer des applications non groupées

Les applications qui incluent le téléphone, le lecteur multimédia, la bibliothèque Car UI et les SMS sont considérées comme des applications non groupées (c'est-à-dire qu'elles ne sont pas groupées avec la plate-forme Android). Ces applications incluent la logique de réception des données de l'application associée du téléphone et l'UX côté voiture, y compris les paramètres d'association et d'inscription aux fonctionnalités. Les APK créés à partir de code non groupé fonctionnent avec plusieurs versions de la plate-forme.

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 -cq -j4

Pour en savoir plus sur l'utilisation du code source AOSP, consultez Initialiser le client Repo.

Compiler le code

Vous pouvez compiler le code à l'aide d'Android Studio ou à partir de la ligne de commande.

Android Studio

Pour compiler le code dans Android Studio :

  1. Dans Android Studio, importez le fichier de compilation suivant :

    packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
    
  2. Assurez-vous que le JDK Gradle est défini sur la version 11 ou ultérieure :

    Version 11

    Figure 1 : Définissez le JDK Gradle sur la version 11 dans Android Studio.

Ligne de commande

Pour compiler le code à partir de la ligne de commande :

  1. Définissez l'emplacement du SDK Android à l'aide de l'une des méthodes suivantes :

    • Créez packages/apps/Car/libs/aaos-apps-gradle-project/local.properties, puis définissez la propriété sdk.dir qu'il contient. Android Studio peut le faire automatiquement lorsque vous ouvrez un projet. Par exemple, utilisez sdk.dir=/Users/MY-USERNAME/Library/Android/sdk.

      ou

    • Définissez la variable d'environnement ANDROID_SDK_ROOT avec le chemin d'accès au SDK Android.

  2. Ouvrez une invite de commande ou une fenêtre de shell.

  3. Accédez à packages/apps/Car/libs/aaos-apps-gradle-project.

  4. Exécutez la commande suivante :

    ./gradlew assemble

Niveaux d'API minimaux requis

Chaque application dissociée fonctionne sur les plates-formes Android dont la version est égale ou supérieure à sa minSdkVersion. Le tableau suivant répertorie la version minimale de l'API acceptée par chaque application :

Application Niveau d'API minimal
Agenda 29
Bibliothèque Car UI 29
CompanionDevice 29
Téléphone 31
Contenus multimédias 30
Messenger (SMS) 30
Hôte AOSP 29

Intégrer une précompilation dans une image système

Si la version de la plate-forme Android est compatible avec l'application (voir le tableau de la section précédente), vous pouvez ajouter l'APK à l'image système. Toutefois, les étapes d'intégration diffèrent selon les versions de la plate-forme Android.

Android 13 ou version ultérieure

Android 13 et versions ultérieures n'incluent pas le code source des applications non groupées, mais vous pouvez inclure un APK précompilé dans la compilation de la plate-forme pour des cas d'utilisation tels que les tests de conformité CDD ou le provisionnement d'applications privilégiées. Pour spécifier l'APK, utilisez la règle Soong android_app_import, comme indiqué dans l'exemple suivant :

android_app_import {
    name: "CarMediaApp",
    apk: "CarMediaApp.apk",
    privileged: true,
    certificate: "platform", // Media must be signed by the platform
    required: ["allowed_privapp_com.android.car.media"],
}

Android 12 et versions antérieures

Android 12 et les versions antérieures incluent le code source des applications non groupées, mais vous pouvez toujours spécifier un APK précompilé à inclure. Étant donné que Soong donne par défaut la priorité au code source par rapport à un module précompilé, il est nécessaire de définir l'indicateur prefer sur true dans la règle android_app_import, comme indiqué dans l'exemple suivant :

android_app_import {
    name: "CarDialerApp",
    apk: "CarDialerApp.apk",
    privileged: true,
    presigned: true, // Dialer can have its own signature
    required: ["allowed_privapp_com.android.car.dialer"],
    overrides: ["Dialer"],
    prefer: true, // The prebuilt replaces a source target with the same name
    }

Informations sur l'application dissociée

Application/Distribution Privileged unbundled
system signed
Privileged unbundled
non-system signed
Les applications non groupées
n'ont pas besoin de se trouver sur la partition système
Application – Agenda X
App - CompanionDeviceSupport X
Application : Téléphone X
Application : hôte AOSP X
Application – Contenu multimédia X
Application – Messenger (SMS) X
Mettre à jour la distribution OTA OTA ou Google Play OTA ou Google Play