Nicht paketierte Apps einbinden

Apps, die Telefon, Medien, die Auto-UI-Bibliothek und SMS enthalten, gelten als entkoppelte Apps (d. h., sie sind von der Android-Plattform entkoppelt). Solche Apps enthalten die Logik zum Empfangen von Daten aus der Begleit-App für Smartphones und die UX auf der Fahrzeugseite, einschließlich Einstellungen für die Verknüpfung und die Registrierung von Funktionen. APKs, die aus entkoppeltem Code erstellt wurden, funktionieren mit mehreren Versionen der Plattform.

Code ansehen

Führen Sie Folgendes aus, um den entkoppelten Code anzusehen:

repo init -u https://android.googlesource.com/platform/manifest -b ub-automotive-master
repo sync -cq -j4

Weitere Informationen zum Arbeiten mit AOSP-Quellcode finden Sie unter Repo Client initialisieren.

Code erstellen

Sie können den Code mit Android Studio oder über die Befehlszeile erstellen.

Android Studio

So erstellen Sie den Code in Android Studio:

  1. Importieren Sie in Android Studio die folgende Build-Datei:

    packages/apps/Car/libs/aaos-apps-gradle-project/build.gradle
    
  2. Achten Sie darauf, dass das Gradle-JDK auf Version 11 oder höher festgelegt ist:

    Version 11

    Abbildung 1 : Gradle-JDK in Android Studio auf Version 11 festlegen

Befehlszeile

So erstellen Sie den Code über die Befehlszeile:

  1. Legen Sie den Speicherort des Android SDK mit einer der folgenden Methoden fest:

    • Erstellen Sie packages/apps/Car/libs/aaos-apps-gradle-project/local.properties und legen Sie dann die darin enthaltene Eigenschaft sdk.dir fest. Android Studio kann dies beim Öffnen eines Projekts automatisch tun. Verwenden Sie beispielsweise sdk.dir=/Users/MY-USERNAME/Library/Android/sdk.

      oder

    • Legen Sie die Umgebungsvariable ANDROID_SDK_ROOT mit dem Pfad zum Android SDK fest.

  2. Öffnen Sie eine Eingabeaufforderung oder ein Shell-Fenster.

  3. Wechseln Sie zu packages/apps/Car/libs/aaos-apps-gradle-project.

  4. Führen Sie den folgenden Befehl aus:

    ./gradlew assemble

Mindest-API-Level

Jede entkoppelte App funktioniert auf Android-Plattformen mit einer Version, die gleich oder höher als die minSdkVersion ist. In der folgenden Tabelle sind die minimalen API-Versionen aufgeführt, die von den einzelnen Apps unterstützt werden:

App Mindest-API-Level
Kalender 29
Auto-UI-Bibliothek 29
CompanionDevice 29
Telefon 31
Medien 30
Messenger (SMS) 30
AOSP-Host 29
App-Sperre 34

Vordefinierte App in ein System-Image einbinden

Wenn die Android-Plattformversion von der App unterstützt wird (siehe Tabelle im vorherigen Abschnitt), können Sie das APK dem System-Image hinzufügen. Die Schritte zur Einbindung unterscheiden sich jedoch je nach Android-Plattformversion.

Android 13 und höher

Android 13 und höher enthält keinen Quellcode für entkoppelte Apps. Sie können jedoch ein vordefiniertes APK in den Plattform-Build einbinden, z. B. für CDD-Konformitätstests oder die Bereitstellung privilegierter Apps. Geben Sie das APK mit der android_app_import Soong-Regel an, wie im folgenden Beispiel gezeigt:

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 und niedriger

Android 12 und niedriger enthält Quellcode für entkoppelte Apps. Sie können jedoch trotzdem ein vordefiniertes APK angeben, das eingebunden werden soll. Da Soong standardmäßig Quellcode Vorrang vor einem vordefinierten APK einräumt, müssen Sie das Flag prefer in der Regel android_app_import auf true setzen, wie im folgenden Beispiel gezeigt:

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
}

Details zu entkoppelten Apps

App Privilegierte entkoppelte App
System signiert
Privilegierte entkoppelte App
nicht vom System signiert
Entkoppelte App
muss nicht auf der Systempartition sein
Verteilung von Updates OTA OTA oder Google Play OTA oder Google Play
AOSP-Host X
Kalender X
CompanionDeviceSupport X
Kontrollzentrum (Multi-Display) X
Telefon X
Medien X
Messenger (SMS) X
Sperre für sensible Apps X