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

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

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

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

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

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

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

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

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

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

  1. ASfP में एक नया प्रोजेक्ट बनाएं और रिपॉज़िटरी चेकआउट के तौर पर, अपने AAOS SDV चेकआउट का रूट चुनें. विज़र्ड के चरणों के बारे में ज़्यादा जानने के लिए, कोई प्रोजेक्ट बनाना या इंपोर्ट करना लेख पढ़ें.
  2. ASfP के प्रोजेक्ट बनाने के बाद, .asfp-project फ़ाइल खोलने के लिए, ASfP > Project > Open Config को चुनें.
  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_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_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway, packages/services/Car
    एसडीवी मीडिया पर सुरक्षा से जुड़ी जानकारी दिखाना sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    एसडीवी आईवीआई पर डिसप्ले की सुरक्षा sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

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

  5. बदलावों को लागू करने के लिए, ASfP > Sync > Sync Project को चुनें. सिंक मोड (फ़ुल सिंक, पार्शियल सिंक, और नो-बिल्ड सिंक) के बारे में ज़्यादा जानने के लिए, सिंक मोड और Soong टूल विंडो लेख पढ़ें. अपनी टीम के लिए, शेयर किए जा सकने वाले .asfp-project टेंप्लेट एक्सपोर्ट या इंपोर्ट करने के बारे में ज़्यादा जानने के लिए, शेयर किए जा सकने वाले प्रोजेक्ट टेंप्लेट (एक्सपोर्ट और इंपोर्ट करना) लेख पढ़ें.

एसडीवी सर्विस बंडल डिप्लॉय करना

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

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

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

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

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

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

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

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

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

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

डीबग और टेस्ट करना

ASfP में C++ और Rust कोड के लिए, पहले से मौजूद LLDB डीबगर शामिल है. ASfP में डीबग और टेस्ट करने के बारे में ज़्यादा जानकारी के लिए, प्लैटफ़ॉर्म कोड को डीबग करना, Rust कोड को डीबग करना, atest की मदद से प्लैटफ़ॉर्म कोड को टेस्ट करना, और LLDB में cc_test और rust_test टारगेट को डीबग करना लेख पढ़ें.

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

adb shell ps -A | grep <bundle_name>

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

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

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

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

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

ASfP में, Android Studio में एआई और Soong बिल्ड और atest टूल के साथ पहले से मौजूद एजेंट शामिल है. ASfP में मौजूद एआई की सुविधाओं के बारे में ज़्यादा जानने के लिए, Android Studio for Platform के बारे में जानें लेख पढ़ें. एआई असिस्टेंट को SDV के नियमों का पालन करने में मदद करने के लिए, अपने VSIDL कैटलॉग के रूट में एक 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.