پلتفرم SDV (Software Defined Vehicle) شامل کاتالوگهای VSIDL متعددی در سراسر کدبیس است. فایل CATALOG_UPDATE یک پیکربندی متمرکز برای هر کاتالوگ ارائه میدهد که امکان بهروزرسانیهای خودکار و ادغام IDE را فراهم میکند.
نقش فایل CATALOG_UPDATE
فایل CATALOG_UPDATE دو هدف اصلی را دنبال میکند:
- بهروزرسانیهای خودکار: این فایل به ابزار
regeneratorاجازه میدهد تا هنگام تغییر کامپایلر یا وابستگیها، تمام کاتالوگهای موجود در سیستم را پیدا کرده و دوباره کامپایل کند. - پشتیبانی از پروتکل سرور زبان (LSP): سرور زبان VSIDL از این فایل برای کشف ریشه کاتالوگ و حل وابستگیها استفاده میکند. این امر ویژگیهایی مانند «برو به تعریف»، تکمیل خودکار و اعتبارسنجی بلادرنگ برای انواع تعریف شده در سایر کاتالوگها را فعال میکند.
پیکربندی یک کاتالوگ
برای فعال کردن بهروزرسانیهای خودکار و پشتیبانی LSP برای یک کاتالوگ VSIDL، یک فایل CATALOG_UPDATE در دایرکتوری ریشه کاتالوگ ایجاد کنید. این فایل یک فایل متنی protobuf است.
فیلدهای پیکربندی کاتالوگ
-
output_path(رشتهای، اختیاری): مسیر نسبی از ریشه کاتالوگ به دایرکتوری که کد میانافزار تولید شده باید در آن قرار گیرد. -
dependency_catalog_paths(رشته تکراری): فهرستی از مسیرهای نسبی به سایر دایرکتوریهای کاتالوگ. سرور LSP از این مسیرها برای حل انواع خارجی استفاده میکند. -
vsidlc_gen_args(رشتهای، اختیاری): آرگومانهای ارسالی بهvsidlc. سرور LSP این آرگومانها را بررسی میکند تا قوانین اعتبارسنجی صحیح (برای مثال،"--apex") را اعمال کند. -
prebuilts_output_path(رشتهای، اختیاری): مسیر برای پیشساختهای پیکربندی زمان اجرا تولید شده. -
prebuilts_filegroup(رشتهای، اختیاری): نامfilegroupSoong برای فایلهای از پیش ساخته شده.
پیکربندی نمونه
# proto-file: //system/software_defined_vehicle/tools/regenerator/proto/catalog.proto
# proto-message: Catalog
output_path: ".."
dependency_catalog_paths: "../../../../../automotive_services/diagnostics/vsidl/v1"
vsidlc_gen_args: "--apex"
چرا به روزرسانی های خودکار مورد نیاز است
نگهداری دستی کد تولید شده برای هر کاتالوگ به چند دلیل مشکلساز است:
- بهروزرسانیهای کامپایلر: وقتی کامپایلر با رفع اشکالات یا ویژگیهای جدید بهروزرسانی میشود، تمام کدها و فایلهای تولید شده که تحت پوشش یک
genruleدر فایلAndroid.bpنیستند، باید بهروزرسانی شوند تا سازگاری حفظ شود. - مدیریت وابستگی: تغییرات در یک کاتالوگ پایه اغلب نیاز به بازسازی کاتالوگهای پاییندستی دارد.
- دقت: بهروزرسانیهای خودکار، خطر خطای انسانی را هنگام مشخص کردن مسیرها و وابستگیها کاهش میدهند.
ابزار بازسازی را اجرا کنید
ابزار regenerator درخت دایرکتوری را از ریشه SDV پیمایش میکند و به دنبال فایلهایی با نام دقیق CATALOG_UPDATE میگردد.
برای بهروزرسانی تمام کاتالوگهای پیکربندیشده:
ساخت ابزار:
m regeneratorابزار را اجرا کنید:
regeneratorدر صورت تمایل، آن را به صورت بازگشتی برای یک دایرکتوری خاص اجرا کنید:
console regenerator --root /path/to/directory
این ابزار فایلهای تولید شده را بهروزرسانی میکند و یک ساخت کامل ( m droid ) انجام میدهد تا تأیید کند که تغییرات با بقیه سیستم سازگار هستند.