اندروید استودیو برای پلتفرم (ASfP) محیط توسعه یکپارچه (IDE) پیشنهادی برای توسعه پلتفرم اندروید اتو اویل او اس (AAOS) و پلتفرم نرمافزارمحور (SDV) است. ASfP از تمام زبانهایی که پلتفرم AAOS SDV استفاده میکند، از جمله بستههای سرویس Rust برای SDV، پشتیبانی میکند.
این صفحه فقط تنظیمات مخصوص SDV را پوشش میدهد. برای اطلاعات بیشتر در مورد ویژگیها و گردشهای کاری عمومی ASfP، به Android Studio for Platform مراجعه کنید.
ASfP فقط روی لینوکس ۶۴ بیتی با پردازندههای x86-64 اجرا میشود. میتوانید از آن روی یک ایستگاه کاری لینوکس محلی یا در فضای ابری استفاده کنید. برای اطلاعات بیشتر در مورد راهاندازی فضای ابری، به بخش توسعه فضای ابری مراجعه کنید.
نصب ASfP
برای اطلاعات بیشتر در مورد دانلود و نصب ASfP و بررسی نیازمندیهای سیستم، به بخش نصب اندروید استودیو برای پلتفرم مراجعه کنید.
ایندکس کردن یک پرداخت پلتفرم، حافظه زیادی مصرف میکند، به خصوص وقتی که دستگاههای Cuttlefish چند ماشین مجازی را نیز روی همان دستگاه اجرا میکنید. اگر ASfP به کندی اجرا میشود، حداکثر اندازه heap را در تنظیمات حافظه ASfP افزایش دهید تا با پروژه و دستگاه شما متناسب باشد و پروژه خود را به دایرکتوریهایی که روی آنها کار میکنید محدود کنید.
ایجاد یک پروژه SDV
قبل از شروع، پرداخت AAOS SDV خود را راهاندازی، همگامسازی و بسازید. برای اطلاعات بیشتر در مورد راهاندازی پرداخت، به بخش مکان کد و دانلود، ساخت و اجرا مراجعه کنید.
برای ایجاد یک پروژه SDV، مراحل زیر را دنبال کنید:
- یک پروژه جدید در ASfP ایجاد کنید و ریشه پرداخت AAOS SDV خود را به عنوان پرداخت مخزن انتخاب کنید. برای اطلاعات بیشتر در مورد مراحل ویزارد، به ایجاد یا وارد کردن یک پروژه مراجعه کنید.
- پس از اینکه ASfP پروژه را ایجاد کرد، برای باز کردن فایل
.asfp-projectASfP > 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: - rustlunchوdirectoriesمربوط به منطقهای که روی آن کار میکنید را بهروزرسانی کنید. برای حفظ سرعت ایندکسگذاری و همگامسازی، فقط دایرکتوریهایی را که بهطور فعال تغییر میدهید، لحاظ کنید. جدول زیر اهداف و دایرکتوریهای رایج SDV را فهرست میکند:تمرکز توسعه SDV هدف lunchdirectoriesپیشنهادیبستههای خدمات SDV sdv_core_cf-aosp_current-userdebugفهرست خدمات و دایرکتوری بستههای نرمافزاری شما، مانند system/software_defined_vehicle/samplesادغام پلتفرم SDV Core sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware،system/software_defined_vehicle/automotive_services،device/google/sdvدرگاه SDV روی SDV IVI sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway،system/software_defined_vehicle/samples/sdv_gateway،packages/services/Carنمایش ایمنی در SDV Media sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety،device/google/sdv_display_safetyنمایش ایمنی در SDV IVI sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI،packages/services/display_safety/serviceاگر پرداخت شما از مانیفست
trunk_stagingاستفاده میکند،-aosp_current-userdebugرا با-trunk_staging-userdebugجایگزین کنید. برای مرور کد پلتفرم بومی،cppرا بهother_languagesاضافه کنید. برای اطلاعات بیشتر در مورد تمام گزینههای پیکربندی، به پارامترهای پیکربندی مراجعه کنید.برای اعمال تغییرات، File > Sync Project را انتخاب کنید.
بستههای خدمات SDV را مستقر کنید
ASfP شامل یک افزونه SDV است که APEX حاوی بستههای سرویس شما را مستقیماً روی یک دستگاه SDV در حال اجرا مستقر میکند. این افزونه به طور پیشفرض غیرفعال است. برای استفاده از آن، افزونه SDV را در تنظیمات > افزونهها فعال کنید. برای اطلاعات بیشتر در مورد بستهبندی APEX، به ساخت و استقرار بستههای سرویس مراجعه کنید.
نحوهی استقرار شما بستگی به این دارد که آیا APEX از قبل روی دستگاه وجود دارد یا خیر:
- اگر APEX از قبل نصب شده باشد ، میتوانید تغییرات خود را مستقیماً از ASfP اعمال کنید.
- اگر APEX جدید است ، ابتدا باید تصویر سیستم را بازسازی و مجدداً راهاندازی کنید، یا از یک تصویر سیستم که شامل کلید مورد استفاده برای امضای APEX است استفاده کنید. پس از آن، میتوانید از ASfP مستقر شوید.
برای نصب بسته سرویس APEX، مراحل زیر را دنبال کنید:
- دستگاه SDV خود را با افزونه Cuttlefish راهاندازی کنید. برای اطلاعات بیشتر، به اجرای دستگاههای SDV روی Cuttlefish مراجعه کنید.
- فایل
apex/Android.bpمربوط به بستهی سرویس خود را باز کنید و روی آیکون اجرا (Run) در حاشیهی کنار بلوکapex {کلیک کنید. - در منویی که باز میشود، گزینهی «اجرای 'Deploy APEX_NAME '» را انتخاب کنید. همچنین میتوانید APEX را بدون استقرار آن بسازید یا پیکربندی اجرا را از همان منو تغییر دهید.
دستگاههای SDV را روی Cuttlefish اجرا کنید
ASfP شامل یک افزونهی Cuttlefish است که دستگاههای محلی Cuttlefish را ایجاد و اجرا میکند. این افزونه به هماهنگکنندهی میزبان Cuttlefish نیاز دارد. اگر هماهنگکنندهی میزبان در دسترس نباشد، ASfP دستورالعملهایی برای راهاندازی آن نشان میدهد.
برای ایجاد یک دستگاه SDV، مراحل زیر را دنبال کنید:
- ابزارها > مدیریت دستگاه را انتخاب کنید، روی + کلیک کنید و ایجاد دستگاه Cuttlefish را انتخاب کنید.
- برای ایجاد یک پیکربندی چند ماشین مجازی، گزینه « از پیکربندی متعارف» (From canonical configuration) را انتخاب کنید و یک پیکربندی برای پیکربندی خود ایجاد یا وارد کنید، مانند SDV Core با SDV IVI یا SDV Media با SDV IVI برای ایمنی نمایش. برای ایجاد یک ماشین مجازی واحد، به جای آن، گزینه «از درخت منبع اندروید محلی» (From local Android source tree checkout) را انتخاب کنید.
برای مشاهده تمام نمایشگرهای ماشین مجازی در یک صفحه و دسترسی به گزینههای اضافی دستگاه، از پنجره ابزار Cuttlefish استفاده کنید. برای باز کردن آن، نماد ... را در پنل کناری انتخاب کنید و Cuttlefish را انتخاب کنید، یا Cuttlefish را در Help > Find Action جستجو کنید. همچنین میتوانید نمایشگرهای جداگانه را در Running Devices مشاهده کنید. از آنجا که SDV Core بدون نمایشگر اجرا میشود، از Logcat و Terminal برای بررسی آن استفاده کنید.
اشکالزدایی و آزمایش
برای اطلاعات بیشتر در مورد اشکالزدایی و آزمایش در ASfP، به بخش اشکالزدایی کد پلتفرم و تست کد پلتفرم مراجعه کنید. برای اطلاعات بیشتر در مورد راهاندازی CodeLLDB برای اشکالزدایی بستههای سرویس Rust، به اشکالزدایی Rust مراجعه کنید.
وقتی دیباگر را به یک بسته سرویس متصل میکنید، آن را به فرآیندی که میزبان آن است متصل کنید. نام فرآیندها از قالب <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 را برجسته میکند و خطاهای نحوی، انواع حل نشده و خطاهای اعتبارسنجی VSIDLC را در پنجره مشکلات نشان میدهد. برای اطلاعات بیشتر در مورد قوانین اعتبارسنجی و کدهای خطای آنها، به مشخصات زبان VSIDL مراجعه کنید.
- تکمیل خودکار و مستندسازی : میتوانید برای پیشنهاد کلمات کلیدی، پیام، سرویس، موضوع و کانال، Ctrl+Space را فشار دهید و برای مشاهده نظرات در مورد مستندات ، Ctrl+Q را فشار دهید.
- پیمایش و قالببندی : میتوانید Ctrl+B را برای رفتن به تعاریف
.vsidlیا.proto، Alt+Shift+F7 را برای یافتن ارجاعات، Ctrl+F12 را برای مشاهده ساختار فایل و Ctrl+Alt+L را برای قالببندی فایل فشار دهید.
زمینه SDV را برای دستیاران هوش مصنوعی اضافه کنید
ASfP شامل Gemini در اندروید استودیو است. برای اطلاعات بیشتر در مورد ویژگیهای ASfP، به «ملاقات با اندروید استودیو برای پلتفرم» مراجعه کنید. برای کمک به Gemini یا یک دستیار کدنویسی هوش مصنوعی دیگر در پیروی از قراردادهای SDV، یک فایل AGENTS.md به ریشه کاتالوگ SDV خود اضافه کنید. برای اطلاعات بیشتر در مورد فایلهای عامل، به «سفارشیسازی Gemini با استفاده از فایلهای AGENTS.md» مراجعه کنید.
مثال زیر یک نقطه شروع است که میتوانید آن را با کاتالوگ خود تطبیق دهید:
# 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.