Thiết lập một IDE để phát triển SDV

Android Studio for Platform (ASfP) là môi trường phát triển tích hợp (IDE) được đề xuất để phát triển nền tảng Xe được xác định bằng phần mềm (SDV) chạy Android Automotive OS (AAOS). ASfP hỗ trợ mọi ngôn ngữ mà nền tảng SDV AAOS sử dụng, bao gồm cả Rust cho các gói dịch vụ SDV.

Trang này chỉ đề cập đến chế độ thiết lập dành riêng cho SDV. Để biết thêm thông tin về các tính năng và quy trình công việc chung của ASfP, hãy xem bài viết Android Studio for Platform.

ASfP chỉ chạy trên Linux 64 bit với CPU x86-64. Bạn có thể sử dụng công cụ này trên máy trạm Linux cục bộ hoặc trên đám mây. Để biết thêm thông tin về chế độ thiết lập đám mây, hãy xem phần Phát triển trên đám mây.

Cài đặt ASfP

Để biết thêm thông tin về cách tải xuống và cài đặt ASfP cũng như kiểm tra các yêu cầu về hệ thống, hãy xem bài viết Cài đặt Android Studio cho nền tảng.

Việc lập chỉ mục một quy trình thanh toán trên nền tảng sử dụng rất nhiều bộ nhớ, đặc biệt là khi bạn cũng chạy nhiều thiết bị Cuttlefish VM trên cùng một máy. Nếu ASfP chạy chậm, hãy tăng kích thước vùng nhớ khối xếp tối đa trong chế độ cài đặt bộ nhớ ASfP cho phù hợp với dự án và máy của bạn, đồng thời giới hạn phạm vi dự án trong các thư mục mà bạn đang làm việc.

Tạo một dự án SDV

Khởi động, đồng bộ hoá và tạo bản dựng quy trình thanh toán SDV AAOS trước khi bắt đầu. Để biết thêm thông tin về cách thiết lập quy trình thanh toán, hãy xem phần Vị trí mã và Tải xuống, tạo và chạy.

Để tạo một dự án SDV, hãy làm theo các bước sau:

  1. Tạo một dự án mới trong ASfP và chọn gốc của quy trình kiểm tra SDV AAOS làm quy trình kiểm tra kho lưu trữ. Để biết thêm thông tin về các bước trong trình hướng dẫn, hãy xem phần Tạo hoặc nhập dự án.
  2. Sau khi ASfP tạo dự án, hãy chọn ASfP > Project > Open Config (ASfP > Dự án > Mở cấu hình) để mở tệp .asfp-project.
  3. Thay thế nội dung của tệp bằng ví dụ sau, rồi đặt repo thành đường dẫn của quy trình thanh toán:

    repo: /path/to/sdv_source
    lunch: sdv_core_cf-aosp_current-userdebug
    directories:
      include:
        -   system/software_defined_vehicle/samples
    other_languages:
      -   rust
    
  4. Cập nhật lunch và directories cho khu vực bạn làm việc. Để duy trì tốc độ lập chỉ mục và đồng bộ hoá nhanh, hãy chỉ thêm những thư mục mà bạn thường xuyên sửa đổi. Bảng sau đây liệt kê các mục tiêu và thư mục SDV phổ biến:

    Trọng tâm phát triển SDV lunch mục tiêu directories được đề xuất
    Gói dịch vụ SDV sdv_core_cf-aosp_current-userdebug Danh mục dịch vụ và danh mục gói của bạn, chẳng hạn như system/software_defined_vehicle/samples
    Tích hợp nền tảng SDV Core sdv_core_cf-aosp_current-userdebug system/software_defined_vehicle/middleware, system/software_defined_vehicle/automotive_services, device/google/sdv
    Cổng SDV trên SDV IVI sdv_ivi_cf-aosp_current-userdebug system/software_defined_vehicle/sdv_gateway, system/software_defined_vehicle/samples/sdv_gateway, packages/services/Car
    Hiển thị thông tin an toàn trên nội dung nghe nhìn SDV sdv_media_har_cf-aosp_current-userdebug packages/services/display_safety, device/google/sdv_display_safety
    Hiển thị tính năng An toàn trên SDV IVI sdv_ivi_cf_ds-aosp_current-userdebug packages/apps/Car/DriverUI, packages/services/display_safety/service

    Nếu quy trình thanh toán của bạn sử dụng tệp kê khai trunk_staging, hãy thay thế -aosp_current-userdebug bằng -trunk_staging-userdebug. Để duyệt xem cả mã nền tảng gốc, hãy thêm cpp vào other_languages. Để biết thêm thông tin về tất cả các lựa chọn cấu hình, hãy xem phần Tham số cấu hình.

  5. Để áp dụng các thay đổi, hãy chọn File > Sync Project (Tệp > Đồng bộ hoá dự án).

Triển khai các gói dịch vụ SDV

ASfP bao gồm một trình bổ trợ SDV triển khai APEX chứa các gói dịch vụ của bạn trực tiếp đến một thiết bị SDV đang chạy. Theo mặc định, trình bổ trợ này bị tắt. Để sử dụng, hãy bật trình bổ trợ SDV trong phần Cài đặt > Trình bổ trợ. Để biết thêm thông tin về việc đóng gói APEX, hãy xem phần Tạo và triển khai các gói dịch vụ.

Cách triển khai tuỳ thuộc vào việc APEX đã có trên thiết bị hay chưa:

  • Nếu đã cài đặt APEX, bạn có thể triển khai các thay đổi trực tiếp từ ASfP.
  • Nếu APEX là mới, trước tiên, bạn phải tạo lại và khởi chạy lại hình ảnh hệ thống hoặc sử dụng hình ảnh hệ thống có chứa khoá dùng để ký APEX. Sau đó, bạn có thể triển khai từ ASfP.

Để triển khai APEX gói dịch vụ, hãy làm theo các bước sau:

  1. Khởi động thiết bị SDV bằng trình bổ trợ Cuttlefish. Để biết thêm thông tin, hãy xem phần Chạy thiết bị SDV trên Cuttlefish.
  2. Mở tệp apex/Android.bp của gói dịch vụ rồi nhấp vào biểu tượng Run (Chạy) trong máng xối bên cạnh khối apex {.
  3. Trong trình đơn mở ra, hãy chọn Run "Deploy APEX_NAME" (Chạy "Triển khai"). Bạn cũng có thể tạo APEX mà không cần triển khai hoặc thay đổi cấu hình chạy trong cùng một trình đơn.

Chạy các thiết bị SDV trên Cuttlefish

ASfP có một trình bổ trợ Cuttlefish giúp tạo và chạy các thiết bị Cuttlefish cục bộ. Trình bổ trợ này cần có trình điều phối máy chủ Cuttlefish. Nếu trình điều phối máy chủ lưu trữ không hoạt động, ASfP sẽ hướng dẫn bạn cách thiết lập.

Để tạo một thiết bị SDV, hãy làm theo các bước sau:

  1. Chọn Tools > Device Manager (Công cụ > Trình quản lý thiết bị), nhấp vào + rồi chọn Create Cuttlefish Device (Tạo thiết bị Cuttlefish).
  2. Để tạo chế độ thiết lập nhiều máy ảo, hãy chọn From canonical configuration (Từ cấu hình chuẩn) rồi tạo hoặc nhập một cấu hình cho chế độ thiết lập của bạn, chẳng hạn như SDV Core có SDV IVI hoặc SDV Media có SDV IVI cho Display Safety. Để tạo một VM duy nhất, hãy chọn From local Android source tree checkout (Từ quy trình kiểm xuất cây nguồn Android cục bộ).

Để xem tất cả màn hình máy ảo trên một màn hình và truy cập vào các lựa chọn khác cho thiết bị, hãy dùng cửa sổ công cụ Cuttlefish. Để mở bảng này, hãy chọn biểu tượng ... trong bảng điều khiển bên rồi chọn Cuttlefish, hoặc tìm Cuttlefish trong phần Trợ giúp > Tìm hành động. Bạn cũng có thể xem từng màn hình trong phần Running Devices (Thiết bị đang chạy). Vì SDV Core chạy mà không có màn hình, hãy sử dụng Logcat và Terminal để kiểm tra.

Gỡ lỗi và kiểm thử

Để biết thêm thông tin về việc gỡ lỗi và kiểm thử trong ASfP, hãy xem phần Gỡ lỗi mã nền tảng và Kiểm thử mã nền tảng. Để biết thêm thông tin về cách thiết lập CodeLLDB để gỡ lỗi các gói dịch vụ Rust, hãy xem phần Gỡ lỗi Rust.

Khi bạn đính kèm trình gỡ lỗi vào một gói dịch vụ, hãy đính kèm vào quy trình lưu trữ gói đó. Tên quy trình sử dụng định dạng <bundle_name>:<instance_name>, chẳng hạn như OrchestratorSampleRustServiceBundle:sample-main-no-conditions. Lệnh sau đây liệt kê các quy trình khớp và mã quy trình của chúng:

adb shell ps -A | grep <bundle_name>

Để biết thêm thông tin về quy trình gỡ lỗi SDV, chẳng hạn như cách kết nối với nhiều thiết bị và xem nhật ký, hãy xem phần Gỡ lỗi SDV.

Chỉnh sửa tệp VSIDL

ASfP bao gồm Máy chủ ngôn ngữ VSIDL (vsidl-lsp). Để biết thêm thông tin về cách thiết lập danh mục cho máy chủ ngôn ngữ, hãy xem phần Tự động cập nhật danh mục và tích hợp LSP. Khi danh mục của bạn có tệp CATALOG_UPDATE, trình chỉnh sửa sẽ cung cấp các tính năng sau cho tệp .vsidl:

  • Xác thực trực tiếp: Trình chỉnh sửa làm nổi bật các từ khoá VSIDL và cho thấy các lỗi cú pháp, các loại chưa được giải quyết và các lỗi xác thực VSIDLC trong cửa sổ Problems (Vấn đề). Để biết thêm thông tin về các quy tắc xác thực và mã lỗi của các quy tắc này, hãy xem quy cách ngôn ngữ VSIDL.
  • Tự động hoàn thành và tài liệu: Bạn có thể nhấn tổ hợp phím Ctrl+Space để xem các đề xuất về từ khoá, thông báo, dịch vụ, chủ đề và kênh, đồng thời nhấn tổ hợp phím Ctrl+Q để xem các nhận xét trong tài liệu.
  • Điều hướng và định dạng: Bạn có thể nhấn tổ hợp phím Ctrl+B để chuyển đến định nghĩa .vsidl hoặc .proto, Alt+Shift+F7 để tìm tài liệu tham khảo, Ctrl+F12 để xem cấu trúc tệp và Ctrl+Alt+L để định dạng tệp.

Thêm bối cảnh SDV cho trợ lý AI

ASfP có Gemini trong Android Studio. Để biết thêm thông tin về các tính năng của ASfP, hãy xem bài viết Làm quen với Android Studio cho Nền tảng. Để giúp Gemini hoặc một trợ lý lập trình AI khác tuân theo các quy ước SDV, hãy thêm một tệp AGENTS.md vào thư mục gốc của danh mục SDV. Để biết thêm thông tin về tệp tác nhân, hãy xem bài viết Tuỳ chỉnh Gemini bằng tệp AGENTS.md.

Ví dụ sau đây là điểm xuất phát mà bạn có thể điều chỉnh cho phù hợp với danh mục của mình:

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