Tự động cập nhật danh mục và tích hợp LSP

Nền tảng Xe được xác định bằng phần mềm (SDV) chứa nhiều danh mục VSIDL trong cơ sở mã. Tệp CATALOG_UPDATE cung cấp cấu hình tập trung cho từng danh mục, cho phép cả bản cập nhật tự động và tích hợp IDE.

Vai trò của tệp CATALOG_UPDATE

Tệp CATALOG_UPDATE phục vụ 2 mục đích chính:

  1. Bản cập nhật tự động: Tệp này cho phép công cụ regenerator tìm và biên dịch lại tất cả danh mục trong hệ thống khi trình biên dịch hoặc các phần phụ thuộc thay đổi.
  2. Hỗ trợ Giao thức máy chủ ngôn ngữ (LSP): Máy chủ ngôn ngữ VSIDL sử dụng tệp này để phát hiện thư mục gốc của danh mục và giải quyết các phần phụ thuộc. Điều này cho phép các tính năng như "Chuyển đến định nghĩa", tự động hoàn thành và xác thực theo thời gian thực cho các loại được xác định trong các danh mục khác.

Định cấu hình danh mục

Để bật tính năng cập nhật tự động và hỗ trợ LSP cho danh mục VSIDL, hãy tạo tệp CATALOG_UPDATE trong thư mục gốc của danh mục. Tệp này là tệp protobuf văn bản.

Trường cấu hình danh mục

  • output_path (chuỗi, không bắt buộc): Đường dẫn tương đối từ thư mục gốc của danh mục đến thư mục nơi đặt mã phần mềm trung gian đã tạo.
  • dependency_catalog_paths (chuỗi lặp lại): Danh sách đường dẫn tương đối đến các thư mục danh mục khác. Máy chủ LSP sử dụng các đường dẫn này để giải quyết các loại bên ngoài.
  • vsidlc_gen_args (chuỗi, không bắt buộc): Các đối số được truyền đến vsidlc. Máy chủ LSP kiểm tra các đối số này để áp dụng các quy tắc xác thực chính xác (ví dụ: "--apex").
  • prebuilts_output_path (chuỗi, không bắt buộc): Đường dẫn cho các bản dựng sẵn cấu hình thời gian chạy đã tạo.
  • prebuilts_filegroup (chuỗi, không bắt buộc): Tên Soong filegroup cho các bản dựng sẵn.

Cấu hình mẫu

# 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"

Lý do cần có bản cập nhật tự động

Việc duy trì mã đã tạo theo cách thủ công cho mọi danh mục sẽ gây ra vấn đề vì một số lý do:

  1. Bản cập nhật trình biên dịch: Khi trình biên dịch được cập nhật bằng bản sửa lỗi hoặc tính năng mới, tất cả mã và tệp đã tạo không được genrule trong tệp Android.bp phải được làm mới để duy trì tính nhất quán.
  2. Quản lý phần phụ thuộc: Các thay đổi trong danh mục cơ sở thường yêu cầu tạo lại các danh mục ở hạ nguồn.
  3. Độ chính xác: Bản cập nhật tự động giúp giảm nguy cơ xảy ra lỗi do con người khi chỉ định đường dẫn và phần phụ thuộc.

Chạy công cụ regenerator

Công cụ regenerator sẽ đi theo cây thư mục bắt đầu từ thư mục gốc SDV và tìm các tệp có tên chính xác là CATALOG_UPDATE.

Cách cập nhật tất cả danh mục đã định cấu hình:

  1. Tạo công cụ:

    m regenerator
    
  2. Chạy công cụ:

    regenerator
    

    Bạn cũng có thể chạy công cụ này theo cách đệ quy cho một thư mục cụ thể: console regenerator --root /path/to/directory

Công cụ này sẽ cập nhật các tệp đã tạo và thực hiện bản dựng đầy đủ (m droid) để xác minh rằng các thay đổi này tương thích với phần còn lại của hệ thống.