Android Automotive OS की मदद से लोग, कार में ऐप्लिकेशन इंस्टॉल कर सकते हैं. इस प्लैटफ़ॉर्म के लोगों तक पहुंचने के लिए, आपको ड्राइवर के लिए ऑप्टिमाइज़ किया गया कोई ऐसा ऐप्लिकेशन उपलब्ध कराना होगा जो Android Automotive OS के साथ काम करता हो. Android Auto ऐप्लिकेशन में, करीब सभी कोड और संसाधनों का फिर से इस्तेमाल किया जा सकता है. हालांकि, आपको अलग से एक ऐसा बिल्ड बनाना होगा जो इस पेज पर बताई गई ज़रूरी शर्तों को पूरा करता हो.
Android Automotive OS पर कार ऐप्लिकेशन चलाने के लिए, आपको Templates Host का नया वर्शन चाहिए. यह एक सिस्टम ऐप्लिकेशन के तौर पर उपलब्ध होता है.
डेवलपमेंट की खास जानकारी
Android Automotive OS के साथ काम करने की सुविधा जोड़ने के लिए, सिर्फ़ कुछ चरणों को पूरा करना होता है. इस पेज के सेक्शन में इसके बारे में बताया गया है:
- ऑटोमोटिव मॉड्यूल बनाना
- Android Automotive OS के साथ काम करने की सुविधा के बारे में जानकारी देना
- अपने
CarAppServiceऔरCarAppActivityका एलान करें - Gradle डिपेंडेंसी अपडेट करना
पक्का करें कि Automotive OS की सभी सुविधाएं चालू हों. इसके लिए, Android Studio Bumblebee या इसके नए वर्शन का इस्तेमाल करें.
ऑटोमोटिव मॉड्यूल बनाना
Android Automotive OS के कुछ कॉम्पोनेंट, जैसे कि मेनिफ़ेस्ट के लिए प्लैटफ़ॉर्म के हिसाब से ज़रूरी शर्तें होती हैं. एक ऐसा मॉड्यूल बनाएं जो इन कॉम्पोनेंट के कोड को आपके प्रोजेक्ट के अन्य कोड से अलग रख सके. जैसे, आपके फ़ोन ऐप्लिकेशन के लिए इस्तेमाल किया गया कोड.
किसी मौजूदा प्रोजेक्ट में ऑटोमोटिव मॉड्यूल जोड़ने के लिए, यह तरीका अपनाएं:
- Android Studio में, File > New > New Module पर क्लिक करें.
- ऑटोमोटिव मॉड्यूल को चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.
- ऐप्लिकेशन/लाइब्रेरी का नाम डालें. यह वह नाम है जो लोगों को Android Automotive OS पर आपके ऐप्लिकेशन के लिए दिखता है.
- मॉड्यूल का नाम डालें.
- अपने मौजूदा ऐप्लिकेशन से मेल खाने के लिए, पैकेज के नाम में बदलाव करें.
कम से कम एसडीके के लिए, एपीआई 29: Android 10 (Q) चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें. Android Automotive OS पर Car App Library के साथ काम करने वाली सभी कारें, Android 10 के एपीआई लेवल 29 या इसके बाद के वर्शन पर काम करती हैं. इसलिए, इस वैल्यू को चुनने पर, Car App Library के साथ काम करने वाली सभी कारों को टारगेट किया जाता है.
कोई गतिविधि नहीं जोड़ें को चुनें. इसके बाद, हो गया पर क्लिक करें.
अगर आपको नया प्रोजेक्ट शुरू करना है, तो:
- Android Studio में, File > New > New Project पर क्लिक करें.
- प्रोजेक्ट टाइप के लिए, ऑटोमोटिव चुनें.
- कोई गतिविधि नहीं को चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.
- अपने प्रोजेक्ट के लिए कोई नाम डालें. यह वह नाम है जो लोगों को Android Automotive OS पर आपके ऐप्लिकेशन के लिए दिखता है.
- पैकेज का नाम डालें. पैकेज का नाम चुनने के बारे में ज़्यादा जानने के लिए, पैकेज के नाम सेक्शन देखें.
कम से कम एसडीके के लिए, एपीआई 29: Android 10 (Q) चुनें. इसके बाद, आगे बढ़ें पर क्लिक करें.
Android Automotive OS पर Car App Library के साथ काम करने वाली सभी कारें, Android 10 के एपीआई लेवल 29 या इसके बाद के वर्शन पर काम करती हैं. इसलिए, इस वैल्यू को चुनने पर, Car App Library के साथ काम करने वाली सभी कारों को टारगेट किया जाता है.
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 ...>
...
<uses-feature
android:name="android.software.car.templates_host"
android:required="true" />
...
</manifest>
इसके अलावा, यह भी पक्का करें कि आपका ऐप्लिकेशन, Android Automotive OS के लिए बनाए गए सभी ऐप्लिकेशन पर लागू होने वाली, Google Play की सुविधा से जुड़ी ज़रूरी शर्तों को पूरा करता हो.
अपनी Gradle डिपेंडेंसी अपडेट करना
आपको अपने Automotive मॉड्यूल में, androidx.car.app:app-automotive आर्टफ़ैक्ट की डिपेंडेंसी जोड़नी होगी. इसमें CarAppActivity लागू करने की सुविधा शामिल होती है. यह सुविधा, Android Automotive OS पर आपके ऐप्लिकेशन को चलाने के लिए ज़रूरी है.
अगर आपको Android Auto और Android Automotive OS, दोनों के साथ काम करने वाला ऐप्लिकेशन डेवलप करना है, तो हमारा सुझाव है कि आप अपने CarAppService को एक अलग मॉड्यूल में रखें. इसे मोबाइल और ऑटोमोटिव मॉड्यूल के बीच शेयर किया जा सकता है. अगर आपको इस तरीके का इस्तेमाल करना है, तो आपको अपने ऑटोमोटिव मॉड्यूल को अपडेट करना होगा. इसके लिए, Gradle की प्रोजेक्ट डिपेंडेंसी का इस्तेमाल करके, शेयर किए गए मॉड्यूल को शामिल करें. इसके बारे में यहां बताया गया है:
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")) } }
Android Automotive OS के साथ काम करने की सुविधा का एलान करना
यह मेनिफ़ेस्ट एंट्री इस्तेमाल करके यह एलान करें कि आपका ऐप्लिकेशन Android Automotive OS के साथ काम करता है:
<application>
...
<meta-data android:name="com.android.automotive"
android:resource="@xml/automotive_app_desc"/>
...
</application>
मेनिफ़ेस्ट की यह एंट्री, एक ऐसी XML फ़ाइल को रेफ़र करती है जिसमें कार से जुड़ी उन सुविधाओं के बारे में बताया गया है जो आपके ऐप्लिकेशन के साथ काम करती हैं.
यह बताने के लिए कि आपके पास Car App Library वाला ऐप्लिकेशन है, automotive_app_desc.xml नाम की एक्सएमएल फ़ाइल को अपने Android Automotive OS मॉड्यूल में मौजूद res/xml/ डायरेक्ट्री में जोड़ें. इस फ़ाइल में यह कॉन्टेंट शामिल होना चाहिए:
<automotiveApp>
<uses name="template"/>
</automotiveApp>
CarAppService और CarAppActivity का एलान करना
Android Auto की तरह ही, Android Automotive OS भी आपके ऐप्लिकेशन को चलाने के लिए, CarAppService का इस्तेमाल करता है. CarAppService को लागू करने और इसका एलान करने के निर्देशों के लिए, CarAppService और सेशन बनाएं और CarAppService का एलान करें लेख पढ़ें.
Android Auto के उलट, आपको Android Automotive OS वाले ऐप्लिकेशन के एंट्री पॉइंट के तौर पर, एक और ऐप्लिकेशन कॉम्पोनेंट CarAppActivity शामिल करना होगा. इस गतिविधि को लागू करने की सुविधा, CarAppActivity आर्टफ़ैक्ट में शामिल होती है. साथ ही, यह आपके ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) को रेंडर करने के लिए, टेंप्लेट होस्ट ऐप्लिकेशन से कम्यूनिकेट करने के लिए ज़िम्मेदार होता है.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कोapp-automotiveआर्टफ़ैक्ट कीCarAppActivityक्लास के पूरी तरह क्वालिफ़ाइड क्लास नेम पर सेट किया जाता है.android:exportedकोtrueपर सेट किया जाता है, क्योंकि गतिविधि को खुद के अलावा किसी अन्य ऐप्लिकेशन (जैसे कि लॉन्चर) से लॉन्च किया जाना चाहिए.android:launchModeकोsingleTaskपर सेट किया जाता है, ताकि उपयोगकर्ता के किसी दूसरी जगह पर जाने के बाद, लॉन्चर से गतिविधि के उसी इंस्टेंस पर वापस आ सके.android:themeको@android:style/Theme.DeviceDefault.NoActionBarपर सेट किया जाता है, ताकि ऐप्लिकेशन को पूरी स्क्रीन पर दिखने की अनुमति मिल सके.- इंटेंट फ़िल्टर से पता चलता है कि यह ऐप्लिकेशन के लिए लॉन्चर ऐक्टिविटी है.
- इसमें एक
<meta-data>एलिमेंट होता है. यह ओएस को बताता है कि यूज़र एक्सपीरियंस से जुड़ी पाबंदियां लागू होने पर भी ऐप्लिकेशन का इस्तेमाल किया जा सकता है. जैसे, जब वाहन चल रहा हो.
नेविगेशन ऐप्लिकेशन के लिए अन्य ज़रूरी शर्तें
नेविगेशन ऐप्लिकेशन के लिए, CarAppActivity के मेनिफ़ेस्ट में कुछ और एंट्री ज़रूरी हैं. इन्हें यहां दिए गए स्निपेट में दिखाया गया है:
<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 OS डिवाइसों पर, टेंप्लेट वाले ऐप्लिकेशन का अनुभव बेहतर बनाने के लिए, अपने CarAppActivity में डीप लिंक की सुविधा जोड़ी जा सकती है. उदाहरण के लिए, इससे लोग सीधे ब्राउज़र से या Quick Share का इस्तेमाल करके फ़ोन से शेयर किया गया यूआरएल मिलने पर, आपका ऐप्लिकेशन खोल सकते हैं.
डीप लिंक इंटेंट फ़िल्टर जोड़ना
ओएस को यह बताने के लिए कि आपका ऐप्लिकेशन डीप लिंक हैंडल कर सकता है, आपको अपने ऐप्लिकेशन के <activity> के लिए <activity> एलिमेंट में सही इंटेंट फ़िल्टर जोड़ने होंगे.CarAppActivity ज़्यादा जानकारी के लिए, आने वाले लिंक के लिए इंटेंट फ़िल्टर जोड़ना लेख पढ़ें.
हमारा सुझाव है कि आप अपने मोबाइल ऐप्लिकेशन के सभी डीप लिंक को सपोर्ट करें. इससे उपयोगकर्ताओं को बेहतर अनुभव मिलेगा. साथ ही, यह भी पक्का करें कि कार में मौजूद ऐप्लिकेशन, इन डीप लिंक को सही तरीके से सपोर्ट कर सकता हो.
डीप लिंक इंटेंट मैनेज करना
इंटेंट को हैंडल करने के लिए, आपके ऐप्लिकेशन को आने वाले इंटेंट से डेटा पढ़ना चाहिए. ऐसा तब भी होना चाहिए, जब onCreateScreen() के दौरान आपके कार ऐप्लिकेशन का Session बनाया जा रहा हो. साथ ही, ऐसा तब भी होना चाहिए, जब onNewIntent() के दौरान उसे नया इंटेंट मिलता हो:
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 } }
ध्यान में रखने लायक अन्य बातें
Android Automotive OS ऐप्लिकेशन डेवलप करते समय, इन बातों का ध्यान रखें:
पैकेज के नाम
Android Automotive OS के लिए, अलग Android पैकेज किट (APK) डिस्ट्रिब्यूट की जाती है. इसलिए, अपने मोबाइल ऐप्लिकेशन के पैकेज के नाम का फिर से इस्तेमाल किया जा सकता है या पैकेज का नया नाम बनाया जा सकता है. अगर पैकेज के अलग नाम का इस्तेमाल किया जाता है, तो आपके ऐप्लिकेशन की Play Store पर दो अलग-अलग लिस्टिंग होंगी. अगर मौजूदा पैकेज के नाम का दोबारा इस्तेमाल किया जाता है, तो आपके ऐप्लिकेशन की एक ही लिस्टिंग दोनों प्लैटफ़ॉर्म पर दिखेगी.
यह फ़ैसला मुख्य रूप से कारोबार के हिसाब से लिया जाता है. उदाहरण के लिए, अगर आपकी एक टीम मोबाइल ऐप्लिकेशन पर काम कर रही है और दूसरी टीम Android Automotive OS ऐप्लिकेशन पर काम कर रही है, तो पैकेज के अलग-अलग नाम इस्तेमाल करना सही हो सकता है. साथ ही, हर टीम को अपनी Play Store लिस्टिंग मैनेज करने की अनुमति देना भी सही हो सकता है. दोनों तरीकों को इस्तेमाल करने के लिए, तकनीकी तौर पर ज़्यादा मेहनत करने की ज़रूरत नहीं होती.
यहां दी गई टेबल में, मौजूदा पैकेज का नाम रखने या नया पैकेज नाम इस्तेमाल करने के बीच के कुछ अन्य मुख्य अंतरों के बारे में बताया गया है:
| सुविधा | एक ही पैकेज का नाम | नए पैकेज का नाम |
|---|---|---|
| स्टोर पेज | सिंगल | एक से ज़्यादा |
| मिरर किया गया इंस्टॉल | हां: सेटअप विज़र्ड के दौरान, ऐप्लिकेशन को तुरंत फिर से इंस्टॉल किया जा सकता है | नहीं |
| Play Store पर समीक्षा करने की प्रोसेस | समीक्षाएं ब्लॉक करना: अगर कोई समीक्षा किसी एक APK के लिए ज़रूरी शर्तें पूरी नहीं करती है, तो उसी रिलीज़ में सबमिट किए गए अन्य APK ब्लॉक कर दिए जाते हैं | अलग-अलग समीक्षाएं |
| आंकड़े, मेट्रिक, और वाइटल | कंबाइंड: वाहन से जुड़े डेटा के लिए, डिवाइस के नाम के हिसाब से फ़िल्टर किया जा सकता है. | अलग-अलग पैनल |
| इंडेक्स करना और खोज नतीजों में रैंकिंग | मौजूदा स्थिति के आधार पर रणनीति बनाना | कोई कैरीओवर नहीं |
| अन्य ऐप्लिकेशन के साथ इंटिग्रेट करना | अगर दोनों APK के बीच मीडिया कोड शेयर किया जाता है, तो शायद कोई बदलाव करने की ज़रूरत नहीं है | आपको इससे जुड़ा ऐप्लिकेशन अपडेट करना पड़ सकता है. जैसे, Google Assistant की मदद से यूआरआई चलाने के लिए |
ऑफ़लाइन कॉन्टेंट
अगर लागू हो, तो अपने ऐप्लिकेशन में ऑफ़लाइन सहायता की सुविधा लागू करें. Android Automotive OS वाली कारों में डेटा कनेक्टिविटी की सुविधा होनी चाहिए. इसका मतलब है कि वाहन की कीमत में डेटा प्लान शामिल होता है या उपयोगकर्ता इसके लिए पेमेंट करता है. हालांकि, कारों में मोबाइल डिवाइसों की तुलना में कनेक्टिविटी के ज़्यादा विकल्प होने चाहिए.
ऑफ़लाइन सहायता से जुड़ी रणनीति बनाते समय, इन बातों का ध्यान रखें:
- कॉन्टेंट डाउनलोड करने का सबसे सही समय तब होता है, जब ऐप्लिकेशन इस्तेमाल किया जा रहा हो.
- यह न मान लें कि वाई-फ़ाई की सुविधा उपलब्ध है. ऐसा हो सकता है कि कार कभी वाई-फ़ाई की रेंज में न आए या ओरिजनल इक्विपमेंट मैन्युफ़ैक्चरर (ओईएम) ने मोबाइल नेटवर्क के लिए वाई-फ़ाई की सुविधा बंद कर दी हो.
- उपयोगकर्ताओं के इस्तेमाल किए जाने वाले कॉन्टेंट को स्मार्ट तरीके से कैश मेमोरी में सेव किया जा सकता है. हालांकि, हमारा सुझाव है कि आप उपयोगकर्ता को इस सेटिंग को बदलने की अनुमति दें.
- कारों में डिस्क स्पेस अलग-अलग होता है. इसलिए, लोगों को ऑफ़लाइन कॉन्टेंट मिटाने का विकल्प दें.
अक्सर पूछे जाने वाले सवाल
Android Automotive OS के बारे में अक्सर पूछे जाने वाले कुछ सवालों के जवाब पाने के लिए, यहां दिए गए सेक्शन देखें.
क्या तीसरे पक्ष के एसडीके और लाइब्रेरी इस्तेमाल करने के लिए, कोई पाबंदी या सुझाव है?
तीसरे पक्ष के एसडीके और लाइब्रेरी इस्तेमाल करने के बारे में कोई खास दिशा-निर्देश नहीं हैं. अगर तीसरे पक्ष के एसडीके टूल और लाइब्रेरी का इस्तेमाल किया जाता है, तो भी कार ऐप्लिकेशन की क्वालिटी से जुड़ी सभी ज़रूरी शर्तों का पालन करना आपकी ज़िम्मेदारी है.
मैं Google Play Console का इस्तेमाल करके, Android Automotive OS ऐप्लिकेशन को कैसे पब्लिश करूं?
Google Play Console का इस्तेमाल करके, Android Automotive OS ऐप्लिकेशन को पब्लिश करने के तरीके के बारे में जानने के लिए, कारों के लिए ऐप्लिकेशन उपलब्ध कराना लेख पढ़ें.
समस्या का हल
Android Automotive OS पर, समस्या हल करने के कुछ सामान्य तरीकों के बारे में जानने के लिए, यहां दिया गया लेख पढ़ें.
सिस्टम सेटिंग से Car App Library ऐप्लिकेशन को अनइंस्टॉल करने के बाद भी, मुझे नया वर्शन इंस्टॉल करते समय गड़बड़ी का मैसेज मिलता है.
यह पक्का करने के लिए कि ऐप्लिकेशन अनइंस्टॉल हो गया है,
adb uninstall app.package.nameकमांड का इस्तेमाल करें.