إعداد بيئة تطوير متكاملة (IDE) لتطوير SDV

استوديو Android للمنصة (ASfP) هو بيئة التطوير المتكاملة (IDE) المقترَحة لتطوير منصة "المركبة المحدّدة بالبرامج" (SDV) التي تعمل بنظام التشغيل Android Automotive (AAOS). تتيح ASfP جميع اللغات التي تستخدمها منصة AAOS SDV، بما في ذلك Rust لحِزم خدمات SDV.

تتضمّن هذه الصفحة إرشادات حول عملية الإعداد الخاصة بـ "مساحة العرض الآمنة" فقط. لمزيد من المعلومات حول الميزات العامة وسير العمل في "استوديو Android للمنصات"، يُرجى الاطّلاع على استوديو Android للمنصات.

لا تعمل "منصة ASfP" إلا على نظام التشغيل Linux‏ 64 بت مع وحدات المعالجة المركزية x86-64. يمكنك استخدامها على محطة عمل Linux محلية أو في السحابة الإلكترونية. لمزيد من المعلومات حول إعداد السحابة الإلكترونية، يُرجى الاطّلاع على تطوير السحابة الإلكترونية.

تثبيت ASfP

لمزيد من المعلومات حول تنزيل وتثبيت ASfP والاطّلاع على متطلبات النظام، يُرجى الاطّلاع على تثبيت "استوديو Android" للمنصة.

تتطلّب فهرسة عملية دفع على إحدى المنصات قدرًا كبيرًا من الذاكرة، خاصةً عند تشغيل أجهزة Cuttlefish متعددة الأجهزة الافتراضية على الجهاز نفسه. إذا كان ASfP يعمل ببطء، يمكنك زيادة الحد الأقصى لحجم الذاكرة المخصّصة في إعدادات ذاكرة ASfP لتناسب مشروعك وجهازك، مع الحفاظ على نطاق مشروعك محصورًا في الدلائل التي تعمل عليها.

إنشاء مشروع SDV

يجب تهيئة عملية الدفع في المركبات المزوّدة ببرنامج Android Automotive (AAOS) ومزامنتها وإنشاؤها قبل البدء. لمزيد من المعلومات حول إعداد عملية الدفع، يُرجى الاطّلاع على موقع الرمز والتنزيل والإنشاء والتنفيذ.

لإنشاء مشروع SDV، اتّبِع الخطوات التالية:

  1. أنشِئ مشروعًا جديدًا في ASfP واختَر جذر عملية استخراج AAOS SDV كعملية استخراج المستودع. لمزيد من المعلومات حول خطوات المعالج، راجِع مقالة إنشاء مشروع أو استيراده.
  2. بعد أن ينشئ ASfP المشروع، انقر على ASfP > Project > Open Config لفتح ملف .asfp-project.
  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 للمنطقة التي تعمل فيها. للحفاظ على سرعة الفهرسة والمزامنة، لا تضمِّن سوى الأدلة التي تعدّلها بشكل نشط. يسرد الجدول التالي الاستهدافات والأدلة الشائعة في "ميزة الخصوصية التفاضلية":

    مجالات التركيز في تطوير المركبات المعرَّفة بالبرامج lunch الهدف موصى بها directories
    حِزم خدمات المركبات المحدّدة البرامج (SDV) sdv_core_cf-aosp_current-userdebug كتالوج الخدمات ودليل الحِزم، مثل system/software_defined_vehicle/samples
    دمج منصة "ميزات التصميم المراعي للخصوصية" الأساسية sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware وsystem/software_defined_vehicle/automotive_services وdevice/google/sdv
    بوابة SDV على نظام المعلومات والترفيه داخل المركبة (IVI) من SDV sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway وsystem/software_defined_vehicle/samples/sdv_gateway وpackages/services/Car
    عرض السلامة على وسائط SDV 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. لتطبيق التغييرات، انقر على ملف > مزامنة المشروع.

نشر حِزم خدمات SDV

يتضمّن "إطار عمل خدمات Android" (ASfP) مكوّنًا إضافيًا من "جهاز تطوير البرامج الافتراضي" (SDV) ينشر حِزم خدماتك التي تحتوي على حِزم APEX مباشرةً على جهاز SDV قيد التشغيل. يكون المكوّن الإضافي غير مفعَّل تلقائيًا. لاستخدام هذه الميزة، فعِّل المكوّن الإضافي SDV في الإعدادات > المكوّنات الإضافية. لمزيد من المعلومات حول حِزم APEX، يُرجى الاطّلاع على إنشاء حِزم الخدمات ونشرها.

تعتمد طريقة النشر على ما إذا كان حِزم APEX مثبّتة على الجهاز:

  • إذا كان حِزم APEX مثبَّتة، يمكنك نشر التغييرات مباشرةً من ASfP.
  • إذا كان حِزمة APEX جديدة، عليك إعادة إنشاء صورة النظام وإعادة تشغيلها أولاً، أو استخدام صورة نظام تتضمّن المفتاح المستخدَم لتوقيع حِزمة APEX. بعد ذلك، يمكنك التوزيع من خلال ASfP.

لنشر حزمة APEX الخاصة بحزمة الخدمات، اتّبِع الخطوات التالية:

  1. ابدأ تشغيل جهاز SDV باستخدام المكوّن الإضافي Cuttlefish. لمزيد من المعلومات، يُرجى الاطّلاع على تشغيل أجهزة SDV على Cuttlefish.
  2. افتح ملف apex/Android.bp لحزمة الخدمة وانقر على رمز تشغيل في الهامش بجانب كتلة apex {.
  3. في القائمة التي تظهر، اختَر تشغيل "نشر APEX_NAME". يمكنك أيضًا إنشاء حزمة APEX بدون نشرها أو تغيير إعدادات التشغيل من القائمة نفسها.

تشغيل أجهزة SDV على Cuttlefish

يتضمّن ASfP إضافة Cuttlefish التي تنشئ أجهزة Cuttlefish محلية وتشغّلها. يحتاج المكوّن الإضافي إلى أداة تنسيق مضيف Cuttlefish. إذا لم يكن منسّق المضيف متاحًا، يعرض ASfP تعليمات لإعداده.

لإنشاء جهاز SDV، اتّبِع الخطوات التالية:

  1. اختَر الأدوات > إدارة الأجهزة، ثم انقر على +، واختَر إنشاء جهاز Cuttlefish.
  2. لإنشاء إعدادات متعددة الأجهزة الافتراضية، اختَر من الإعدادات الأساسية وأنشئ إعدادات أو استوردها، مثل SDV Core مع SDV IVI، أو SDV Media مع SDV IVI لضمان أمان العرض. لإنشاء جهاز افتراضي واحد، اختَر من نسخة محلية من شجرة مصدر Android بدلاً من ذلك.

لعرض جميع شاشات الأجهزة الافتراضية على شاشة واحدة والوصول إلى خيارات الأجهزة الإضافية، استخدِم نافذة أداة Cuttlefish. لفتحها، انقر على رمز ... في اللوحة الجانبية، ثم انقر على Cuttlefish، أو ابحث عن Cuttlefish في مساعدة > البحث عن إجراء. يمكنك أيضًا عرض شاشات فردية في الأجهزة التي تعمل. بما أنّ SDV Core تعمل بدون شاشة عرض، استخدِم Logcat وTerminal لفحصها.

تصحيح الأخطاء والاختبار

لمزيد من المعلومات حول تصحيح الأخطاء والاختبار في "AdSense لمنصات النشر"، يُرجى الاطّلاع على تصحيح أخطاء رمز المنصة واختبار رمز المنصة. لمزيد من المعلومات حول إعداد CodeLLDB لتصحيح أخطاء حِزم خدمات Rust، يُرجى الاطّلاع على تصحيح أخطاء Rust.

عند إرفاق أداة تصحيح الأخطاء بحزمة خدمة، يجب إرفاقها بالعملية التي تستضيفها. تستخدم أسماء العمليات التنسيق <bundle_name>:<instance_name>، مثل OrchestratorSampleRustServiceBundle:sample-main-no-conditions. يعرض الأمر التالي العمليات المطابقة ومعرّفات العمليات الخاصة بها:

adb shell ps -A | grep <bundle_name>

لمزيد من المعلومات حول إجراءات تصحيح أخطاء "بيئة تطوير آمنة"، مثل الربط بأجهزة متعددة وعرض السجلّات، يُرجى الاطّلاع على تصحيح أخطاء "بيئة تطوير آمنة".

تعديل ملفات 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 لتنسيق الملف.

إضافة سياق SDV للمساعدين المستندين إلى الذكاء الاصطناعي

يتضمّن ASfP "Gemini في استوديو Android". لمزيد من المعلومات حول ميزات ASfP، يُرجى الاطّلاع على التعرّف على &quot;استوديو Android للمنصات&quot;. لمساعدة 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.