अपने टेंप्लेट वाले ऐप्लिकेशन में, Android Automotive OS के लिए सहायता जोड़ें

Android Automotive OS की मदद से लोग, कार में ऐप्लिकेशन इंस्टॉल कर सकते हैं. इस तक पहुंचने के लिए इस प्लैटफ़ॉर्म का इस्तेमाल करने वाले लोगों को, ड्राइवर के लिए ऑप्टिमाइज़ किया गया ऐसा ऐप्लिकेशन उपलब्ध कराना होगा जो Android Automotive OS के साथ काम करता है. आप करीब सभी कोड दोबारा इस्तेमाल कर सकते हैं और संसाधन मिल जाते हैं, लेकिन आपको एक अलग बिल्ड बनाना होगा, जो इस पेज पर बताई गई ज़रूरी शर्तों को पूरा करता हो.

कार के ऐप्लिकेशन को Android Automotive OS पर चलाने के लिए, आपके डिवाइस में मौजूद सबसे नया वर्शन होना चाहिए टेंप्लेट होस्ट, जो सिस्टम ऐप्लिकेशन के तौर पर उपलब्ध होता है.

डेवलपमेंट की खास जानकारी

Android Automotive OS की सुविधा जोड़ने के लिए, आपको कुछ ही चरण पूरे करने होंगे. इस पेज पर दिए गए सेक्शन में बताया गया है:

  1. ऑटोमोटिव मॉड्यूल बनाना
  2. Android Automotive OS के लिए सहायता का एलान करना
  3. अपने CarAppService और CarAppActivity के बारे में बताएं
  4. Gredle डिपेंडेंसी अपडेट करना

Android Studio Bumblebee या इसके बाद के वर्शन का इस्तेमाल करके पक्का करें कि Automotive OS की सभी सुविधाएं चालू हों.

ऑटोमोटिव मॉड्यूल बनाएं

Android Automotive OS के कुछ कॉम्पोनेंट, जैसे कि मेनिफ़ेस्ट में अलग-अलग प्लैटफ़ॉर्म के हिसाब से ज़रूरी शर्तें. एक ऐसा मॉड्यूल बनाएं जो इन कॉम्पोनेंट का कोड, आपके प्रोजेक्ट में मौजूद दूसरे कोड से अलग होता है, जैसे कि आपके फ़ोन ऐप्लिकेशन के लिए इस्तेमाल किया गया.

अगर आपको किसी मौजूदा प्रोजेक्ट में, ऑटोमोटिव मॉड्यूल जोड़ना है, तो यह तरीका अपनाएं प्रोजेक्ट:

  1. Android Studio में, फ़ाइल > नया > नया मॉड्यूल.
  2. Automotive Module को चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.
  3. ऐप्लिकेशन/लाइब्रेरी का नाम दें. लोगों को यह नाम दिखता है Android Automotive OS पर आपका ऐप्लिकेशन.
  4. मॉड्यूल का नाम डालें.
  5. अपने मौजूदा ऐप्लिकेशन के मुताबिक पैकेज के नाम में बदलाव करें.
  6. कम से कम SDK टूल के लिए, एपीआई 29: Android 10 (Q) चुनें. इसके बाद, क्लिक करें आगे बढ़ें पर टैप करें. Android Automotive OS पर कार ऐप्लिकेशन लाइब्रेरी की सुविधा देने वाली सभी कारें Android 10 का एपीआई लेवल 29 या उसके बाद का वर्शन. इसलिए, इस वैल्यू को चुनने से सभी को टारगेट किया जाता है इन कार के साथ काम करता है.

  7. कोई गतिविधि न जोड़ें को चुनें. इसके बाद, पूरा करें पर क्लिक करें.

नया प्रोजेक्ट शुरू करने पर:

  1. Android Studio में, फ़ाइल > नया > नया प्रोजेक्ट.
  2. प्रोजेक्ट टाइप के लिए, ऑटोमोटिव चुनें.
  3. कोई गतिविधि नहीं को चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.
  4. अपने प्रोजेक्ट को कोई नाम दें. यह वह नाम है जो लोगों को आपके कारोबार के लिए Android Automotive OS पर मौजूद ऐप्लिकेशन.
  5. पैकेज का नाम डालें. पैकेज के नाम सेक्शन देखें देखें.
  6. कम से कम SDK टूल के लिए, एपीआई 29: Android 10 (Q) चुनें. इसके बाद, क्लिक करें आगे बढ़ें पर टैप करें.

    Android Automotive OS पर कार ऐप्लिकेशन लाइब्रेरी की सुविधा देने वाली सभी कारें Android 10 का एपीआई लेवल 29 या उसके बाद का वर्शन. इसलिए, इस वैल्यू को चुनने से सभी को टारगेट किया जाता है इन कार के साथ काम करता है.

Android Studio में मॉड्यूल बनाने के बाद, AndroidManifest.xml खोलें फ़ाइल को अपने नए ऑटोमोटिव मॉड्यूल में सबमिट करें:

<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 एलिमेंट में कुछ ऐप्लिकेशन की सामान्य जानकारी और uses-feature ऐसा एलिमेंट जो Android Automotive OS के साथ काम करता है. ध्यान दें कि मेनिफ़ेस्ट में किसी गतिविधि के बारे में नहीं बताया गया है.

इसके बाद, अपने मेनिफ़ेस्ट में ये uses-feature एलिमेंट जोड़ें:

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

पहले uses-feature एलिमेंट से पता चलता है कि आपका ऐप्लिकेशन, टेंप्लेट होस्ट का इस्तेमाल करता है चलाने के लिए. बाकी के चार uses-feature एलिमेंट को साफ़ तौर पर इस पर सेट किया जा रहा है required="false", पक्का करता है कि आपका ऐप्लिकेशन, हार्डवेयर की उपलब्ध सुविधाओं में समस्या न करे Android Automotive OS डिवाइसों में.

Gradle डिपेंडेंसी अपडेट करना

ऑटोमोटिव मॉड्यूल में, आपको androidx.car.app:app-automotive आर्टफ़ैक्ट, जिसमें आपके ऐप्लिकेशन को चलाने के लिए, CarAppActivity को लागू करना ज़रूरी है Android Automotive OS पर.

अगर आपको ऐप्लिकेशन को Android Auto और Android, दोनों पर काम करने के लिए डेवलप करना है, तो Automotive OS, हमारा सुझाव है कि आप अपने CarAppService को अलग रखें जिसे मोबाइल और ऑटोमोटिव मॉड्यूल के बीच शेयर किया जाता है. अगर आप इस तरीके का इस्तेमाल करके, आपको अपने Automotive मॉड्यूल को अपडेट करना होगा, ताकि Gradle की प्रोजेक्ट डिपेंडेंसी का इस्तेमाल करके शेयर किया गया मॉड्यूल , जैसा कि नीचे दिए गए स्निपेट में दिखाया गया है:

ग्रूवी

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 के लिए सहायता का एलान करें

इस मेनिफ़ेस्ट एंट्री का इस्तेमाल करके, यह बताएं कि आपका ऐप्लिकेशन काम करता है Android Automotive ओएस:

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

इस मेनिफ़ेस्ट एंट्री का मतलब ऐसी एक्सएमएल फ़ाइल से है जो Automotive के बारे में जानकारी देती है जो आपके ऐप्लिकेशन पर काम करते हैं.

यह बताने के लिए कि आपके पास कार ऐप्लिकेशन लाइब्रेरी ऐप्लिकेशन है, इसमें automotive_app_desc.xml नाम की एक एक्सएमएल फ़ाइल को res/xml/ डायरेक्ट्री में जोड़ें Android Automotive OS का मॉड्यूल. इस फ़ाइल में नीचे दिए गए कॉन्टेंट शामिल होने चाहिए:

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

CarAppService और CarAppActivity के बारे में बताएं

Android Auto की तरह ही, Android Automotive OS आपके CarAppService का इस्तेमाल करता है लागू करने की प्रक्रिया को मंज़ूरी दें. इससे संदर्भ लें अपना CarAppService और सेशन बनाएं और इसके लिए CarAppService के बारे में बताएं CarAppService को लागू करने और उसका एलान करने से जुड़े निर्देश.

Android Auto के उलट, आपको ऐप्लिकेशन का एक और कॉम्पोनेंट शामिल करना होगा, CarAppActivity, ताकि आपके Android Automotive OS के एंट्री पॉइंट के तौर पर इसका इस्तेमाल किया जा सके है. इस गतिविधि को लागू करने की प्रोसेस को इसमें शामिल किया गया है androidx.car.app:app-automotive आर्टफ़ैक्ट, जो बातचीत करने के लिए ज़िम्मेदार है को टेंप्लेट होस्ट ऐप्लिकेशन के साथ सबमिट करें. आपके पास सिर्फ़ इस गतिविधि का एक इंस्टेंस आपके मेनिफ़ेस्ट में शामिल है और इसे इस रूप में घोषित किया जाना चाहिए अनुसरण करता है:

<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 की पूरी तरह क्वालिफ़ाइड क्लास के नाम पर सेट किया गया है क्लास app-automotive आर्टफ़ैक्ट से ली गई है.
  • android:exported को true पर सेट किया गया है, क्योंकि गतिविधि को उसके अलावा कोई दूसरा ऐप्लिकेशन (जैसे, लॉन्चर).
  • android:launchMode को singleTask पर सेट किया गया है, ताकि उपयोगकर्ता उसी पेज पर वापस आ सके लॉन्चर से वापस आने पर होने वाली गतिविधि का इंस्टेंस.
  • android:theme को @android:style/Theme.DeviceDefault.NoActionBar पर सेट किया गया है, इसलिए कि ऐप्लिकेशन उसके लिए उपलब्ध फ़ुल स्क्रीन स्टोरेज का इस्तेमाल कर ले.
  • इंटेंट फ़िल्टर से पता चलता है कि यह ऐप्लिकेशन के लिए लॉन्चर गतिविधि है.
  • एक <meta-data> एलिमेंट होता है, जो ओएस को बताता है कि ऐप्लिकेशन यह काम कर सकता है उपयोगकर्ता अनुभव से जुड़ी पाबंदियां लागू होने पर इस्तेमाल न करें. जैसे, जब वाहन अंदर हो हलचल है.

नेविगेशन ऐप्लिकेशन के लिए, कुछ और सुविधाएं भी हैं CarAppActivity के लिए मेनिफ़ेस्ट एंट्री ज़रूरी है, जैसा कि यहां दिखाया गया है 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>
  • अतिरिक्त android.intent.category.APP_MAPS कैटगरी से सिस्टम को पता चलता है कि आपका ऐप्लिकेशन, उपयोगकर्ता की जगह की जानकारी दिखा सकता है.
  • androidx.car.app.action.NAVIGATE इंटेंट फ़िल्टर से यह पक्का होता है कि उपयोगकर्ताओं के पास इंप्लिसिट नेविगेशन इंटेंट को हैंडल करते समय, अपने ऐप्लिकेशन का इस्तेमाल करने का विकल्प कार के किसी दूसरे ऐप्लिकेशन का इस्तेमाल करें.

ध्यान में रखने लायक अन्य बातें

Android Automotive तैयार करते समय, इन दूसरी बातों को ध्यान में रखें ओएस ऐप्लिकेशन:

पैकेज के नाम

Android Automotive OS के लिए, एक अलग Android पैकेज किट (APK) डिस्ट्रिब्यूट करने की वजह से, ये काम किए जा सकते हैं अपने मोबाइल ऐप्लिकेशन में मौजूद पैकेज के नाम का फिर से इस्तेमाल करें या एक नया पैकेज बनाएं नाम. पैकेज के लिए कोई दूसरा नाम इस्तेमाल करने पर, आपके ऐप्लिकेशन के दो अलग-अलग Play Store होते हैं लिस्टिंग. अगर आप अपने मौजूदा पैकेज के नाम का फिर से इस्तेमाल करते हैं, तो आपके ऐप्लिकेशन में पर लिस्ट बना सकते हैं.

यह मुख्य रूप से कारोबार से जुड़ा एक फ़ैसला होता है. उदाहरण के लिए, अगर आपकी कोई टीम मोबाइल ऐप्लिकेशन और Android Automotive पर काम करने वाली एक अलग टीम को OS ऐप्लिकेशन है, तो पैकेज के अलग-अलग नाम और हर एक टीम अपनी Play Store पेज को खुद मैनेज करती है. Search Ads 360 के पुराने और नए वर्शन के दोनों में से किसी भी तरीके का इस्तेमाल करने के लिए, तकनीकी तौर पर ज़्यादा मेहनत करनी पड़ती है.

यहां दी गई टेबल में, आपके मौजूदा पैकेज को बनाए रखने के बीच के कुछ अन्य मुख्य अंतर बताए गए हैं नाम या नए पैकेज नाम का उपयोग करके:

सुविधा पैकेज का एक जैसा नाम नए पैकेज का नाम
स्टोर पेज सिंगल एक से ज़्यादा
डुप्लीकेट इंस्टॉल हां: सेटअप विज़र्ड के दौरान ऐप्लिकेशन को तेज़ी से फिर से इंस्टॉल करना नहीं
Play Store पर समीक्षा की प्रक्रिया समीक्षाओं को ब्लॉक करना: अगर किसी एक APK की समीक्षा नहीं हो पाती है, तो दूसरे APK जिस रिलीज़ में सबमिट किए गए हैं उसे ब्लॉक कर दिया जाता है किसी व्यक्ति की समीक्षाएं
आंकड़े, मेट्रिक, और अहम जानकारी कंबाइंड: वाहन संबंधित डिवाइसों के लिए, डिवाइस के नाम के हिसाब से फ़िल्टर किया जा सकता है डेटा शामिल है. अलग करें
इंडेक्स करना और खोज के नतीजों की रैंकिंग मौजूदा स्थिति से बाहर निकलें कोई केबिन बैगेज नहीं
अन्य ऐप्लिकेशन के साथ इंटिग्रेट करना शायद किसी बदलाव की ज़रूरत नहीं है, क्योंकि मीडिया कोड को दोनों APK के बीच शेयर किया गया है शायद आपको इससे जुड़ा ऐप्लिकेशन अपडेट करना पड़े. जैसे, Google Assistant की मदद से यूआरआई प्लेबैक के लिए

ऑफ़लाइन कॉन्टेंट

अगर लागू हो, तो अपने ऐप्लिकेशन में ऑफ़लाइन सहायता लागू करें. Android Automotive वाली कारें ओएस की अपनी डेटा कनेक्टिविटी होनी चाहिए, जिसका मतलब है कि डेटा प्लान में, वाहन की लागत या उपयोगकर्ता ने जो पैसे चुकाए हैं उसमें शामिल होता है. हालांकि, मोबाइल डिवाइसों के मुकाबले कारों में ज़्यादा वैरिएबल कनेक्टिविटी भी हो सकती है.

जब आप ऑफ़लाइन सहायता पाने के बारे में सोचें, तो इन बातों का ध्यान रखें रणनीति:

  • कॉन्टेंट को डाउनलोड करने का सबसे अच्छा समय तब होता है, जब आपका ऐप्लिकेशन इस्तेमाल किया जा रहा हो.
  • यह न मानें कि वाई-फ़ाई उपलब्ध है. कार शायद वाई-फ़ाई की रेंज में कभी न आए, या ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (OEM) ने शायद मोबाइल नेटवर्क के लिए वाई-फ़ाई बंद कर दिया हो.
  • कॉन्टेंट को स्मार्ट तरीके से कैश मेमोरी में सेव करना ठीक है, जैसा कि आपको लगता है कि उपयोगकर्ता तो हम सुझाव देते हैं कि आप उपयोगकर्ता को यह व्यवहार बदलने दें.
  • कारों का डिस्क स्टोरेज अलग-अलग होता है. इसलिए, लोगों को इसे मिटाने का तरीका बताएं ऑफ़लाइन सामग्री.

अक्सर पूछे जाने वाले सवाल

इसके बारे में अक्सर पूछे जाने वाले कुछ सवालों के जवाब पाने के लिए, नीचे दिए गए सेक्शन देखें Android Automotive OS.

क्या तीसरे पक्ष के SDK टूल और लाइब्रेरी इस्तेमाल करने पर कोई पाबंदी या सुझाव है?

तीसरे पक्ष के SDK टूल और लाइब्रेरी इस्तेमाल करने के लिए, कोई खास दिशा-निर्देश नहीं है. अगर आपने तीसरे पक्ष के SDK टूल और लाइब्रेरी का इस्तेमाल करने का विकल्प चुना है, तब भी इसकी ज़िम्मेदारी आपकी होगी जो कार ऐप्लिकेशन की क्वालिटी से जुड़ी सभी ज़रूरी शर्तों का पालन करता हो.

मैं Google Play Console का इस्तेमाल करके, Android Automotive OS ऐप्लिकेशन को कैसे पब्लिश करूं?

ऐप्लिकेशन पब्लिश करने की प्रोसेस, फ़ोन ऐप्लिकेशन को पब्लिश करने जैसी ही है. हालांकि, डिवाइस का नाप या आकार अलग होता है. Android Automotive इस्तेमाल करने के लिए, अपने ऐप्लिकेशन में ऑप्ट इन करें ओएस रिलीज़ टाइप के लिए, यह तरीका अपनाएं:

  1. Play Console खोलें.
  2. अपना ऐप्लिकेशन चुनें.
  3. बाएं मेन्यू से, रिलीज़ > चुनें सेटअप > बेहतर सेटिंग > फ़ॉर्म फ़ैक्टर.
  4. डिवाइस का नाप या आकार जोड़ें > को चुनें Android Automotive OS पर जाएं. इसके बाद, Play Console में दिए गए निर्देशों का पालन करें.

समस्या का हल

कुछ सामान्य समस्याओं को हल करने में मदद पाने के लिए, यहां दी गई जानकारी देखें Android Automotive OS पर.

  • सिस्टम सेटिंग से कार ऐप्लिकेशन लाइब्रेरी ऐप्लिकेशन को अनइंस्टॉल करने के बाद भी, नया वर्शन इंस्टॉल करते समय मुझे गड़बड़ी का मैसेज मिला.

    यह पक्का करने के लिए कि ऐप्लिकेशन अनइंस्टॉल कर दिया गया है, निर्देश का इस्तेमाल करें adb uninstall app.package.name.