Şablonlu uygulamanıza Android Automotive OS için destek ekleyin

Android Automotive OS, kullanıcıların arabaya uygulama yüklemesine olanak tanır. Şu kullanıcıya ulaşmak için: bu platformda kullanıyorsanız, hem Android hem de iOS için optimize edilmiş Android Automotive OS ile uyumludur. Kodun hemen hemen tamamını yeniden kullanarak İYS'nizi kullanabilirsiniz, ancak bu sanal makineyi kullanan bu sayfada açıklanan şartlara uygun olmalıdır.

başlıklı makalede bulabilirsiniz.

Android Automotive OS'te araba uygulamanızı çalıştırmak için en yeni sürüme ihtiyacınız var Sistem uygulaması olarak sunulan Şablonları Barındırıcısı.

Geliştirmeye genel bakış

Android Automotive OS desteğini eklemek için yalnızca birkaç adım gerekiyor. bu sayfadaki bölümlerde açıklanmıştır:

  1. Otomotiv modülü oluşturma
  2. Android Automotive OS için destek beyanı
  3. CarAppService ve CarAppActivity özelliklerini beyan edin
  4. Gradle bağımlılıklarınızı güncelleme

Android Studio Bumblebee veya daha yeni bir sürümü kullandığınızdan emin olmak için tüm Automotive OS özelliklerinin etkinleştirildiğinden emin olun.

Otomotiv modülü oluşturun

Android Automotive OS'in bazı bileşenleri (ör. manifest dosyası) platforma özgü koşullar. Projenin gidişatı boyunca projenizdeki diğer kodlardan (örneğin, telefon uygulamanız için kullanılan kod.

Mevcut bir proje için aşağıdaki adımları uygulayarak proje:

  1. Android Studio'da Dosya > Yeni > Yeni Modül.
  2. Otomotiv Modülü'nü seçip İleri'yi tıklayın.
  3. Uygulama/Kitaplık adı girin. Bu, kullanıcıların Android Automotive OS'teki uygulamanız.
  4. Modül adı girin.
  5. Paket adı'nı mevcut uygulamanızla eşleşecek şekilde düzenleyin.
  6. Minimum SDK olarak API 29: Android 10 (Q)'yu seçin, ardından Sonraki'ye dokunun. Android Automotive OS'te Araba Uygulaması Kitaplığı'nı destekleyen tüm arabalar şu cihazda çalışır: Android 10 API düzeyi 29 veya sonraki sürümleri. Bu değer seçildiğinde tüm reklamlar hedeflenir arabalarla uyumlu olabilir.

  7. Etkinlik Ekleme Yok'u seçin ve ardından Son'u tıklayın.

Yeni bir projeye başlıyorsanız:

  1. Android Studio'da Dosya > Yeni > Yeni Proje.
  2. Proje Türü olarak Otomotiv'i seçin.
  3. Etkinlik Yok'u seçin, ardından İleri'yi tıklayın.
  4. Projeniz için bir ad girin. Bu, kullanıcıların Android Automotive OS'teki uygulama.
  5. Paket adı girin. Paket adları bölümünü inceleyin ziyaret edin.
  6. Minimum SDK olarak API 29: Android 10 (Q)'yu seçin, ardından Sonraki'ye dokunun.

    Android Automotive OS'te Araba Uygulaması Kitaplığı'nı destekleyen tüm arabalar şu cihazda çalışır: Android 10 API düzeyi 29 veya sonraki sürümleri. Bu değer seçildiğinde tüm reklamlar hedeflenir arabalarla uyumlu olabilir.

Android Studio'da modülünüzü oluşturduktan sonra AndroidManifest.xml dosyasını yükleyin:

<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>

application öğesinde standart uygulama bilgilerinin yanı sıra uses-feature öğesi. Burada manifest dosyasında bildirilen hiçbir etkinlik değil.

Daha sonra, aşağıdaki uses-feature öğelerini manifest dosyanıza ekleyin:

<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>

İlk uses-feature öğe, uygulamanızın Şablon Ana Makinesi'ni kullandığını belirtiyor gerekir. Kalan dört uses-feature öğesini açıkça required="false", uygulamanızın mevcut donanım özellikleriyle çakışmamasını sağlar. Android Automotive OS cihazlarda görebilirsiniz.

Gradle bağımlılıklarınızı güncelleme

Otomotiv modülünüzün içinde hem kendi androidx.car.app:app-automotive yapı, uygulamanızın çalışması için gereken CarAppActivity uygulamasını içerir Android Automotive OS'te.

Uygulamanızı hem Android Auto hem de Android'i destekleyecek şekilde geliştiriyorsanız Automotive OS için CarAppService cihazınızı ayrı bir yerde saklamanızı öneririz modülünü kullanabilirsiniz. Şu durumda: Bu yaklaşımı kullandığınızda, otomotiv modülünüzü Gradle'ın proje bağımlılıklarını kullanarak paylaşılan modül gibi bir değer eklemeniz gerekir:

Eski

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"))
    }
}

Android Automotive OS için destek beyan etme

Uygulamanızın desteklediğini beyan etmek için aşağıdaki manifest girişini kullanın: Android Automotive OS:

<application>
    ...
    <meta-data android:name="com.android.automotive"
        android:resource="@xml/automotive_app_desc"/>
    ...
</application>

Bu manifest girişi, otomotiv özellikleri de vurgular.

Araba Uygulama Kitaplığı uygulamanız olduğunu belirtmek için automotive_app_desc.xml adlı XML dosyasını şuradaki res/xml/ dizinine ekleyin: Android Automotive OS modülünüz. Bu dosyada aşağıdaki içerikler bulunmalıdır:

<automotiveApp>
    <uses name="template"/>
</automotiveApp>

CarAppService ve CarAppActivity seçeneklerini bildirme

Android Auto'da olduğu gibi Android Automotive OS de CarAppService cihazınızı kullanır pek çok yöntem vardır. Referans CarAppService ve oturumunuzun oluşturulması ve CarAppService hizmetinizi beyan edin CarAppService öğesini uygulama ve beyan etme talimatlarını inceleyin.

Android Auto'nun aksine, bunun yerine ek bir uygulama bileşeni eklemeniz gerekir. CarAppActivity, Android Automotive OS için giriş noktası olarak kullanılacak uygulamasını indirin. Bu etkinliğin uygulanması androidx.car.app:app-automotive eserdir ve iletişimden sorumludur ana makine uygulamasıyla değiştirin. Yalnızca manifest dosyanızdaki bu etkinliğin bir örneği olmalı ve bu, şöyle olur:

<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, CarAppActivity öğesinin tam sınıf adına ayarlandı app-automotive yapıdan bir sınıf seçin.
  • Etkinliğin birandroid:exportedtrue başka bir uygulamaya (yani başlatıcıya) izin vermez.
  • android:launchMode, kullanıcının aynı sayfaya dönebilmesi için singleTask olarak ayarlandı Kullanıcı sayfadan ayrılırsa başlatıcıdan etkinliğin örneğini.
  • android:theme, @android:style/Theme.DeviceDefault.NoActionBar olarak ayarlandı. uygulama, kullanılabilen tam ekran alanını kaplamalıdır.
  • Amaç filtresi, bunun uygulama için başlatıcı etkinliği olduğunu belirtir.
  • OS'ye, uygulamanın şunları yapabileceğini belirten bir <meta-data> öğesi var: Kullanıcı deneyimi kısıtlamaları varken (ör. araç arabadayken) hareket ettirir.

Navigasyon uygulamaları için birkaç ayar daha vardır. aşağıda gösterildiği gibi, CarAppActivity için gerekli manifest girişleri 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>
  • Ek android.intent.category.APP_MAPS kategorisi, uygulamanızın kullanıcının konumunu gösterebileceği konusunda sisteme bilgi verir.
  • androidx.car.app.action.NAVIGATE intent filtresi, örtülü gezinme niyetini ele alırken uygulamanızı kullanma seçeneği. başka bir araba uygulaması var.

Dikkat edilmesi gereken diğer noktalar

Android Automotive'inizi geliştirirken bu diğer noktaları aklınızda bulundurun İşletim sistemi uygulaması:

Paket adları

Android Automotive OS için ayrı bir Android Package Kit (APK) dağıttığınızdan şunları yapabilirsiniz: mobil uygulamanızdaki paket adını yeniden kullanın veya yeni bir paket oluşturun dokunun. Farklı bir paket adı kullanırsanız uygulamanızın iki ayrı Play Store mağazası vardır inceleyebilirsiniz. Mevcut paket adınızı yeniden kullanırsanız uygulamanızın her iki platformda da tek bir liste oluşturabilirsiniz.

Bu, genel olarak işle ilgili bir karardır. Örneğin üzerinde çalışan bir ekibiniz varsa mobil uygulamanız ve Android Automotive'iniz üzerinde çalışan ayrı bir ekip işletim sistemi uygulaması kullanıyorsanız ayrı paket adlarına sahip olmak ve her birinin ekibinin kendi Play mağaza girişini yönetmesine izin veriyoruz. Önceki videoda çok büyük bir teknik çabayı göstermeniz gerekir.

Aşağıdaki tabloda, mevcut paketinizi kullanmaya devam etme ile ilgili diğer bazı önemli farklar özetlenmiştir. veya yeni bir paket adı kullanarak:

Özellik Aynı paket adı Yeni paket adı
Mağaza girişi Tek Birden çok
Yansıtılmış yükleme Evet: Kurulum sihirbazı sırasında uygulamanın hızlı bir şekilde yeniden yüklenmesi Hayır
Play Store inceleme süreci Yorumları engelleme: İnceleme bir APK için başarısız olursa diğer APK'lar aynı sürümde gönderilenler engellendi Bireysel yorumlar
İstatistikler, metrikler ve kritik değerler Birleşik: Otomotiv alanına özel ürünler için cihaz adına göre filtreleme yapabilirsiniz. dışı verilerdir. Ayır
Dizine ekleme ve arama sıralaması Mevcut durumu geliştirme Devretme yok
Diğer uygulamalarla entegrasyon Medya kodunun iki APK arasında paylaşıldığı varsayıldığında, büyük olasılıkla herhangi bir değişiklik gerekmez İlgili uygulamayı güncellemeniz gerekebilir (örneğin, Google Asistan'la URI oynatma için)

Çevrimdışı içerik

Varsa uygulamanızda çevrimdışı desteği uygulayın. Android Automotive'e sahip arabalar İşletim sisteminin kendi veri bağlantısına sahip olması beklenir. Bu da Veri planı, aracın maliyetine dahil edilmiş veya ücreti kullanıcı tarafından ödenmiş olmalıdır. Ancak, arabaların mobil cihazlara göre daha değişken bağlantıya sahip olması da bekleniyor.

Çevrimdışı desteğinizi değerlendirirken aklınızda bulundurmanız gereken birkaç nokta: strateji:

  • İçerik indirmek için en iyi zaman, uygulamanızın kullanım sırasındadır.
  • Kablosuz bağlantının bulunduğunu varsaymayın. Bir araba hiç kablosuz kapsama alanına girmeyebilir, Özgün donanım üreticisi (OEM), kablosuz ağı devre dışı bırakarak hücresel ağ kullanmaya karar vermiş olabilir.
  • Kullanıcıların kullanmasını beklediğiniz içeriği akıllı olarak önbelleğe almak kullanıcının bu davranışı değiştirmesine izin vermenizi öneririz.
  • Arabalardaki disk alanı değişiklik gösterir, bu nedenle kullanıcılara silecekleri için bir yol sunun çevrimdışı içerik.

Sık sorulan sorular

Hakkında sık sorulan bazı soruların yanıtları için aşağıdaki bölümlere bakın Android Automotive OS.

Üçüncü taraf SDK'larının ve kitaplıklarının kullanımıyla ilgili herhangi bir kısıtlama veya öneri var mı?

Üçüncü taraf SDK'larının ve kitaplıklarının kullanımıyla ilgili belirli bir yönergeler yoktur. Üçüncü taraf SDK'ları ve kitaplıklarını kullanmayı tercih etseniz bile sorumluluk size aittir tüm araba uygulaması kalite şartlarına uymaya yardımcı olur.

Android Automotive OS uygulamamı Google Play Console'u kullanarak nasıl yayınlarım?

Uygulama yayınlama süreci bir telefon uygulaması yayınlamaya benzer, ancak farklı bir biçim faktörü. Uygulamanızda Android Automotive'i etkinleştirmek için İşletim sistemi sürüm türü, aşağıdaki adımları uygulayın:

  1. Play Console'u açın.
  2. Uygulamanızı seçin.
  3. Soldaki menüden Sürüm > Kurulum > Gelişmiş ayarlar > Biçim etmenleri inceleyin.
  4. Form faktörü ekle > Android Automotive OS'e gidin, ardından aşağıdaki adımları uygulayın. talimatları uygulayın.

Sorun giderme

Sık karşılaşılan bazı sorun giderme senaryolarıyla ilgili yardım için aşağıdakilere bakın Android Automotive OS'te.

  • Bir Araba Uygulaması Kitaplığı uygulamasını sistem ayarlarından kaldırdıktan sonra bile Yeni bir sürümü yüklemeye çalışırken hata alıyorum.

    Uygulamanın kaldırıldığından emin olmak için şu komutu kullanın: adb uninstall app.package.name