Nicht paketierte Apps einbinden

Apps, die Telefon, Medien, die Auto-UI-Mediathek und SMS enthalten, gelten als nicht paketierte Apps, d. h., sie sind nicht mit der Android-Plattform verknüpft. Diese Apps enthalten die Logik zum Empfangen von Daten aus der Smartphone-Begleiter-App und die UX auf der Seite des Autos, 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 auschecken

Führen Sie zum Auschecken des entpackten Codes Folgendes aus:

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. Achten Sie darauf, dass das Gradle JDK auf Version 11 oder höher festgelegt ist:

    Version 11

    Abbildung 1: Legen Sie in Android Studio 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 die darin enthaltene Property sdk.dir fest. Android Studio kann dies automatisch beim Öffnen eines Projekts tun. Verwenden Sie zum Beispiel 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. Geh zu packages/apps/Car/libs/aaos-apps-gradle-project.

  4. Führen Sie den folgenden Befehl aus:

    ./gradlew assemble

Mindest-API-Level

Jede nicht paketierte App funktioniert auf Android-Plattformen mit einer Version, die der minSdkVersion entspricht oder höher ist. In der folgenden Tabelle sind die Mindest-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

Vorab-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 enthält keinen Quellcode für nicht gebundelte Apps. Sie können jedoch ein vorgefertigtes APK in den Plattformbuild aufnehmen, um Anwendungsfälle wie CDD-Compliance-Tests 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 enthalten Quellcode für nicht gebundelte Apps. Sie können jedoch weiterhin ein vorgefertigtes APK angeben. Da Soong standardmäßig dem Quellcode Vorrang vor einem vordefinierten Code einräumt, 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/Distribution Berechtigtes nicht gebündeltes
System, das
Berechtigte, nicht paketierte
nicht vom System signierte
Nicht gebundelte
müssen sich nicht in der Systempartition befinden
App: Google Kalender X
App – CompanionDeviceSupport X
App – Telefon X
App – AOSP-Host X
App – Medien X
App – Messenger (SMS) X
Verteilung aktualisieren OTA OTA oder Google Play OTA oder Google Play