راه‌اندازی یک IDE برای توسعه SDV

اندروید استودیو برای پلتفرم (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، مراحل زیر را دنبال کنید:

  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 را فهرست می‌کند:

    تمرکز توسعه SDV هدف lunch directories پیشنهادی
    بسته‌های خدمات SDV 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 روی SDV IVI sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway ، system/software_defined_vehicle/samples/sdv_gateway ، packages/services/Car
    نمایش ایمنی در SDV Media sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety ، device/google/sdv_display_safety
    نمایش ایمنی در SDV IVI 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. برای اعمال تغییرات، File > Sync Project را انتخاب کنید.

بسته‌های خدمات SDV را مستقر کنید

ASfP شامل یک افزونه SDV است که APEX حاوی بسته‌های سرویس شما را مستقیماً روی یک دستگاه SDV در حال اجرا مستقر می‌کند. این افزونه به طور پیش‌فرض غیرفعال است. برای استفاده از آن، افزونه SDV را در تنظیمات > افزونه‌ها فعال کنید. برای اطلاعات بیشتر در مورد بسته‌بندی APEX، به ساخت و استقرار بسته‌های سرویس مراجعه کنید.

نحوه‌ی استقرار شما بستگی به این دارد که آیا APEX از قبل روی دستگاه وجود دارد یا خیر:

  • اگر APEX از قبل نصب شده باشد ، می‌توانید تغییرات خود را مستقیماً از ASfP اعمال کنید.
  • اگر APEX جدید است ، ابتدا باید تصویر سیستم را بازسازی و مجدداً راه‌اندازی کنید، یا از یک تصویر سیستم که شامل کلید مورد استفاده برای امضای APEX است استفاده کنید. پس از آن، می‌توانید از ASfP مستقر شوید.

برای نصب بسته سرویس APEX، مراحل زیر را دنبال کنید:

  1. دستگاه SDV خود را با افزونه Cuttlefish راه‌اندازی کنید. برای اطلاعات بیشتر، به اجرای دستگاه‌های SDV روی Cuttlefish مراجعه کنید.
  2. فایل apex/Android.bp مربوط به بسته‌ی سرویس خود را باز کنید و روی آیکون اجرا (Run) در حاشیه‌ی کنار بلوک apex { کلیک کنید.
  3. در منویی که باز می‌شود، گزینه‌ی «اجرای 'Deploy APEX_NAME '» را انتخاب کنید. همچنین می‌توانید APEX را بدون استقرار آن بسازید یا پیکربندی اجرا را از همان منو تغییر دهید.

دستگاه‌های SDV را روی Cuttlefish اجرا کنید

ASfP شامل یک افزونه‌ی Cuttlefish است که دستگاه‌های محلی Cuttlefish را ایجاد و اجرا می‌کند. این افزونه به هماهنگ‌کننده‌ی میزبان Cuttlefish نیاز دارد. اگر هماهنگ‌کننده‌ی میزبان در دسترس نباشد، ASfP دستورالعمل‌هایی برای راه‌اندازی آن نشان می‌دهد.

برای ایجاد یک دستگاه SDV، مراحل زیر را دنبال کنید:

  1. ابزارها > مدیریت دستگاه را انتخاب کنید، روی + کلیک کنید و ایجاد دستگاه Cuttlefish را انتخاب کنید.
  2. برای ایجاد یک پیکربندی چند ماشین مجازی، گزینه « از پیکربندی متعارف» (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.