Mit Android Automotive OS können Nutzer Apps in ihrem Auto installieren. Damit Sie Nutzer über diese Plattform erreichen können, müssen Sie eine für Autofahrer optimierte App anbieten, die mit Android Automotive OS kompatibel ist. Für Ihre Android Auto-App können Sie fast allen Code und alle Ressourcen Ihrer bestehenden App verwenden. Sie müssen jedoch einen separaten Build erstellen, der die auf dieser Seite beschriebenen Anforderungen erfüllt.
Wenn Sie Ihre Auto-App unter Android Automotive OS ausführen möchten, benötigen Sie den neuesten Templates Host, der als System-App bereitgestellt wird.
im Play Store aufrufen, um den Host zu installieren oder zu aktualisieren.Entwicklung – Übersicht
Das Hinzufügen von Android Automotive OS-Unterstützung erfordert nur wenige Schritte, wie in den Abschnitten auf dieser Seite beschrieben:
- Automotive-Modul erstellen
- Unterstützung für Android Automotive OS deklarieren
CarAppServiceundCarAppActivitydeklarieren- Gradle-Abhängigkeiten aktualisieren
Verwenden Sie Android Studio Bumblebee oder höher, damit alle Automotive OS-Funktionen aktiviert sind.
Automotive-Modul erstellen
Für einige Komponenten von Android Automotive OS, z. B. das Manifest, gelten plattformspezifische Anforderungen. Erstellen Sie ein Modul, mit dem Sie den Code für diese Komponenten von anderem Code in Ihrem Projekt trennen können, z. B. dem Code für Ihre Smartphone-App.
So fügen Sie einem vorhandenen Projekt ein Automotive-Modul hinzu:
- Klicken Sie in Android Studio auf File > New > New Module.
- Wählen Sie Automotive Module aus und klicken Sie auf Next.
- Geben Sie einen Application/Library name an. Das ist der Name, den Nutzer für Ihre App unter Android Automotive OS sehen.
- Geben Sie einen Module name ein.
- Bearbeiten Sie den Package name , damit er mit dem Ihrer vorhandenen App übereinstimmt.
Wählen Sie für das Minimum SDK die Option API 29: Android 10 (Q) aus und klicken Sie auf Next. Alle Autos, die die Car App Library unter Android Automotive OS unterstützen, verwenden Android 10 API-Level 29 oder höher. Wenn Sie diesen Wert auswählen, sind alle kompatiblen Autos abgedeckt.
Wählen Sie Add No Activity aus und klicken Sie auf Finish.
Wenn Sie ein neues Projekt starten:
- Klicken Sie in Android Studio auf File > New > New Project.
- Wählen Sie für Project Type die Option Automotive aus.
- Wählen Sie No Activity aus und klicken Sie auf Next.
- Geben Sie einen Name für Ihr Projekt an. Das ist der Name, den Nutzer für Ihre App unter Android Automotive OS sehen.
- Geben Sie einen Package name ein. Weitere Informationen zur Auswahl eines Paketnamens finden Sie im Abschnitt Paketnamen.
Wählen Sie für das Minimum SDK die Option API 29: Android 10 (Q) aus und klicken Sie auf Next.
Alle Autos, die die Car App Library unter Android Automotive OS unterstützen, verwenden Android 10 API-Level 29 oder höher. Wenn Sie diesen Wert auswählen, sind alle kompatiblen Autos abgedeckt.
Nachdem Sie Ihr Modul in Android Studio erstellt haben, öffnen Sie die Datei AndroidManifest.xml in Ihrem neuen Automotive-Modul:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.car.app">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" />
<uses-feature
android:name="android.hardware.type.automotive"
android:required="true" />
</manifest>
Das <application> Element enthält einige Standardinformationen zur App sowie ein
<uses-feature> Element, das die Unterstützung für Android Automotive OS deklariert.
Im Manifest sind keine Aktivitäten deklariert.
Funktionsanforderungen deklarieren
Fügen Sie als Nächstes das folgende uses-feature-Element zu Ihrem Manifest hinzu, um anzugeben, dass ein Template Host erforderlich ist, damit die App ordnungsgemäß funktioniert:
<manifest ...>
...
<uses-feature
android:name="android.software.car.templates_host"
android:required="true" />
...
</manifest>
Gradle-Abhängigkeiten aktualisieren
In Ihrem Automotive-Modul müssen Sie eine Abhängigkeit vom
androidx.car.app:app-automotive Artefakt,
das die CarAppActivity Implementierung enthält, die erforderlich ist, damit Ihre App
unter Android Automotive OS ausgeführt werden kann, hinzufügen.
Wenn Sie Ihre App so entwickeln, dass sie sowohl Android Auto als auch Android Automotive OS unterstützt, empfehlen wir, Ihr CarAppService in einem separaten Modul zu speichern, das Sie für Ihre mobilen und Automotive-Module freigeben. Wenn Sie diesen Ansatz verwenden, müssen Sie Ihr Automotive-Modul aktualisieren, damit es das freigegebene Modul mithilfe der Projektabhängigkeiten von Gradle enthält, wie im folgenden Snippet gezeigt:
Groovy
buildscript { ... dependencies { ... implementation "androidx.car.app:app-automotive:car_app_library_version" implementation project(':shared_module_name') } }
Kotlin
buildscript { ... dependencies { ... implementation("androidx.car.app:app-automotive:car_app_library_version") implementation(project(":shared_module_name")) } }
Unterstützung für Android Automotive OS deklarieren
Verwenden Sie den folgenden Manifesteintrag, um zu deklarieren, dass Ihre App Android Automotive OS unterstützt:
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Dieser Manifesteintrag verweist auf eine XML-Datei, in der die Automotive-Funktionen deklariert sind, die Ihre App unterstützt.
Wenn Sie angeben möchten, dass Sie eine Car App Library-App haben, fügen Sie dem Verzeichnis res/xml/ in Ihrem Android Automotive OS-Modul eine XML-Datei mit dem Namen automotive_app_desc.xml hinzu. Diese Datei sollte den folgenden Inhalt haben:
<automotiveApp>
<uses name="template"/>
</automotiveApp>
com.google.android.gms.car.application
`CarAppService` und `CarAppActivity` deklarieren
Wie bei Android Auto verwendet Android Automotive OS Ihre CarAppService
Implementierung, um Ihre App auszuführen. Eine Anleitung zum Implementieren und Deklarieren von CarAppService finden Sie unter
CarAppService und Sitzung erstellen
und CarAppService deklarieren.
Im Gegensatz zu Android Auto müssen Sie eine zusätzliche Anwendungskomponente, die CarAppActivity, als Einstiegspunkt für Ihre Android Automotive OS-App einfügen. Die Implementierung dieser Aktivität ist im Artefakt androidx.car.app:app-automotive enthalten und ist für die Kommunikation mit der Template Host-Anwendung verantwortlich, um die Benutzeroberfläche Ihrer App zu rendern. Sie sollten nur eine Instanz dieser Aktivität in Ihrem Manifest haben und sie muss so deklariert werden:
<activity android:exported="true" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:name="androidx.car.app.activity.CarAppActivity" android:launchMode="singleTask" android:label="Your app name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <meta-data android:name="distractionOptimized" android:value="true" /> </activity>
android:nameist auf den vollständig qualifizierten Klassennamen derCarAppActivity-Klasse aus dem Artefaktapp-automotivefestgelegt.android:exportedist auftruefestgelegt, da die Aktivität von einer anderen App als sich selbst (nämlich dem Launcher) gestartet werden muss.android:launchModeist aufsingleTaskfestgelegt, damit der Nutzer vom Launcher aus zur selben Instanz der Aktivität zurückkehren kann, wenn er sie verlässt.android:themeist auf@android:style/Theme.DeviceDefault.NoActionBarfestgelegt, damit die App den gesamten verfügbaren Bildschirmplatz einnimmt.- Der Intent-Filter gibt an, dass dies die Launcher-Aktivität für die App ist.
- Es gibt ein
<meta-data>-Element, das dem Betriebssystem mitteilt, dass die App verwendet werden kann, während UX-Einschränkungen gelten, z. B. wenn sich das Fahrzeug in Bewegung befindet.
Zusätzliche Anforderungen für Navigations-Apps
Für Navigations-Apps gibt es einige weitere
erforderliche Manifesteinträge für die CarAppActivity, wie im folgenden
Snippet gezeigt:
<activity android:exported="true" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:name="androidx.car.app.activity.CarAppActivity" android:launchMode="singleTask" android:label="Your app name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <!-- Include the category below ONLY for navigation apps --> <category android:name="android.intent.category.APP_MAPS" /> </intent-filter> <!-- Include the intent-filter below ONLY for navigation apps --> <intent-filter> <action android:name="androidx.car.app.action.NAVIGATE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:scheme="geo" /> </intent-filter> <meta-data android:name="distractionOptimized" android:value="true" /> </activity>
- Die zusätzliche
android.intent.category.APP_MAPSKategorie informiert das System darüber, dass Ihre App den Standort des Nutzers anzeigen kann. - Der Intent-Filter
androidx.car.app.action.NAVIGATEsorgt dafür, dass Nutzer Ihre App verwenden können, wenn sie einen impliziten Navigations-Intent von einer anderen Auto-App verarbeiten.
Deeplinks unterstützen
Wenn Sie die Nutzerfreundlichkeit Ihrer Vorlagen-App auf Android Automotive OS-Geräten verbessern möchten, können Sie Unterstützung für Deeplinks zu Ihrer CarAppActivity hinzufügen. So können Nutzer Ihre App beispielsweise direkt über einen Browser öffnen oder wenn sie eine URL erhalten, die von einem Smartphone über Quick Share freigegeben wurde.
Intent-Filter für Deeplinks hinzufügen
Damit das Betriebssystem weiß, dass Ihre App Deeplinks verarbeiten kann, müssen Sie
die entsprechenden Intent-Filter im Element <activity> für die
CarAppActivity Ihrer App hinzufügen. Weitere Informationen finden Sie unter Intent-Filter für eingehende Links hinzufügen für zusätzliche
Anleitung.
Für eine optimale Nutzerfreundlichkeit empfehlen wir, alle Deeplinks zu unterstützen, die von Ihrer mobilen App unterstützt werden und die von Ihrer Auto-App sinnvoll unterstützt werden können.
Deeplink-Intents verarbeiten
Zum Verarbeiten von Intents sollte Ihre App die Daten aus eingehenden Intents lesen
sowohl wenn die Session Ihrer Auto-App während
onCreateScreen() erstellt wird als auch wenn sie während
onNewIntent() einen neuen Intent erhält:
class MySession : Session() { // ... override fun onCreateScreen(intent: Intent): Screen { // Handle the intent when the app is being started for the first time return MyStartScreen(carContext) } override fun onNewIntent(intent: Intent) { // Handle the intent when the app is already running } }
Weitere Überlegungen
Beachten Sie bei der Entwicklung Ihrer Android Automotive OS-App die folgenden weiteren Überlegungen:
Paketnamen
Da Sie ein separates Android Package Kit (APK) für Android Automotive OS bereitstellen, können Sie den Paketnamen Ihrer mobilen App wiederverwenden oder einen neuen Paketnamen erstellen. Wenn Sie einen anderen Paketnamen verwenden, hat Ihre App zwei separate Play Store-Einträge. Wenn Sie Ihren aktuellen Paketnamen wiederverwenden, hat Ihre App einen einzigen Eintrag auf beiden Plattformen.
Das ist hauptsächlich eine geschäftliche Entscheidung. Wenn beispielsweise ein Team an der mobilen App und ein anderes Team an Ihrer Android Automotive OS-App arbeitet, kann es sinnvoll sein, separate Paketnamen zu verwenden und jedes Team seinen eigenen Play Store-Eintrag verwalten zu lassen. Der technische Aufwand für beide Ansätze ist nicht sehr unterschiedlich.
In der folgenden Tabelle sind einige weitere wichtige Unterschiede zwischen der Beibehaltung Ihres aktuellen Paketnamens und der Verwendung eines neuen Paketnamens zusammengefasst:
| Funktion | Gleicher Paketname | Neuer Paketname |
|---|---|---|
| Store-Eintrag | Single | Mehrere |
| Gespiegelte Installation | Ja: schnelle Neuinstallation der App während des Einrichtungsassistenten | Nein |
| Überprüfungsprozess im Play Store | Blockieren von Überprüfungen: Wenn die Überprüfung für ein APK fehlschlägt, werden andere APKs die im selben Release eingereicht wurden, blockiert | Individuelle Überprüfungen |
| Statistiken, Messwerte und wichtige Daten | Kombiniert: Sie können nach Gerätename filtern, um Automotive-spezifische Daten zu erhalten. | Aufheben |
| Indexierung und Suchranking | Auf dem aktuellen Stand aufbauen | Keine Übertragung |
| Einbindung in andere Apps | Wahrscheinlich keine Änderungen erforderlich, vorausgesetzt, der Mediencode wird zwischen beiden APKs geteilt | Möglicherweise müssen Sie die entsprechende App aktualisieren, z. B. für die URI-Wiedergabe mit Google Assistant |
Offlineinhalte
Implementieren Sie gegebenenfalls die Offlineunterstützung in Ihrer App. Autos mit Android Automotive OS haben in der Regel eine eigene Datenverbindung. Das bedeutet, dass ein Datentarif in den Kosten des Fahrzeugs enthalten ist oder vom Nutzer bezahlt wird. Außerdem haben Autos in der Regel eine variablere Verbindung als Mobilgeräte.
Hier sind einige Punkte, die Sie bei der Entwicklung Ihrer Offlineunterstützungsstrategie beachten sollten:
- Die beste Zeit zum Herunterladen von Inhalten ist, wenn Ihre App verwendet wird.
- Gehen Sie nicht davon aus, dass WLAN verfügbar ist. Ein Auto kommt möglicherweise nie in WLAN-Reichweite oder der Erstausrüster (Original Equipment Manufacturer, OEM) hat WLAN zugunsten eines Mobilfunknetzes deaktiviert.
- Es ist in Ordnung, Inhalte intelligent zu cachen, von denen Sie erwarten, dass Nutzer sie verwenden. Wir empfehlen jedoch, dass Nutzer dieses Verhalten ändern können.
- Der Speicherplatz in Autos variiert. Geben Sie Nutzern daher die Möglichkeit, Offlineinhalte zu löschen.
Häufig gestellte Fragen
In den folgenden Abschnitten finden Sie Antworten auf einige häufig gestellte Fragen zu Android Automotive OS.
Gibt es Einschränkungen oder Empfehlungen für die Verwendung von SDKs und Bibliotheken von Drittanbietern?
Es gibt keine spezifischen Richtlinien für die Verwendung von SDKs und Bibliotheken von Drittanbietern. Wenn Sie SDKs und Bibliotheken von Drittanbietern verwenden, sind Sie weiterhin dafür verantwortlich, dass alle Qualitätsanforderungen für Auto-Apps eingehalten werden.
Wie veröffentliche ich meine Android Automotive OS-App über die Google Play Console?
Informationen zum Veröffentlichen Ihrer Android Automotive OS-App über die Google Play Console finden Sie unter Für Autos bereitstellen.
verwenden, um Ihre Vorlagen-App für Android Automotive OS-Geräte bereitzustellen.Fehlerbehebung
Hier finden Sie Hilfe bei einigen häufigen Szenarien zur Fehlerbehebung unter Android Automotive OS.
Auch nach der Deinstallation einer Car App Library-App über die Systemeinstellungen erhalte ich eine Fehlermeldung, wenn ich versuche, eine neue Version zu installieren.
Verwenden Sie den Befehl
adb uninstall app.package.name, um sicherzugehen, dass die App deinstalliert wurde.