Android Automotive OS (AAOS) সফ্টওয়্যার-ডিফাইন্ড ভেহিকল (SDV) প্ল্যাটফর্ম ডেভেলপমেন্টের জন্য সাজেস্ট করা ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE) হল Android Studio for Platform (ASfP)। ASfP, AAOS SDV প্ল্যাটফর্ম ব্যবহার করে এমন সব ভাষা সাপোর্ট করে, যার মধ্যে SDV পরিষেবা বান্ডেলের জন্য Rust অন্তর্ভুক্ত।
এই পৃষ্ঠায় শুধু SDV-নির্দিষ্ট সেট-আপ কভার করা হয়েছে। সাধারণ ASfP ফিচার ও ওয়ার্কফ্লো সম্পর্কে আরও জানতে, Android Studio for Platform দেখুন।
ASfP শুধুমাত্র x86-64 CPU সহ ৬৪-বিট Linux-এ চলে। আপনি এটি লোকাল Linux ওয়ার্কস্টেশন বা ক্লাউডে ব্যবহার করতে পারবেন। ক্লাউড সেট-আপ সম্পর্কে আরও তথ্যের জন্য, ক্লাউড ডেভেলপমেন্ট দেখুন।
ASfP ইনস্টল করুন
ASfP-এর ডিফল্ট হিপ সাইজ সর্বাধিক ৩০ জিবি। প্ল্যাটফর্ম চেকআউট ইন্ডেক্স করতে প্রচুর মেমরি ব্যবহার হয়, বিশেষ করে যখন আপনি একই মেশিনে মাল্টি-VM Cuttlefish ডিভাইসও চালান। আপনার প্রোজেক্টের স্কোপ আপনি যে ডিরেক্টরিতে কাজ করেন সেটিতে সীমাবদ্ধ রাখুন, এবং প্রয়োজন হলে ASfP মেমরি সেটিংসে সর্বাধিক হিপ সাইজ অ্যাডজাস্ট করুন।
ASfP অটোমেটিক ইন-IDE আপডেট সাপোর্ট করে। আরও তথ্যের জন্য, প্ল্যাটফর্মের জন্য Android Studio আপডেট করুন দেখুন। ASfP ডাউনলোড ও ইনস্টল করা এবং সিস্টেমের প্রয়োজনীয়তা চেক করার ব্যাপারে আরও তথ্য পেতে, প্ল্যাটফর্মের জন্য Android Studio ইনস্টল করুন দেখুন।
SDV প্রোজেক্ট তৈরি করা
শুরু করার আগে আপনার AAOS SDV চেকআউট শুরু, সিঙ্ক এবং তৈরি করুন। আপনার চেকআউট সেট-আপ করার ব্যাপারে আরও তথ্যের জন্য, কোড লোকেশন এবং ডাউনলোড, তৈরি ও রান করুন দেখুন।
SDV প্রোজেক্ট তৈরি করতে, এই ধাপগুলি অনুসরণ করুন:
- ASfP-তে নতুন প্রোজেক্ট তৈরি করুন এবং আপনার AAOS SDV চেক-আউটের রুটকে রিপোজিটরি চেক-আউট হিসেবে বেছে নিন। উইজার্ডের ধাপগুলি সম্পর্কে আরও তথ্যের জন্য, প্রজেক্ট তৈরি বা ইমপোর্ট করুন দেখুন।
- ASfP প্রোজেক্ট তৈরি করার পরে,
.asfp-projectফাইল খুলতে ASfP > প্রোজেক্ট > কনফিগারেশন খুলুন বিকল্প বেছে নিন। ফাইলের কন্টেন্ট নিম্নলিখিত উদাহরণ দিয়ে পরিবর্তন করুন এবং তারপর আপনার চেকআউটের পাথে
repoসেট করুন:repo: /path/to/sdv_source lunch: sdv_core_cf-aosp_current-userdebug directories: include: - system/software_defined_vehicle/samples other_languages: - rustআপনি যে এলাকায় কাজ করেন তার জন্য
lunchএবংdirectoriesআপডেট করুন। ইনডেক্সিং ও সিঙ্ক করার প্রসেস দ্রুত রাখতে, শুধুমাত্র সেইসব ডিরেক্টরি অন্তর্ভুক্ত করুন যেগুলি আপনি অ্যাক্টিভভাবে পরিবর্তন করেন। নিম্নলিখিত সারণীতে সাধারণ SDV টার্গেট ও ডিরেক্টরির তালিকা দেওয়া হয়েছে:SDV ডেভেলপমেন্ট ফোকাস lunchটার্গেটdirectoriesসাজেস্ট করা হয়েছেSDV পরিষেবা বান্ডেল sdv_core_cf-aosp_current-userdebugআপনার পরিষেবার ক্যাটালগ ও বান্ডেল ডিরেক্টরি, যেমন system/software_defined_vehicle/samplesSDV Core প্ল্যাটফর্ম ইন্টিগ্রেশন sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware,system/software_defined_vehicle/automotive_services,device/google/sdvSDV IVI-তে SDV গেটওয়ে sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway,system/software_defined_vehicle/samples/sdv_gateway,packages/services/CarSDV মিডিয়াতে ডিসপ্লে সংক্রান্ত নিরাপত্তা sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety,device/google/sdv_display_safetySDV IVI-তে ডিসপ্লে নিরাপত্তা sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI,packages/services/display_safety/serviceআপনার চেকআউট
trunk_stagingম্যানিফেস্ট ব্যবহার করলে,-aosp_current-userdebug-এর পরিবর্তে-trunk_staging-userdebugব্যবহার করুন। নেটিভ প্ল্যাটফর্ম কোডও ব্রাউজ করতে,other_languages-এcppযোগ করুন। সব কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, কনফিগারেশন প্যারামিটার দেখুন।আপনার করা পরিবর্তন প্রয়োগ করতে, ASfP > সিঙ্ক করুন > প্রোজেক্ট সিঙ্ক করুন বিকল্প বেছে নিন। সিঙ্ক মোড (সম্পূর্ণ সিঙ্ক, আংশিক সিঙ্ক এবং নো-বিল্ড সিঙ্ক) এবং আপনার টিমের জন্য শেয়ার করার যোগ্য
.asfp-projectটেমপ্লেট এক্সপোর্ট বা ইমপোর্ট করা সম্পর্কে আরও তথ্যের জন্য, সিঙ্ক মোড এবং Soong টুল উইন্ডো এবং শেয়ার করার যোগ্য প্রোজেক্ট টেমপ্লেট (এক্সপোর্ট এবং ইমপোর্ট) দেখুন।
SDV সার্ভিস বান্ডেল ডিপ্লয় করা
ASfP-তে একটি SDV প্লাগ-ইন অন্তর্ভুক্ত থাকে যা সরাসরি একটি চলমান SDV ডিভাইসে আপনার পরিষেবা বান্ডেল সহ একটি APEX ডিপ্লয় করে। প্লাগ-ইন ডিফল্ট হিসেবে বন্ধ করা থাকে। এটি ব্যবহার করতে, সেটিংস > প্লাগ-ইন থেকে SDV প্লাগ-ইন চালু করুন। APEX প্যাকেজিং সম্পর্কে আরও তথ্যের জন্য, পরিষেবা বান্ডেল তৈরি ও ডিপ্লয় করুন দেখুন।
আপনি কীভাবে ডিপ্লয় করবেন তা নির্ভর করে APEX আগে থেকেই ডিভাইসে আছে কিনা তার উপর:
- APEX আগে থেকেই ইনস্টল করা থাকলে, আপনি ASfP থেকে সরাসরি আপনার পরিবর্তনগুলি প্রয়োগ করতে পারবেন।
- APEX নতুন হলে, আপনাকে প্রথমে সিস্টেম ইমেজ আবার তৈরি ও লঞ্চ করতে হবে অথবা এমন সিস্টেম ইমেজ ব্যবহার করতে হবে যাতে APEX সাইন করার জন্য ব্যবহৃত কী অন্তর্ভুক্ত থাকে। তারপরে, আপনি ASfP থেকে ডিপ্লয় করতে পারবেন।
পরিষেবা বান্ডেল APEX ডেপ্লয় করতে, এই ধাপগুলি অনুসরণ করুন:
- Cuttlefish প্লাগ-ইন সহ আপনার SDV ডিভাইস চালু করুন। আরও তথ্যের জন্য, Cuttlefish-এ SDV ডিভাইস রান করুন দেখুন।
- আপনার সার্ভিস বান্ডেলের
apex/Android.bpফাইলটি খুলুন এবংapex {ব্লকের পাশে গাটারে রান আইকনে ক্লিক করুন। - যে মেনু খুলবে, সেখান থেকে 'APEX_NAME ডিপ্লয় করুন' রান করুন বিকল্প বেছে নিন। আপনি ডিপ্লয় না করেই APEX তৈরি করতে পারবেন অথবা একই মেনু থেকে রান কনফিগারেশন পরিবর্তন করতে পারবেন।
Cuttlefish-এ SDV ডিভাইস রান করা
ASfP-তে একটি Cuttlefish প্লাগ-ইন অন্তর্ভুক্ত থাকে যা স্থানীয় Cuttlefish ডিভাইস তৈরি করে এবং চালায়। প্লাগ-ইনের জন্য Cuttlefish হোস্ট অর্কেস্ট্রেটর প্রয়োজন। হোস্ট অর্কিস্ট্রেটর উপলভ্য না থাকলে, ASfP এটি সেট-আপ করার জন্য নির্দেশাবলী দেখায়।
SDV ডিভাইস তৈরি করতে, এই ধাপগুলি অনুসরণ করুন:
- টুল > ডিভাইস ম্যানেজার বেছে নিন, + আইকনে ক্লিক করুন এবং Cuttlefish ডিভাইস তৈরি করুন বিকল্প বেছে নিন।
- মাল্টি-VM সেট-আপ তৈরি করতে, ক্যানোনিকাল কনফিগারেশন থেকে বিকল্প বেছে নিন এবং আপনার সেট-আপের জন্য কনফিগারেশন তৈরি বা ইমপোর্ট করুন, যেমন SDV IVI-এর সাথে SDV Core অথবা ডিসপ্লে সুরক্ষার জন্য SDV IVI-এর সাথে SDV Media। একটি VM তৈরি করতে, পরিবর্তে লোকাল Android সোর্স ট্রি চেকআউট থেকে বিকল্প বেছে নিন।
একটি স্ক্রিনে সব VM ডিসপ্লে দেখতে এবং অতিরিক্ত ডিভাইস বিকল্প অ্যাক্সেস করতে, 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>
একাধিক ডিভাইসে কানেক্ট করা এবং লগ দেখার মতো SDV ডিবাগিং ওয়ার্কফ্লো সম্পর্কে আরও তথ্যের জন্য, SDV ডিবাগ করুন দেখুন।
VSIDL ফাইল এডিট করুন
ASfP-তে VSIDL ল্যাঙ্গুয়েজ সার্ভার (vsidl-lsp) অন্তর্ভুক্ত থাকে। ল্যাঙ্গুয়েজ সার্ভারের জন্য
আপনার ক্যাটালগ কীভাবে সেট-আপ করবেন সেই সম্পর্কে আরও তথ্যের জন্য, অটোমেটিক ক্যাটালগ আপডেট এবং LSP ইন্টিগ্রেশন দেখুন। আপনার ক্যাটালগে CATALOG_UPDATE ফাইল থাকলে, এডিটর .vsidl ফাইলের জন্য
নিম্নলিখিত ফিচার প্রদান করে:
- লাইভ যাচাইকরণ: এডিটর VSIDL কীওয়ার্ড হাইলাইট করে এবং সমস্যা উইন্ডোতে সিনট্যাক্স সংক্রান্ত সমস্যা, সমাধান না হওয়া ধরন এবং VSIDLC যাচাইকরণ সংক্রান্ত সমস্যা দেখায়। যাচাইকরণ সংক্রান্ত নিয়ম ও সেগুলির ত্রুটি কোড সম্পর্কে আরও জানতে, VSIDL ভাষার স্পেসিফিকেশন দেখুন।
- অটো-কমপ্লিশন ও ডকুমেন্টেশন: আপনি কীওয়ার্ড, মেসেজ, পরিষেবা, বিষয় ও চ্যানেল সংক্রান্ত সাজেশন পেতে Ctrl+Space প্রেস করতে পারেন এবং ডকুমেন্টেশন কমেন্ট দেখতে Ctrl+Q প্রেস করতে পারেন।
- নেভিগেশন ও ফর্ম্যাটিং: আপনি
.vsidlবা.proto-এর সংজ্ঞা দেখতে Ctrl+B, রেফারেন্স খুঁজতে Alt+Shift+F7, ফাইলের স্ট্রাকচার দেখতে Ctrl+F12 এবং ফাইল ফর্ম্যাট করতে Ctrl+Alt+L প্রেস করতে পারেন।
AI অ্যাসিস্ট্যান্টের জন্য SDV প্রসঙ্গ যোগ করুন
ASfP-তে Android Studio-তে AI এবং Soong বিল্ড ও
atest টুল সহ একটি বিল্ট-ইন এজেন্ট অন্তর্ভুক্ত রয়েছে। ASfP AI ফিচার সম্পর্কে আরও জানতে, Meet Android Studio for Platform দেখুন। AI অ্যাসিস্ট্যান্টকে 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.