Nicht paketierte Apps einbinden

Apps, die Dialer, Media, Car UI Library und SMS enthalten, gelten als entkoppelte Apps (d. h., sie sind von der Android-Plattform entkoppelt). Solche Apps enthalten die Logik für den Empfang von Daten von der Smartphone-Begleit-App und die Benutzeroberfläche auf der Fahrzeugseite, einschließlich Einstellungen für die Verknüpfung und die Registrierung von Funktionen. APKs, die aus nicht gebündeltem Code erstellt wurden, funktionieren mit mehreren Versionen der Plattform.

Code ansehen

Führen Sie Folgendes aus, um sich den nicht gebündelten Code anzusehen:

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

Weitere Informationen zur Arbeit 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. Prüfen Sie, ob das Gradle-JDK auf Version 11 oder höher festgelegt ist:

    Version 11

    Abbildung 1: Legen Sie in Android Studio das Gradle-JDK auf Version 11 fest.

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 das darin enthaltene Attribut sdk.dir fest. Android Studio kann dies beim Öffnen eines Projekts automatisch erledigen. Verwenden Sie zum Beispiel sdk.dir=/Users/MY-USERNAME/Library/Android/sdk.

      oder

    • Legen Sie die Umgebungsvariable ANDROID_SDK_ROOT auf den Pfad zum Android SDK fest.

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

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

  4. Führen Sie den folgenden Befehl aus:

    ./gradlew assemble

Mindestanforderungen an API-Levels

Jede entkoppelte App funktioniert auf Android-Plattformen mit einer Version, die gleich oder höher als die minSdkVersion ist. In der folgenden Tabelle ist die von jeder App unterstützte Mindest-API-Version aufgeführt:

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

Vordefinierten Build 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 Integrationsschritte unterscheiden sich jedoch je nach Android-Plattformversion.

Android 13 oder höher

Android 13 und höher enthalten keinen Quellcode für nicht gebündelte Apps. Sie können jedoch ein vorgefertigtes APK in den Plattform-Build einfügen, um Anwendungsfälle wie CDD-Konformitätstests oder die Bereitstellung privilegierter Apps zu ermöglichen. Verwenden Sie die Soong-Regel android_app_import, um das APK anzugeben, 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 nicht gebündelte Apps, aber Sie können trotzdem ein vorkompiliertes APK angeben, das enthalten sein soll. Da in Soong standardmäßig dem Quellcode Vorrang vor einem Prebuilt eingeräumt wird, muss das Flag prefer in der Regel android_app_import auf true gesetzt werden, 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 nicht gebündelten Apps

App/Vertrieb Privilegierte, nicht gebündelte
System-App signiert
Privilegiert, nicht gebündelt
Nicht systembezogen signiert
Nicht gebündelte
müssen nicht auf der Systempartition sein
App – Kalender X
App – CompanionDeviceSupport X
App – Telefon X
App – AOSP-Host X
App – Media X
App – Messenger (SMS) X
Verteilung aktualisieren OTA OTA oder Google Play OTA oder Google Play