Android Automotive OS memungkinkan pengguna menginstal aplikasi di mobil. Supaya menjangkau pengguna di platform ini, Anda perlu mendistribusikan aplikasi yang dioptimalkan bagi pengemudi yang kompatibel dengan Android Automotive OS. Anda dapat menggunakan kembali hampir semua kode dan resource di aplikasi Android Auto, tetapi Anda harus membuat build berbeda yang memenuhi persyaratan yang dijelaskan di halaman ini.
Untuk menjalankan aplikasi mobil di Android Automotive OS, Anda memerlukan Host Template terbaru, yang disertakan sebagai aplikasi sistem.
Ringkasan pengembangan
Menambahkan dukungan Android Automotive OS hanya memerlukan beberapa langkah, seperti dijelaskan di halaman ini:
- Membuat modul otomotif
- Mendeklarasikan dukungan untuk Android Automotive OS
- Mendeklarasikan
CarAppService
danCarAppActivity
- Memperbarui dependensi Gradle Anda
Gunakan Android Studio Bumblebee atau yang lebih baru untuk memastikan bahwa semua fitur Automotive OS diaktifkan.
Membuat modul otomotif
Beberapa komponen Android Automotive OS, seperti manifes, memiliki persyaratan khusus platform. Buat modul yang dapat menjaga keterpisahan kode untuk komponen-komponen ini dari kode lain dalam project Anda, seperti kode yang digunakan untuk aplikasi ponsel.
Untuk project yang sudah ada, ikuti langkah-langkah berikut untuk menambahkan modul otomotif ke project:
- Di Android Studio, klik File > New > New Module.
- Pilih Automotive Module, lalu klik Next.
- Berikan nama Aplikasi/Library. Nama ini akan dilihat pengguna aplikasi Anda di Android Automotive OS.
- Masukkan Nama modul.
- Ubah Nama paket agar cocok dengan aplikasi yang ada.
Pilih API 29: Android 10 (Q) untuk SDK Minimum, lalu klik Next. Semua mobil yang mendukung Library Aplikasi Mobil di Android Automotive OS berjalan di Android 10 API level 29 atau lebih baru, sehingga memilih nilai ini akan menargetkan semua mobil yang kompatibel.
Pilih Add No Activity, lalu klik Finish.
Jika Anda memulai project baru:
- Di Android Studio, klik File > New > New Project.
- Pilih Automotive untuk Project Type.
- Pilih No Activity, lalu klik Next.
- Berikan Nama untuk project. Nama ini akan dilihat pengguna aplikasi Anda di Android Automotive OS.
- Masukkan Nama paket. Lihat bagian Package names untuk detail selengkapnya tentang memilih nama paket.
Pilih API 29: Android 10 (Q) untuk SDK Minimum, lalu klik Next.
Semua mobil yang mendukung Library Aplikasi Mobil di Android Automotive OS berjalan di Android 10 API level 29 atau lebih baru, sehingga memilih nilai ini akan menargetkan semua mobil yang kompatibel.
Setelah membuat modul di Android Studio, buka file AndroidManifest.xml
di modul otomotif baru Anda:
<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>
Elemen application
memiliki beberapa informasi aplikasi standar serta elemen uses-feature
yang mendeklarasikan dukungan untuk Android Automotive OS. Perhatikan juga bahwa
tidak ada aktivitas yang dideklarasikan dalam manifes.
Berikutnya, tambahkan elemen uses-feature
berikut ke manifes Anda:
<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>
Elemen uses-feature
pertama mendeklarasikan bahwa aplikasi Anda menggunakan Host Template
agar berjalan. Menyetel dengan jelas empat elemen uses-feature
yang tersisa ke required="false"
memastikan aplikasi Anda tidak akan bentrok dengan fitur hardware yang tersedia
di perangkat Android Automotive OS.
Memperbarui dependensi Gradle Anda
Dalam modul otomotif, Anda harus menambahkan dependensi pada
artefak androidx.car.app:app-automotive
,
yang menyertakan implementasi CarAppActivity
yang diperlukan agar aplikasi Anda berjalan
di Android Automotive OS.
Jika Anda mengembangkan aplikasi untuk mendukung Android Auto dan Android
Automotive OS, sebaiknya simpan CarAppService
dalam modul
terpisah yang Anda gunakan bersama antara modul seluler dan otomotif. Jika menggunakan
pendekatan ini, Anda perlu mengupdate modul otomotif untuk menyertakan
modul bersama menggunakan dependensi project Gradle
, seperti yang ditunjukkan dalam cuplikan berikut:
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")) } }
Mendeklarasikan dukungan untuk Android Automotive OS
Gunakan entri manifes berikut untuk mendeklarasikan bahwa aplikasi Anda mendukung Android Automotive OS:
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
Entri manifes ini merujuk ke sebuah file XML yang mendeklarasikan kemampuan otomotif yang didukung aplikasi Anda.
Untuk menunjukkan bahwa Anda memiliki aplikasi Library Aplikasi Mobil,
tambahkan file XML dengan nama automotive_app_desc.xml
ke direktori res/xml/
di
modul Android Automotive OS Anda. File ini harus mencakup konten berikut:
<automotiveApp>
<uses name="template"/>
</automotiveApp>
Mendeklarasikan CarAppService dan CarAppActivity
Seperti Android Auto, Android Automotive OS menggunakan implementasi CarAppService
untuk menjalankan aplikasi Anda. Lihat
Membuat CarAppService dan Sesi
dan Mendeklarasikan CarAppService untuk
mendapatkan petunjuk cara mengimplementasikan dan mendeklarasikan CarAppService
.
Tidak seperti Android Auto, Anda harus menyertakan komponen aplikasi tambahan,
CarAppActivity
, untuk berperan sebagai titik entri untuk aplikasi Android Automotive OS
Anda. Implementasi aktivitas ini disertakan dalam artefak
androidx.car.app:app-automotive
dan bertanggung jawab untuk berkomunikasi
dengan aplikasi host template untuk merender UI aplikasi Anda. Anda hanya boleh memiliki
satu instance aktivitas ini dalam manifes, yang harus dideklarasikan sebagai
berikut:
<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
disetel ke nama class yang sepenuhnya memenuhi syarat untuk classCarAppActivity
dari artefakapp-automotive
.android:exported
disetel ketrue
karena aktivitas harus dapat diluncurkan oleh aplikasi selain aplikasi itu sendiri (yaitu, peluncur).android:launchMode
disetel kesingleTask
sehingga pengguna dapat kembali ke instance aktivitas yang sama dari peluncur jika mereka keluar.android:theme
disetel ke@android:style/Theme.DeviceDefault.NoActionBar
sehingga aplikasi menggunakan ruang layar penuh yang tersedia untuknya.- Filter intent menunjukkan bahwa ini adalah aktivitas peluncur untuk aplikasi.
- Terdapat elemen
<meta-data>
yang menunjukkan ke OS bahwa aplikasi dapat digunakan saat pembatasan UX diterapkan, seperti saat kendaraan sedang bergerak.
Persyaratan tambahan untuk aplikasi navigasi
Untuk aplikasi navigasi, ada beberapa
entri manifes yang diperlukan untuk CarAppActivity
seperti yang ditunjukkan dalam cuplikan
berikut:
<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>
- Kategori
android.intent.category.APP_MAPS
tambahan memberi tahu sistem bahwa aplikasi Anda dapat menampilkan lokasi pengguna. - Filter intent
androidx.car.app.action.NAVIGATE
memastikan bahwa pengguna memiliki opsi untuk menggunakan aplikasi Anda saat menangani intent navigasi implisit dari aplikasi mobil lain.
Pertimbangan Lainnya
Ingatlah selalu hal-hal berikut ini saat mengembangkan aplikasi Android Automotive OS:
Nama paket
Karena mendistribusikan Android Package Kit (APK) terpisah untuk Android Automotive OS, Anda dapat menggunakan kembali nama paket dari aplikasi seluler atau membuat nama paket baru. Jika Anda menggunakan nama paket yang berbeda, aplikasi Anda memiliki dua listingan Play Store terpisah. Jika Anda menggunakan kembali nama paket saat ini, aplikasi Anda memiliki satu listingan di kedua platform.
Hal ini utamanya adalah keputusan bisnis. Misalnya, jika salah satu tim Anda sedang mengerjakan aplikasi seluler dan tim yang lain mengerjakan aplikasi Android Automotive OS, masuk akal untuk memiliki nama paket yang terpisah dan membiarkan setiap tim mengelola listingan Play Store-nya sendiri. Tidak ada perbedaan besar dalam upaya teknis yang diperlukan untuk menggunakan salah satu pendekatan tersebut.
Tabel berikut merangkum beberapa perbedaan utama lainnya antara mempertahankan nama paket saat ini atau menggunakan nama paket baru:
Fitur | Nama paket yang sama | Nama paket baru |
---|---|---|
Listingan Play Store | Satu | Beberapa |
Penginstalan yang dicerminkan | Ya: instal ulang aplikasi cepat selama wizard penyiapan | Tidak |
Proses Peninjauan Play Store | Memblokir ulasan: jika ulasan gagal untuk satu APK, APK lain yang dikirimkan dalam rilis yang sama akan diblokir | Ulasan individual |
Statistik, metrik, dan sinyal penting | Gabungan: Anda dapat memfilter menurut nama perangkat untuk data khusus otomotif. | Terpisah |
Pengindeksan dan penentuan peringkat penelusuran | Membangun dari reputasi saat ini | Tidak ada peralihan |
Mengintegrasikan dengan aplikasi lain | Kemungkinan besar tidak diperlukan perubahan, dengan asumsi kode media digunakan di kedua APK | Mungkin harus memperbarui aplikasi yang sesuai, seperti untuk pemutaran URI dengan Asisten Google |
Konten offline
Jika memungkinkan, implementasikan dukungan offline di aplikasi Anda. Mobil dengan Android Automotive OS diharapkan memiliki konektivitas datanya sendiri, yang berarti paket data disertakan dalam biaya kendaraan atau dibayar oleh pengguna. Namun, mobil biasanya juga memiliki konektivitas yang lebih bervariasi daripada perangkat seluler.
Berikut beberapa hal yang perlu diperhatikan saat Anda mempertimbangkan strategi dukungan offline:
- Waktu terbaik untuk mendownload konten adalah saat aplikasi Anda sedang digunakan.
- Jangan berasumsi bahwa Wi-Fi tersedia. Mobil mungkin tidak pernah masuk ke dalam jangkauan Wi-Fi, atau Produsen Peralatan Asli (OEM) mungkin telah menonaktifkan Wi-Fi dan mengutamakan jaringan seluler.
- Meskipun Anda mengharapkan pengguna memakai konten yang di-cache dengan cepat, sebaiknya Anda memungkinkan pengguna mengubah perilaku ini.
- Kapasitas disk di mobil bervariasi, jadi beri pengguna cara untuk menghapus konten offline.
Pertanyaan umum (FAQ)
Lihat bagian berikut untuk jawaban atas beberapa pertanyaan umum tentang Android Automotive OS.
Apakah ada batasan atau rekomendasi untuk menggunakan SDK dan library pihak ketiga?
Tidak ada panduan khusus tentang penggunaan SDK dan library pihak ketiga. Jika memilih untuk menggunakan SDK dan library pihak ketiga, Anda tetap bertanggung jawab untuk mematuhi semua persyaratan kualitas aplikasi mobil.
Bagaimana cara memublikasikan aplikasi Android Automotive OS menggunakan Konsol Google Play?
Untuk mengetahui detail tentang cara memublikasikan aplikasi Android Automotive OS menggunakan Konsol Google Play, lihat Mendistribusikan ke mobil.
Pemecahan masalah
Lihat bagian berikut untuk bantuan dengan beberapa skenario pemecahan masalah umum di Android Automotive OS.
Meskipun sudah meng-uninstal aplikasi Library Aplikasi Mobil dari setelan sistem, saya mendapatkan error saat mencoba menginstal versi baru.
Untuk memastikan aplikasi di-uninstal, gunakan perintah
adb uninstall app.package.name
.