SDV डेवलपमेंट के लिए आईडीई सेट अप करना

Android Automotive OS (AAOS) के सॉफ़्टवेयर-डिफ़ाइंड व्हीकल (एसडीवी) प्लैटफ़ॉर्म को डेवलप करने के लिए, Android Studio for Platform (ASfP) का इस्तेमाल करने का सुझाव दिया जाता है. यह एक इंटिग्रेटेड डेवलपमेंट एनवायरमेंट (आईडीई) है. ASfP, AAOS SDV प्लैटफ़ॉर्म पर इस्तेमाल की जाने वाली सभी भाषाओं के साथ काम करता है. इनमें SDV सेवा बंडलों के लिए Rust भी शामिल है.

इस पेज पर, सिर्फ़ एसडीवी से जुड़े सेटअप के बारे में बताया गया है. ASfP की सामान्य सुविधाओं और वर्कफ़्लो के बारे में ज़्यादा जानने के लिए, Android Studio for Platform देखें.

ASfP, सिर्फ़ x86-64 सीपीयू वाले 64-बिट Linux पर काम करता है. इसका इस्तेमाल, लोकल Linux वर्कस्टेशन या क्लाउड में किया जा सकता है. क्लाउड सेटअप के बारे में ज़्यादा जानने के लिए, क्लाउड डेवलपमेंट देखें.

ASfP इंस्टॉल करना

ASfP को डाउनलोड और इंस्टॉल करने के बारे में ज़्यादा जानने के लिए, Android Studio for Platform इंस्टॉल करना लेख पढ़ें. साथ ही, सिस्टम की ज़रूरी शर्तों के बारे में भी जानें.

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

SDV प्रोजेक्ट बनाना

शुरू करने से पहले, AAOS SDV चेकआउट को शुरू करें, सिंक करें, और बनाएं. चेकआउट सेट अप करने के बारे में ज़्यादा जानकारी के लिए, कोड की जगह और डाउनलोड करना, बनाना, और चलाना लेख पढ़ें.

SDV प्रोजेक्ट बनाने के लिए, यह तरीका अपनाएं:

  1. ASfP में नया प्रोजेक्ट बनाएं. इसके बाद, AAOS SDV चेकआउट के रूट को रिपॉज़िटरी चेकआउट के तौर पर चुनें. विज़र्ड के चरणों के बारे में ज़्यादा जानने के लिए, प्रोजेक्ट बनाना या इंपोर्ट करना लेख पढ़ें.
  2. ASfP के प्रोजेक्ट बनाने के बाद, .asfp-project फ़ाइल खोलने के लिए ASfP > प्रोजेक्ट > कॉन्फ़िगरेशन खोलें को चुनें.
  3. फ़ाइल के कॉन्टेंट की जगह यहां दिया गया उदाहरण डालें. इसके बाद, repo को अपने चेकआउट के पाथ पर सेट करें:

    repo: /path/to/sdv_source
    lunch: sdv_core_cf-aosp_current-userdebug
    directories:
      include:
        -   system/software_defined_vehicle/samples
    other_languages:
      -   rust
    
  4. उस इलाके के लिए lunch और directories अपडेट करें जहां आपको काम करना है. इंडेक्सिंग और सिंक करने की प्रोसेस को तेज़ रखने के लिए, सिर्फ़ उन डायरेक्ट्री को शामिल करें जिनमें बदलाव किया जाता है. नीचे दी गई टेबल में, एसडीवी के सामान्य टारगेट और डायरेक्ट्री की सूची दी गई है:

    SDV डेवलपमेंट पर फ़ोकस lunch टारगेट सुझाया गया directories
    SDV सेवा बंडल sdv_core_cf-aosp_current-userdebug आपका सेवा कैटलॉग और बंडल डायरेक्ट्री, जैसे कि system/software_defined_vehicle/samples
    SDV Core प्लैटफ़ॉर्म इंटिग्रेशन sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware, system/software_defined_vehicle/automotive_services, device/google/sdv
    SDV IVI पर SDV Gateway sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway, packages/services/Car
    SDV मीडिया पर ब्रैंड सुरक्षा sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    SDV IVI पर डिसप्ले की सुरक्षा sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

    अगर आपकी चेकआउट प्रोसेस में trunk_staging मेनिफ़ेस्ट का इस्तेमाल किया जाता है, तो -aosp_current-userdebug की जगह -trunk_staging-userdebug का इस्तेमाल करें. नेटिव प्लैटफ़ॉर्म कोड भी ब्राउज़ करने के लिए, other_languages में cpp जोड़ें. कॉन्फ़िगरेशन के सभी विकल्पों के बारे में ज़्यादा जानने के लिए, कॉन्फ़िगरेशन पैरामीटर लेख पढ़ें.

  5. बदलावों को लागू करने के लिए, फ़ाइल > प्रोजेक्ट सिंक करें को चुनें.

SDV सेवा के बंडल डिप्लॉय करना

ASfP में एक SDV प्लगिन शामिल होता है. यह आपके सेवा बंडलों वाले APEX को सीधे तौर पर SDV डिवाइस पर डिप्लॉय करता है. यह प्लगिन डिफ़ॉल्ट रूप से बंद होता है. इसका इस्तेमाल करने के लिए, सेटिंग > प्लगिन में जाकर, SDV प्लगिन चालू करें. APEX पैकेजिंग के बारे में ज़्यादा जानकारी के लिए, सर्विस बंडल बनाना और उन्हें डिप्लॉय करना लेख पढ़ें.

APEX को डिवाइस पर डिप्लॉय करने का तरीका इस बात पर निर्भर करता है कि डिवाइस पर APEX पहले से मौजूद है या नहीं:

  • अगर APEX पहले से इंस्टॉल है, तो ASfP से सीधे तौर पर बदलाव लागू किए जा सकते हैं.
  • अगर APEX नया है, तो आपको सिस्टम इमेज को फिर से बनाना होगा और उसे फिर से लॉन्च करना होगा. इसके अलावा, ऐसी सिस्टम इमेज का इस्तेमाल किया जा सकता है जिसमें APEX पर हस्ताक्षर करने के लिए इस्तेमाल किया गया पासकोड शामिल हो. इसके बाद, ASfP से डिप्लॉय किया जा सकता है.

किसी सेवा बंडल APEX को डिप्लॉय करने के लिए, यह तरीका अपनाएं:

  1. Cuttlefish प्लगिन की मदद से, SDV डिवाइस चालू करें. ज़्यादा जानकारी के लिए, SDV डिवाइसों को Cuttlefish पर चलाना लेख पढ़ें.
  2. अपने सेवा बंडल की apex/Android.bp फ़ाइल खोलें. इसके बाद, apex { ब्लॉक के बगल में मौजूद गटर में, चलाएं आइकॉन पर क्लिक करें.
  3. इसके बाद, जो मेन्यू खुलेगा उसमें 'Deploy APEX_NAME' चलाएं को चुनें. एपीईएक्स को डिप्लॉय किए बिना भी बनाया जा सकता है. इसके अलावा, इसी मेन्यू से रन कॉन्फ़िगरेशन में बदलाव किया जा सकता है.

Cuttlefish पर SDV डिवाइसों को चलाना

ASfP में Cuttlefish प्लगिन शामिल होता है. यह प्लगिन, लोकल Cuttlefish डिवाइस बनाता है और उन्हें चलाता है. इस प्लगिन के लिए, Cuttlefish होस्ट ऑर्केस्ट्रेटर की ज़रूरत होती है. अगर होस्ट ऑर्केस्ट्रेटर उपलब्ध नहीं है, तो ASfP उसे सेट अप करने के निर्देश दिखाता है.

एसडीवी डिवाइस बनाने के लिए, यह तरीका अपनाएं:

  1. टूल > डिवाइस मैनेजर को चुनें. इसके बाद, + पर क्लिक करें और Cuttlefish डिवाइस बनाएं को चुनें.
  2. एक से ज़्यादा वीएम वाला सेटअप बनाने के लिए, कैननिकल कॉन्फ़िगरेशन से चुनें. इसके बाद, अपने सेटअप के लिए कोई कॉन्फ़िगरेशन बनाएं या इंपोर्ट करें. जैसे, SDV Core के साथ SDV IVI या SDV Media के साथ SDV IVI for Display Safety. एक वीएम बनाने के लिए, स्थानीय Android सोर्स ट्री चेकआउट से को चुनें.

एक ही स्क्रीन पर सभी वीएम डिसप्ले देखने और डिवाइस के अन्य विकल्पों को ऐक्सेस करने के लिए, Cuttlefish टूल विंडो का इस्तेमाल करें. इसे खोलने के लिए, साइड पैनल में मौजूद ... आइकॉन को चुनें. इसके बाद, Cuttlefish को चुनें. इसके अलावा, मदद > कार्रवाई ढूंढें में जाकर, Cuttlefish को खोजें. चल रहे डिवाइस में जाकर, अलग-अलग डिसप्ले भी देखे जा सकते हैं. SDV Core, डिसप्ले के बिना काम करता है. इसलिए, इसकी जांच करने के लिए Logcat और टर्मिनल का इस्तेमाल करें.

डीबग करना और जांच करना

ASfP में डीबग करने और टेस्टिंग के बारे में ज़्यादा जानने के लिए, प्लैटफ़ॉर्म कोड डीबग करना और प्लैटफ़ॉर्म कोड की जांच करना लेख पढ़ें. Rust सेवा बंडलों को डीबग करने के लिए, CodeLLDB को सेट अप करने के बारे में ज़्यादा जानने के लिए, Rust डीबग करना लेख पढ़ें.

जब डिबगर को किसी सेवा बंडल से अटैच किया जाता है, तब उसे होस्ट करने वाली प्रोसेस से अटैच करें. प्रोसेस के नाम, <bundle_name>:<instance_name> फ़ॉर्मैट में होते हैं. जैसे, OrchestratorSampleRustServiceBundle:sample-main-no-conditions. यहां दी गई कमांड से, मैच करने वाली प्रोसेस और उनके प्रोसेस आईडी की सूची मिलती है:

adb shell ps -A | grep <bundle_name>

एसडीवी डीबग करने के वर्कफ़्लो के बारे में ज़्यादा जानकारी के लिए, एसडीवी डीबग करना लेख पढ़ें. इसमें कई डिवाइसों से कनेक्ट करने और लॉग देखने के बारे में बताया गया है.

VSIDL फ़ाइलों में बदलाव करना

ASfP में VSIDL Language Server (vsidl-lsp) शामिल है. Language Server के लिए अपना कैटलॉग सेट अप करने के बारे में ज़्यादा जानने के लिए, कैटलॉग के अपने-आप अपडेट होने की सुविधा और एलएसपी इंटिग्रेशन लेख पढ़ें. अगर आपके कैटलॉग में CATALOG_UPDATE फ़ाइल शामिल है, तो Editor, .vsidl फ़ाइलों के लिए ये सुविधाएं उपलब्ध कराता है:

  • लाइव पुष्टि: एडिटर, VSIDL कीवर्ड को हाइलाइट करता है. साथ ही, समस्याएं विंडो में सिंटैक्स से जुड़ी गड़बड़ियां, अनसुलझे टाइप, और VSIDLC की पुष्टि से जुड़ी गड़बड़ियां दिखाता है. पुष्टि करने के नियमों और उनसे जुड़े गड़बड़ी के कोड के बारे में ज़्यादा जानने के लिए, VSIDL भाषा की खास जानकारी देखें.
  • अपने-आप पूरा होने की सुविधा और दस्तावेज़: कीवर्ड, मैसेज, सेवा, विषय, और चैनल के सुझावों के लिए, Ctrl+Space दबाएं. साथ ही, दस्तावेज़ से जुड़ी टिप्पणियां देखने के लिए, Ctrl+Q दबाएं.
  • नेविगेशन और फ़ॉर्मैटिंग: .vsidl या .proto की परिभाषाओं पर जाने के लिए, Ctrl+B दबाएं. रेफ़रंस ढूंढने के लिए, Alt+Shift+F7 दबाएं. फ़ाइल का स्ट्रक्चर देखने के लिए, Ctrl+F12 दबाएं. फ़ाइल को फ़ॉर्मैट करने के लिए, Ctrl+Alt+L दबाएं.

एआई असिस्टेंट के लिए एसडीवी कॉन्टेक्स्ट जोड़ना

ASfP में Android Studio में Gemini का इस्तेमाल करने की सुविधा शामिल है. ASfP की सुविधाओं के बारे में ज़्यादा जानने के लिए, Android Studio for Platform के बारे में जानकारी लेख पढ़ें. Gemini या किसी अन्य एआई कोडिंग असिस्टेंट को एसडीवी के नियमों का पालन करने में मदद करने के लिए, अपने एसडीवी कैटलॉग के रूट में AGENTS.md फ़ाइल जोड़ें. एजेंट फ़ाइलों के बारे में ज़्यादा जानने के लिए, AGENTS.md फ़ाइलों का इस्तेमाल करके Gemini को पसंद के मुताबिक बनाएं लेख पढ़ें.

यहां एक उदाहरण दिया गया है. इसे अपने कैटलॉग के हिसाब से बदला जा सकता है:

# AAOS SDV service catalog rules

- Implement SDV service bundles in Rust under `services/<BundleName>/src/`.
- Keep `.proto` files limited to Protobuf `message`, `enum`, and `service` definitions. Define service bundles, APEX packaging, VM placement, and SOME/IP mappings in `.vsidl` files.
- Regenerate middleware with `vsidlc` after you change `.vsidl` or `.proto` files, and leave generated files unmodified.
- Use `PascalCase` for service bundle names and lowercase `kebab-case` for topic and channel names.
- Run `vsidlc --explain <CODE>` to look up a VSIDLC error code.