Il sistema operativo Android Automotive consente agli utenti di installare app nell'auto. Per raggiungere su questa piattaforma, dovete distribuire un'app ottimizzata per il conducente che sia compatibile con Android Automotive OS. Puoi riutilizzare quasi tutto il codice risorse nell'app Android Auto, ma devi creare una build separata che soddisfi i requisiti descritti in questa pagina.
Per eseguire l'app per auto su Android Automotive OS, devi avere la versione più recente Templates Host, che viene fornito come app di sistema.
Panoramica dello sviluppo
L'aggiunta del supporto di Android Automotive OS richiede solo pochi passaggi, descritti nelle sezioni di questa pagina:
- Creare un modulo Automotive
- Dichiarare il supporto per Android Automotive OS
- Dichiara i tuoi
CarAppService
eCarAppActivity
- Aggiorna le dipendenze Gradle
Usa Android Studio Bumblebee o una versione successiva per assicurarti che tutte le funzionalità di Automotive OS siano abilitate.
Crea un modulo Automotive
Alcuni componenti del sistema operativo Android Automotive, come il file manifest, hanno requisiti specifici della piattaforma. Crea un modulo che possa conservare separato per questi componenti da altro codice nel progetto, come il codice utilizzato per l'app per smartphone.
Per un progetto esistente, segui questi passaggi per aggiungere un modulo Automotive al tuo progetto:
- In Android Studio, fai clic su File > Nuovo > Nuovo modulo.
- Seleziona Automotive Module, quindi fai clic su Next (Avanti).
- Specifica un Nome applicazione/libreria. Questo è il nome che gli utenti visualizzano la tua app su Android Automotive OS.
- Inserisci un Nome modulo.
- Modifica il Nome del pacchetto in modo che corrisponda all'app esistente.
Seleziona API 29: Android 10 (Q) per l'SDK minimo, quindi fai clic su Avanti. Tutte le auto che supportano la Raccolta di app per auto sul sistema operativo Android Automotive vengono eseguite su Livello API Android 10 29 o superiore, quindi se selezioni questo valore hai come target tutti compatibili con le automobili.
Seleziona Aggiungi nessuna attività, quindi fai clic su Fine.
Se stai iniziando un nuovo progetto:
- In Android Studio, fai clic su File > Nuovo > Nuovo progetto.
- Seleziona Automotive come Tipo di progetto.
- Seleziona Nessuna attività, quindi fai clic su Avanti.
- Specifica un nome per il progetto. Questo è il nome che gli utenti vedono per il tuo su Android Automotive OS.
- Inserisci un Nome pacchetto. Consulta la sezione Nomi dei pacchetti per maggiori dettagli sulla selezione del nome del pacchetto.
Seleziona API 29: Android 10 (Q) per l'SDK minimo, quindi fai clic su Avanti.
Tutte le auto che supportano la Raccolta di app per auto sul sistema operativo Android Automotive vengono eseguite su Livello API Android 10 29 o superiore, quindi se selezioni questo valore hai come target tutti compatibili con le automobili.
Dopo aver creato il modulo in Android Studio, apri AndroidManifest.xml
nel tuo nuovo modulo Automotive:
<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>
L'elemento application
ha alcune
informazioni sull'app standard, nonché un uses-feature
che dichiara il supporto per Android Automotive OS. Tieni presente che
non sono dichiarate attività nel file manifest.
Poi, aggiungi i seguenti elementi uses-feature
al file manifest:
<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" /> <uses-feature android:name="android.software.car.templates_host" android:required="true" /> <uses-feature android:name="android.hardware.wifi" android:required="false" /> <uses-feature android:name="android.hardware.screen.portrait" android:required="false" /> <uses-feature android:name="android.hardware.screen.landscape" android:required="false" /> <uses-feature android:name="android.hardware.camera" android:required="false" /> </manifest>
Il primo elemento uses-feature
dichiara che la tua app utilizza l'host dei modelli
eseguire. L'impostazione esplicita dei quattro elementi uses-feature
rimanenti su
required="false"
garantisce che la tua app non entri in conflitto con le funzionalità hardware disponibili
nei dispositivi con sistema operativo Android Automotive.
Aggiorna le dipendenze Gradle
All'interno del modulo Automotive, devi aggiungere una dipendenza
androidx.car.app:app-automotive
artefatto,
che include l'implementazione di CarAppActivity
richiesta per l'esecuzione dell'app
su Android Automotive OS.
Se stai sviluppando la tua app per supportare sia Android Auto sia Android
Automotive OS, ti consigliamo di tenere CarAppService
in un ambiente separato
condiviso tra i moduli per dispositivi mobili e auto e motori. Se
utilizzando questo approccio, devi aggiornare il modulo Automotive per includere
modulo condiviso utilizzando le dipendenze del progetto di Gradle
, come mostrato nello snippet seguente:
Alla moda
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")) } }
Dichiara il supporto per Android Automotive OS
Utilizza la seguente voce manifest per dichiarare che la tua app supporta Sistema operativo Android Automotive:
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Questa voce manifest si riferisce a un file XML che dichiara la supportate dalla tua app.
Per indicare che hai un'app Raccolta di app per auto:
aggiungi un file XML denominato automotive_app_desc.xml
alla directory res/xml/
in
il modulo del tuo sistema operativo Android Automotive. Questo file deve includere i seguenti contenuti:
<automotiveApp>
<uses name="template"/>
</automotiveApp>
Dichiara i tuoi CarAppService e CarAppActivity
Come per Android Auto, Android Automotive OS utilizza CarAppService
implementazione per eseguire la tua app. Consulta
Crea il tuo CarAppService e una sessione
e Dichiara il tuo CarAppService per
istruzioni per implementare e dichiarare CarAppService
.
A differenza di Android Auto, devi includere un componente dell'applicazione aggiuntivo,
CarAppActivity
, che fungerà da punto di accesso per il tuo sistema operativo Android Automotive
dell'app. L'implementazione di questa attività è inclusa nella
androidx.car.app:app-automotive
artefatto ed è responsabile della comunicazione
con l'applicazione host del modello per eseguire il rendering dell'UI dell'app. Dovresti avere solo
un'istanza di questa attività nel file manifest e deve essere dichiarata
che segue:
<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:name
è impostato sul nome completo del corso diCarAppActivity
dall'artefattoapp-automotive
.android:exported
è impostata sutrue
perché l'attività deve essere avviabile da un un'altra app diversa da se stessa (ovvero, Avvio app).android:launchMode
è impostato susingleTask
per consentire all'utente di tornare allo stesso istanza dell'attività da Avvio app se escono.android:theme
è impostato su@android:style/Theme.DeviceDefault.NoActionBar
, quindi in modo che l'app occupi spazio a schermo intero.- Il filtro per intent indica che questa è l'attività di avvio dell'app.
- C'è un elemento
<meta-data>
che indica al sistema operativo che l'app può essere usata mentre sono in vigore limitazioni UX, ad esempio quando il veicolo è in movimento.
Requisiti aggiuntivi per le app di navigazione
Per le app di navigazione, esistono alcune altre
voci manifest obbligatorie per CarAppActivity
, come mostrato di seguito
snippet:
<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>
- L'elemento aggiuntivo
android.intent.category.APP_MAPS
comunica al sistema che la tua app può mostrare la posizione dell'utente. - Il filtro per intent
androidx.car.app.action.NAVIGATE
garantisce che gli utenti abbiano l'opzione di utilizzare la tua app quando gestisci un intento di navigazione implicito da un'altra app per auto.
Altre considerazioni
Tieni presenti queste altre considerazioni durante lo sviluppo di Android Automotive App del sistema operativo:
Nomi dei pacchetti
Poiché distribuisci un Android Package Kit (APK) separato per il sistema operativo Android Automotive, puoi: riutilizza il nome del pacchetto dalla tua app mobile o crea un nuovo pacchetto . Se utilizzi un nome di pacchetto diverso, la tua app avrà due versioni separate del Play Store schede. Se riutilizzi il tuo attuale nome pacchetto, la tua app ha un un'unica scheda su entrambe le piattaforme.
Si tratta di una decisione prevalentemente aziendale. Ad esempio, se un team sta lavorando l'app mobile e un team separato che lavora su Android Automotive dell'app del sistema operativo, potrebbe avere senso avere nomi di pacchetto separati e lasciare che di gestire la propria scheda del Play Store. Non c'è una grande differenza nel l'impegno tecnico necessario per utilizzare uno dei due approcci.
La tabella seguente riassume alcune altre principali differenze nella conservazione del pacchetto corrente o utilizzando un nuovo nome di pacchetto:
Funzionalità | Stesso nome del pacchetto | Nuovo nome pacchetto |
---|---|---|
Scheda dello Store | Singolo | Diversi |
Installazione con mirroring | Sì: reinstalla rapidamente l'app durante la configurazione guidata | No |
Procedura di revisione del Play Store | Blocco delle recensioni: se la revisione non va a buon fine per un APK, per altri APK inviati nella stessa release sono bloccati | Recensioni singole |
Statistiche, metriche e dati vitali | Combinata: puoi filtrare in base al nome del dispositivo per specifiche auto e motori e i dati di Google Cloud. | Separa |
Indicizzazione e ranking nei risultati di ricerca | Sviluppa la tua reputazione | Nessun riporto |
Integrazione con altre app | Molto probabilmente non saranno necessarie modifiche, supponendo che il codice multimediale sia condiviso tra entrambi gli APK | Potrebbe essere necessario aggiornare l'app corrispondente, ad esempio per la riproduzione URI con l'Assistente Google |
Contenuti offline
Se applicabile, implementa il supporto offline nella tua app. Auto con Android Automotive I sistemi operativi devono avere una propria connettività dati, il che significa piano dati è incluso nel costo del veicolo o pagato dall'utente. Tuttavia, si prevede inoltre che le auto abbiano una connettività più variabile rispetto ai dispositivi mobili.
Di seguito sono riportati alcuni aspetti da tenere presenti quando valuti l'assistenza offline strategia:
- Il momento migliore per scaricare i contenuti è mentre l'app è in uso.
- Non dare per scontato che sia disponibile una rete Wi-Fi. Un'auto potrebbe non rientrare mai nel raggio d'azione del Wi-Fi, oppure il produttore di apparecchiature originali (OEM) potrebbe aver disattivato il Wi-Fi a favore di una rete mobile.
- Anche se è consentito memorizzare nella cache in modo intelligente i contenuti che ci si aspetta dagli utenti, ti consigliamo di consentire all'utente di modificare questo comportamento.
- Lo spazio su disco sulle auto varia, quindi offri agli utenti un modo per eliminarlo contenuti offline.
Domande frequenti
Consulta le sezioni seguenti per trovare le risposte ad alcune domande frequenti su Sistema operativo Android Automotive.
Sono presenti limitazioni o consigli per l'utilizzo di SDK e librerie di terze parti?
Non esistono linee guida specifiche sull'utilizzo di SDK e librerie di terze parti. Se scegli di utilizzare SDK e librerie di terze parti, sei comunque responsabile per rispettare tutti i requisiti di qualità delle app per auto.
Come faccio a pubblicare la mia app per Android Automotive OS utilizzando Google Play Console?
La procedura di pubblicazione dell'app è simile alla pubblicazione di un'app per smartphone, ma utilizzi un fattore di forma diverso. Per attivare l'utilizzo di Android Automotive nella tua app Tipo di release del sistema operativo:
- Apri Play Console.
- Seleziona l'app.
- Dal menu a sinistra, seleziona Release > Configurazione > Impostazioni avanzate > Modulo fattori principali.
- Seleziona Aggiungi fattore di forma > Android Automotive OS, quindi segui le istruzioni nella Play Console.
Risoluzione dei problemi
Consulta quanto segue per assistenza con alcuni scenari di risoluzione dei problemi comuni su Android Automotive OS.
Anche dopo aver disinstallato un'app Raccolta di app per auto dalle impostazioni di sistema, Quando tento di installare una nuova versione viene visualizzato un messaggio di errore.
Per assicurarti che l'app sia stata disinstallata, usa il comando
adb uninstall app.package.name
.