অ্যান্ড্রয়েড অটোমোটিভ ওএস (AAOS) সফটওয়্যার-ডিফাইন্ড ভেহিকেল (SDV) প্ল্যাটফর্ম ডেভেলপমেন্টের জন্য অ্যান্ড্রয়েড স্টুডিও ফর প্ল্যাটফর্ম (ASfP) হলো প্রস্তাবিত ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট (IDE)। ASfP, AAOS SDV প্ল্যাটফর্মে ব্যবহৃত সমস্ত ভাষা সমর্থন করে, যার মধ্যে SDV সার্ভিস বান্ডেলের জন্য ব্যবহৃত রাস্ট (Rust) অন্তর্ভুক্ত।
এই পৃষ্ঠায় শুধুমাত্র SDV-এর জন্য নির্দিষ্ট সেটআপ সম্পর্কে আলোচনা করা হয়েছে। ASfP-এর সাধারণ বৈশিষ্ট্য ও কর্মপ্রবাহ সম্পর্কে আরও তথ্যের জন্য, Android Studio for Platform দেখুন।
ASfP শুধুমাত্র x86-64 সিপিইউ সহ ৬৪-বিট লিনাক্সে চলে। আপনি এটি স্থানীয় লিনাক্স ওয়ার্কস্টেশনে অথবা ক্লাউডে ব্যবহার করতে পারেন। ক্লাউড সেটআপ সম্পর্কে আরও তথ্যের জন্য, ক্লাউড ডেভেলপমেন্ট দেখুন।
ASfP ইনস্টল করুন
ASfP ডাউনলোড ও ইনস্টল করা এবং সিস্টেমের প্রয়োজনীয়তাগুলো যাচাই করার বিষয়ে আরও তথ্যের জন্য, “Install Android Studio for Platform” দেখুন।
একটি প্ল্যাটফর্ম চেকআউট ইন্ডেক্স করতে প্রচুর মেমরি ব্যবহৃত হয়, বিশেষ করে যখন আপনি একই মেশিনে একাধিক ভিএম কাটলফিশ ডিভাইসও চালান। যদি ASfP ধীরগতিতে চলে, তবে আপনার প্রজেক্ট এবং মেশিনের সাথে সামঞ্জস্য রেখে ASfP মেমরি সেটিংসে সর্বোচ্চ হিপ সাইজ বাড়িয়ে দিন এবং আপনার প্রজেক্টকে শুধুমাত্র সেই ডিরেক্টরিগুলোর মধ্যেই সীমাবদ্ধ রাখুন যেখানে আপনি কাজ করেন।
একটি এসডিভি প্রকল্প তৈরি করুন
শুরু করার আগে আপনার AAOS SDV চেকআউটটি ইনিশিয়ালাইজ, সিঙ্ক এবং বিল্ড করুন। আপনার চেকআউট সেট আপ করার বিষয়ে আরও তথ্যের জন্য, কোডের অবস্থান এবং ডাউনলোড, বিল্ড ও রান দেখুন।
একটি SDV প্রকল্প তৈরি করতে, এই ধাপগুলো অনুসরণ করুন:
- ASfP-তে একটি নতুন প্রজেক্ট তৈরি করুন এবং রিপোজিটরি চেকআউট হিসেবে আপনার AAOS SDV চেকআউটের রুটটি নির্বাচন করুন। উইজার্ডের ধাপগুলো সম্পর্কে আরও তথ্যের জন্য, “একটি প্রজেক্ট তৈরি বা ইম্পোর্ট করুন” দেখুন।
- ASfP প্রজেক্টটি তৈরি করার পর,
.asfp-projectফাইলটি খোলার জন্য ASfP > Project > Open Config নির্বাচন করুন। ফাইলটির বিষয়বস্তু নিচের উদাহরণ দিয়ে প্রতিস্থাপন করুন, এবং তারপর
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আপডেট করুন। ইন্ডেক্সিং ও সিঙ্ক দ্রুত রাখতে, শুধু সেই ডিরেক্টরিগুলো অন্তর্ভুক্ত করুন যেগুলো আপনি সক্রিয়ভাবে পরিবর্তন করেন। নিচের সারণিতে সাধারণ এসডিভি টার্গেট ও ডিরেক্টরিগুলোর তালিকা দেওয়া হলো:এসডিভি উন্নয়নের কেন্দ্রবিন্দু lunchলক্ষ্যপ্রস্তাবিত directoriesএসডিভি পরিষেবা বান্ডেল sdv_core_cf-aosp_current-userdebugআপনার পরিষেবা ক্যাটালগ এবং বান্ডেল ডিরেক্টরি, যেমন system/software_defined_vehicle/samplesএসডিভি কোর প্ল্যাটফর্ম ইন্টিগ্রেশন 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/Carএসডিভি মিডিয়াতে ডিসপ্লে নিরাপত্তা 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-trunk_staging-userdebugব্যবহার করুন। নেটিভ প্ল্যাটফর্ম কোডও ব্রাউজ করার জন্য,other_languagesএcppযোগ করুন। সমস্ত কনফিগারেশন বিকল্প সম্পর্কে আরও তথ্যের জন্য, কনফিগারেশন প্যারামিটার দেখুন।আপনার পরিবর্তনগুলি প্রয়োগ করতে, ফাইল > প্রজেক্ট সিঙ্ক নির্বাচন করুন।
এসডিভি পরিষেবা বান্ডেলগুলি স্থাপন করুন
ASfP-তে একটি SDV প্লাগইন অন্তর্ভুক্ত রয়েছে যা আপনার সার্ভিস বান্ডেল সম্বলিত একটি APEX ফাইলকে সরাসরি একটি চলমান SDV ডিভাইসে ডেপ্লয় করে। প্লাগইনটি ডিফল্টরূপে নিষ্ক্রিয় থাকে। এটি ব্যবহার করতে, সেটিংস > প্লাগইনস- এ গিয়ে SDV প্লাগইনটি সক্রিয় করুন। APEX প্যাকেজিং সম্পর্কে আরও তথ্যের জন্য, সার্ভিস বান্ডেল তৈরি ও ডেপ্লয় করুন দেখুন।
আপনি কীভাবে স্থাপন করবেন তা নির্ভর করে APEX ডিভাইসটিতে আগে থেকেই আছে কিনা তার উপর:
- যদি APEX আগে থেকেই ইনস্টল করা থাকে , তাহলে আপনি সরাসরি ASfP থেকে আপনার পরিবর্তনগুলো ডেপ্লয় করতে পারবেন।
- APEX-টি নতুন হলে , আপনাকে প্রথমে সিস্টেম ইমেজটি রিবিল্ড ও রিলঞ্চ করতে হবে, অথবা এমন একটি সিস্টেম ইমেজ ব্যবহার করতে হবে যাতে APEX-টি সাইন করার জন্য ব্যবহৃত কী-টি অন্তর্ভুক্ত রয়েছে। এরপর আপনি ASfP থেকে ডিপ্লয় করতে পারবেন।
APEX-এ একটি সার্ভিস বান্ডেল ডিপ্লয় করতে, এই ধাপগুলো অনুসরণ করুন:
- Cuttlefish প্লাগইন দিয়ে আপনার SDV ডিভাইসটি চালু করুন। আরও তথ্যের জন্য, “Run SDV devices on Cuttlefish ” দেখুন।
- আপনার সার্ভিস বান্ডেলের
apex/Android.bpফাইলটি খুলুন এবংapex {ব্লকের পাশে গাটারে থাকা রান আইকনে ক্লিক করুন। - যে মেনুটি খুলবে, সেখান থেকে 'Deploy APEX_NAME' রান (Run 'Deploy APEX_NAME ') নির্বাচন করুন। আপনি একই মেনু থেকে ডেপ্লয় না করেই APEX বিল্ড করতে পারেন অথবা রান কনফিগারেশন পরিবর্তন করতে পারেন।
কাটলফিশে এসডিভি ডিভাইস চালান
ASfP-তে একটি কাটলফিশ প্লাগইন অন্তর্ভুক্ত রয়েছে যা স্থানীয় কাটলফিশ ডিভাইস তৈরি ও পরিচালনা করে। প্লাগইনটির জন্য কাটলফিশ হোস্ট অর্কেস্ট্রেটর প্রয়োজন। যদি হোস্ট অর্কেস্ট্রেটরটি উপলব্ধ না থাকে, তবে ASfP এটি সেট আপ করার জন্য নির্দেশাবলী দেখায়।
একটি SDV ডিভাইস তৈরি করতে, এই ধাপগুলো অনুসরণ করুন:
- টুলস > ডিভাইস ম্যানেজার নির্বাচন করুন, + এ ক্লিক করুন এবং ক্রিয়েট কাটলফিশ ডিভাইস নির্বাচন করুন।
- একাধিক ভিএম সেটআপ তৈরি করতে, ‘ফ্রম ক্যানোনিকাল কনফিগারেশন’ নির্বাচন করুন এবং আপনার সেটআপের জন্য একটি কনফিগারেশন তৈরি বা ইম্পোর্ট করুন, যেমন এসডিভি কোর উইথ এসডিভি আইভিআই, অথবা ডিসপ্লে সেফটির জন্য এসডিভি মিডিয়া উইথ এসডিভি আইভিআই। একটি একক ভিএম তৈরি করতে, এর পরিবর্তে ‘ফ্রম লোকাল অ্যান্ড্রয়েড সোর্স ট্রি চেকআউট’ নির্বাচন করুন।
একটি স্ক্রিনে সমস্ত ভিএম ডিসপ্লে দেখতে এবং অতিরিক্ত ডিভাইস অপশন অ্যাক্সেস করতে, কাটলফিশ টুল উইন্ডো ব্যবহার করুন। এটি খুলতে, সাইড প্যানেলে থাকা ... আইকনটি সিলেক্ট করে কাটলফিশ নির্বাচন করুন, অথবা হেল্প > ফাইন্ড অ্যাকশন- এ কাটলফিশ লিখে সার্চ করুন। আপনি রানিং ডিভাইসেস -এ স্বতন্ত্র ডিসপ্লেগুলোও দেখতে পারেন। যেহেতু এসডিভি কোর কোনো ডিসপ্লে ছাড়াই চলে, তাই এটি পরীক্ষা করার জন্য লগক্যাট এবং টার্মিনাল ব্যবহার করুন।
ডিবাগ এবং পরীক্ষা
ASfP-তে ডিবাগিং এবং টেস্টিং সম্পর্কে আরও তথ্যের জন্য, ‘ডিবাগ প্ল্যাটফর্ম কোড’ এবং ‘টেস্ট প্ল্যাটফর্ম কোড’ দেখুন। রাস্ট সার্ভিস বান্ডেল ডিবাগ করার জন্য CodeLLDB সেট আপ করার বিষয়ে আরও তথ্যের জন্য, ‘রাস্ট ডিবাগিং’ দেখুন।
যখন আপনি কোনো সার্ভিস বান্ডেলে ডিবাগার সংযুক্ত করেন, তখন সেটিকে হোস্টকারী প্রসেসটির সাথে সংযুক্ত হন। প্রসেসের নামগুলো <bundle_name>:<instance_name> ফরম্যাটে থাকে, যেমন OrchestratorSampleRustServiceBundle:sample-main-no-conditions । নিম্নলিখিত কমান্ডটি মিলে যাওয়া প্রসেস এবং তাদের প্রসেস আইডিগুলো তালিকাভুক্ত করে:
adb shell ps -A | grep <bundle_name>
একাধিক ডিভাইসে সংযোগ স্থাপন এবং লগ দেখার মতো SDV ডিবাগিং ওয়ার্কফ্লো সম্পর্কে আরও তথ্যের জন্য, Debug SDV দেখুন।
VSIDL ফাইলগুলি সম্পাদনা করুন
ASfP-তে VSIDL ল্যাঙ্গুয়েজ সার্ভার ( vsidl-lsp ) অন্তর্ভুক্ত রয়েছে। ল্যাঙ্গুয়েজ সার্ভারের জন্য আপনার ক্যাটালগ কীভাবে সেট আপ করবেন সে সম্পর্কে আরও তথ্যের জন্য, স্বয়ংক্রিয় ক্যাটালগ আপডেট এবং LSP ইন্টিগ্রেশন দেখুন। যখন আপনার ক্যাটালগে একটি CATALOG_UPDATE ফাইল অন্তর্ভুক্ত থাকে, তখন এডিটর .vsidl ফাইলগুলির জন্য নিম্নলিখিত বৈশিষ্ট্যগুলি প্রদান করে:
- সরাসরি যাচাইকরণ : এডিটরটি VSIDL কীওয়ার্ডগুলো হাইলাইট করে এবং 'Problems' উইন্ডোতে সিনট্যাক্স ত্রুটি, অমীমাংসিত টাইপ ও VSIDLC যাচাইকরণ ত্রুটি প্রদর্শন করে। যাচাইকরণ নিয়মাবলী এবং তাদের ত্রুটি কোড সম্পর্কে আরও তথ্যের জন্য, VSIDL ভাষা স্পেসিফিকেশন দেখুন।
- স্বয়ংক্রিয়ভাবে পূরণ এবং ডকুমেন্টেশন : আপনি কীওয়ার্ড, বার্তা, পরিষেবা, বিষয় এবং চ্যানেলের পরামর্শের জন্য Ctrl+Space চাপতে পারেন এবং ডকুমেন্টেশনের মন্তব্য দেখার জন্য Ctrl+Q চাপতে পারেন।
- নেভিগেশন এবং ফরম্যাটিং : আপনি
.vsidlবা.protoডেফিনিশনে যেতে Ctrl+B , রেফারেন্স খুঁজতে Alt+Shift+F7 , ফাইল স্ট্রাকচার দেখতে Ctrl+F12 এবং ফাইলটি ফরম্যাট করতে Ctrl+Alt+L চাপতে পারেন।
এআই অ্যাসিস্ট্যান্টদের জন্য এসডিভি কনটেক্সট যোগ করুন
ASfP, Android Studio-তে Gemini অন্তর্ভুক্ত করে। ASfP-এর বৈশিষ্ট্য সম্পর্কে আরও তথ্যের জন্য, Meet Android Studio for Platform দেখুন। Gemini বা অন্য কোনো AI কোডিং অ্যাসিস্ট্যান্টকে SDV কনভেনশন অনুসরণ করতে সাহায্য করার জন্য, আপনার SDV ক্যাটালগের রুটে একটি AGENTS.md ফাইল যোগ করুন। এজেন্ট ফাইল সম্পর্কে আরও তথ্যের জন্য, Customize Gemini using AGENTS.md files দেখুন।
নিম্নলিখিত উদাহরণটি একটি সূচনা বিন্দু যা আপনি আপনার ক্যাটালগে মানিয়ে নিতে পারেন:
# 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.