«استودیو Android» برای پلاتفرم (ASfP) محیط توسعه یکپارچه (IDE) توصیهشده برای توسعه پلاتفرم «خودرو نرمافزارمحور» (SDV) در «سیستمعامل Android Automotive» (AAOS) است. ASfP از همه زبانهایی که پلاتفرم خودروی نرمافزارمحور سیستم عامل Android Automotive استفاده میکند، ازجمله Rust برای بستههای سرویس خودروی نرمافزارمحور، پشتیبانی میکند.
این صفحه فقط راهاندازی مختص «خودرو نرمافزارمحور» را پوشش میدهد. برای کسب اطلاعات بیشتر درباره ویژگیها و گردشهای کاری عمومی ASfP، به Android Studio ویژه پلاتفرم مراجعه کنید.
ASfP فقط در Linux ۶۴ بیتی با واحد پردازش مرکزی x86-64 اجرا میشود. میتوانید از آن در ایستگاه کاری محلی Linux یا در فضای ابری استفاده کنید. برای اطلاعات بیشتر درباره راهاندازی ابری، به توسعه ابری مراجعه کنید.
نصب ASfP
ASfP بهطور پیشفرض حداکثر اندازه توده ۳۰ گیگابایتی دارد. نمایهسازی یک پلاتفرم checkout حافظه زیادی مصرف میکند، بهویژه وقتی که دستگاههای Cuttlefish چند VM را نیز روی همان ماشین اجرا میکنید. پروژهتان را به دایرکتوریهایی که روی آنها کار میکنید محدود کنید، و درصورت نیاز، حداکثر اندازه توده را در تنظیمات حافظه ASfP تنظیم کنید.
ASfP از بهروزرسانیهای خودکار درون IDE پشتیبانی میکند. برای اطلاعات بیشتر، بهروزرسانی Android Studio برای پلاتفرم را ببینید. برای کسب اطلاعات بیشتر درباره بارگیری و نصب ASfP و بررسی الزامات سیستم، نصب Android Studio ویژه پلاتفرم را ببینید.
ایجاد پروژه SDV
قبلاز شروع، AAOS SDV checkout را مقداردهی اولیه، همگامسازی، و ایجاد کنید. برای کسب اطلاعات بیشتر درباره راهاندازی تسویهحساب، به مکان کد و بارگیری، ساخت، و اجرا مراجعه کنید.
برای ایجاد پروژه «خودروی نرمافزارمحور»، این مراحل را دنبال کنید:
- پروژه جدیدی در ASfP ایجاد کنید و ریشه تسویهحساب AAOS SDV خود را بهعنوان تسویهحساب مخزن انتخاب کنید. برای اطلاعات بیشتر درباره مراحل جادویار، ایجاد یا وارد کردن پروژه را ببینید.
- پساز اینکه ASfP پروژه را ایجاد کرد، ASfP > پروژه > باز کردن پیکربندی را انتخاب کنید تا
فایل
.asfp-projectباز شود. محتویات فایل را با نمونه زیر جایگزین کنید، سپس
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 lunchهدفdirectoriesتوصیه شدهدستههای سرویس SDV sdv_core_cf-aosp_current-userdebugکاتالوگ سرویس و فهرست راهنمای بسته شما، مثل system/software_defined_vehicle/samplesیکپارچهسازی پلاتفرم اصلی SDV sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware،system/software_defined_vehicle/automotive_services،device/google/sdvدروازه SDV در سیستم سرگرمی-اطلاعاتی درونخودرو SDV sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway،system/software_defined_vehicle/samples/sdv_gateway،packages/services/Carنمایش ایمنی در رسانه SDV sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety،device/google/sdv_display_safetyنمایش ایمنی در سیستم سرگرمی-اطلاعاتی درونخودرو SDV 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اضافه کنید. برای اطلاعات بیشتر درباره همه گزینههای پیکربندی، پارامترهای پیکربندی را ببینید.برای اعمال تغییرات، ASfP > همگامسازی > همگامسازی پروژه را انتخاب کنید. برای کسب اطلاعات بیشتر درباره حالتهای همگامسازی («همگامسازی کامل»، «همگامسازی جزئی»، و «همگامسازی بدون ساخت») و صادر کردن یا وارد کردن الگوهای
.asfp-projectقابلهمرسانی برای تیمتان، به حالتهای همگامسازی و پنجره ابزار Soong و الگوهای پروژه قابلهمرسانی (صادر کردن و وارد کردن) مراجعه کنید.
پیادهسازی کردن دستههای سرویس SDV
ASfP شامل افزونه SDV است که APEX حاوی بستههای سرویس شما را مستقیماً در دستگاه SDV درحال اجرا مستقر میکند. افزایه بهطور پیشفرض غیرفعال است. برای استفاده از آن، افزایه SDV را در تنظیمات > افزایهها فعال کنید. برای اطلاعات بیشتر درباره بستهبندی APEX، به ساختن و پیادهسازی بستههای سرویس مراجعه کنید.
نحوه استقرار به این بستگی دارد که APEX ازقبل در دستگاه وجود داشته باشد یا نه:
- اگر APEX ازقبل نصب شده باشد، میتوانید تغییراتتان را مستقیماً از ASfP مستقر کنید.
- اگر APEX جدید است، ابتدا باید ایمیج سیستم را بازسازی و بازراهاندازی کنید، یا از ایمیج سیستمی استفاده کنید که حاوی کلید استفادهشده برای امضای APEX باشد. پساز آن، میتوانید از ASfP مستقر کنید.
برای استقرار APEX دسته سرویس، این مراحل را دنبال کنید:
- دستگاه SDV خود را با افزونه Cuttlefish راهاندازی کنید. برای اطلاعات بیشتر، اجرای دستگاههای SDV در Cuttlefish را ببینید.
- فایل
apex/Android.bpدسته سرویس را باز کنید و روی نماد اجرا در حاشیه کنار بلوکapex {کلیک کنید. - در منویی که باز میشود، اجرای «استقرار APEX_NAME» را انتخاب کنید. همچنین میتوانید APEX را بدون استقرار آن بسازید یا پیکربندی اجرا را از همان منو تغییر دهید.
اجرای دستگاههای SDV در Cuttlefish
ASfP شامل افزونه Cuttlefish است که دستگاههای Cuttlefish محلی را ایجاد و اجرا میکند. این افزونه به هماهنگساز میزبان Cuttlefish نیاز دارد. اگر هماهنگساز میزبان دردسترس نباشد، ASfP دستورالعملهای راهاندازی آن را نشان میدهد.
برای ایجاد دستگاه SDV، این مراحل را دنبال کنید:
- Tools (ابزارها) > Device Manager (مدیر دستگاه) را انتخاب کنید، روی + کلیک کنید، و Create Cuttlefish Device (ایجاد دستگاه Cuttlefish) را انتخاب کنید.
- برای ایجاد راهاندازی چند ماشین مجازی، از پیکربندی متعارف را انتخاب کنید و پیکربندیای برای راهاندازیتان ایجاد یا وارد کنید، مثلاً SDV Core با SDV IVI، یا SDV Media با SDV IVI برای «ایمنی نمایشگر». برای ایجاد یک ماشین مجازی، درعوض از بررسی درخت منبع Android محلی را انتخاب کنید.
برای مشاهده همه نمایشگرهای VM در یک صفحه و دسترسی به گزینههای بیشتر دستگاه، از پنجره ابزار Cuttlefish استفاده کنید. برای باز کردن آن، نماد ... را در پانل کناری انتخاب کنید و Cuttlefish را انتخاب کنید، یا Cuttlefish را در راهنما > یافتن کنش جستجو کنید. همچنین میتوانید نمایشگرهای تکی را در دستگاههای درحال اجرا مشاهده کنید. چون SDV Core بدون نمایشگر اجرا میشود، از Logcat و پایانه برای بازرسی آن استفاده کنید.
اشکالزدایی و آزمایش
ASfP شامل یک اشکالزدای LLDB داخلی برای کد C++ و Rust است. برای اطلاعات بیشتر درباره اشکالزدایی و آزمایش در ASfP، به اشکالزدایی کد پلاتفرم، اشکالزدایی کد Rust، آزمایش کد پلاتفرم با atest، و اشکالزدایی cc_test و rust_test هدفها تحت LLDB مراجعه کنید.
وقتی اشکالزدا را به دسته سرویس پیوست میکنید، به فرایندی که آن را میزبانی میکند پیوست کنید. نامهای فرایند از قالب <bundle_name>:<instance_name> استفاده میکنند، مثل
OrchestratorSampleRustServiceBundle:sample-main-no-conditions. فرمان زیر
فرایندهای منطبق و شناسه فرایند آنها را فهرست میکند:
adb shell ps -A | grep <bundle_name>
برای اطلاعات بیشتر درباره گردشهای کاری اشکالزدایی SDV، مثل متصل شدن به چند دستگاه و مشاهده گزارشها، به اشکالزدایی SDV مراجعه کنید.
ویرایش فایلهای VSIDL
ASfP شامل VSIDL Language Server (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 را فشار دهید تا فایل را قالببندی کنید.
افزودن بافت خودروی نرمافزارمحور برای دستیارهای هوش مصنوعی
ASfP شامل هوش مصنوعی در «استودیو Android» و یک عامل داخلی با ابزارهای ساخت Soong و
atest است. برای کسب اطلاعات بیشتر درباره ویژگیهای هوش مصنوعی ASfP، به
آشنایی با Android Studio ویژه پلاتفرم مراجعه کنید. برای کمک به دستیار هوش مصنوعی در پیروی از قراردادهای SDV،
فایل AGENTS.md را به ریشه کاتالوگ VSIDL خود اضافه کنید.
برای اطلاعات بیشتر درباره فایلهای عامل، به
سفارشیسازی 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.