Android Studio for Platform (ASfP) 是 Android Automotive OS (AAOS) 軟體定義車輛 (SDV) 平台開發的建議整合式開發環境 (IDE)。ASfP 支援 AAOS SDV 平台使用的所有語言,包括 SDV 服務套件的 Rust。
本頁僅說明 SDV 專屬設定。如要進一步瞭解一般 ASfP 功能和工作流程,請參閱「Android Studio for Platform」。
ASfP 只能在搭載 x86-64 CPU 的 64 位元 Linux 上執行。您可以在本機 Linux 工作站或雲端中使用。如要進一步瞭解雲端設定,請參閱「雲端開發」。
安裝 ASfP
ASfP 預設的堆積大小上限為 30 GB。為平台檢出項目建立索引會耗用大量記憶體,尤其是在同一部機器上執行多 VM Cuttlefish 裝置時。請將專案範圍限定在您處理的目錄,並視需要調整 ASfP 記憶體設定中的堆積大小上限。
ASfP 支援在 IDE 中自動更新。詳情請參閱「更新 Android Studio for Platform」。如要進一步瞭解如何下載及安裝 ASfP,以及查看系統需求,請參閱「安裝 Android Studio for Platform」。
建立 SDV 專案
開始之前,請先初始化、同步及建構 AAOS SDV 檢出。如要進一步瞭解如何設定檢出,請參閱「程式碼位置」和「下載、建構及執行」。
如要建立 SDV 專案,請按照下列步驟操作:
- 在 ASfP 中建立新專案,並選取 AAOS SDV 簽出的根目錄做為存放區簽出。如要進一步瞭解精靈步驟,請參閱「建立或匯入專案」。
- ASfP 建立專案後,請依序選取「ASfP」>「Project」>「Open Config」,開啟
.asfp-project檔案。 將檔案內容替換為下列範例,然後將
repo設為簽出路徑:repo: /path/to/sdv_source lunch: sdv_core_cf-aosp_current-userdebug directories: include: - system/software_defined_vehicle/samples other_languages: - rust請根據您負責的區域,更新
lunch和directories。為確保索引和同步處理速度,請只加入您會主動修改的目錄。下表列出常見的 SDV 目標和目錄:SDV 開發重點 lunch個目標推薦 directoriesSDV 服務套裝組合 sdv_core_cf-aosp_current-userdebugService Catalog 和套裝方案目錄,例如 system/software_defined_vehicle/samplesSDV Core 平台整合 sdv_core_cf-aosp_current-userdebugsystem/software_defined_vehicle/middleware、system/software_defined_vehicle/automotive_services、device/google/sdvSDV IVI 上的 SDV 閘道 sdv_ivi_cf-aosp_current-userdebugsystem/software_defined_vehicle/sdv_gateway、system/software_defined_vehicle/samples/sdv_gateway、packages/services/Car在 SDV 媒體上顯示安全資訊 sdv_media_har_cf-aosp_current-userdebugpackages/services/display_safety、device/google/sdv_display_safetySDV IVI 的螢幕安全 sdv_ivi_cf_ds-aosp_current-userdebugpackages/apps/Car/DriverUI、packages/services/display_safety/service如果結帳流程使用
trunk_staging資訊清單,請將-aosp_current-userdebug替換為-trunk_staging-userdebug。如要一併瀏覽原生平台程式碼,請將cpp新增至other_languages。如要進一步瞭解所有設定選項,請參閱「設定參數」。如要套用變更,請依序選取「ASfP」>「Sync」>「Sync Project」。如要進一步瞭解同步模式 (完整同步、部分同步和無建構同步),以及如何匯出或匯入團隊的可共用
.asfp-project範本,請參閱「同步模式和 Soong 工具視窗」和「可共用的專案範本 (匯出和匯入)」。
部署 SDV 服務套件
ASfP 包含 SDV 外掛程式,可將含有服務套件的 APEX 直接部署至執行中的 SDV 裝置。外掛程式預設為停用。如要使用,請依序前往「Settings」>「Plugins」啟用 SDV 外掛程式。如要進一步瞭解 APEX 封裝,請參閱「建構及部署服務套件」。
部署方式取決於裝置上是否已有 APEX:
- 如果已安裝 APEX,可以直接從 ASfP 部署變更。
- 如果 APEX 是新的,您必須先重新建構並重新啟動系統映像檔,或使用包含簽署 APEX 所用金鑰的系統映像檔。之後,您就可以從 ASfP 部署。
如要部署服務套件 APEX,請按照下列步驟操作:
- 使用 Cuttlefish 外掛程式啟動 SDV 裝置。詳情請參閱「在 Cuttlefish 上執行 SDV 裝置」。
- 開啟服務套件的
apex/Android.bp檔案,然後按一下apex {區塊旁邊的「Run」圖示。 - 在開啟的選單中,選取「Run 'Deploy APEX_NAME'」。您也可以建構 APEX,但不部署,或從同一個選單變更執行設定。
在 Cuttlefish 上執行 SDV 裝置
ASfP 包含 Cuttlefish 外掛程式,可建立及執行本機 Cuttlefish 裝置。外掛程式需要 Cuttlefish 主機自動化調度管理工具。如果主機自動調度管理工具無法使用,ASfP 會顯示設定操作說明。
如要建立 SDV 裝置,請按照下列步驟操作:
- 依序選取「Tools」>「裝置管理工具」,按一下「+」,然後選取「Create Cuttlefish Device」。
- 如要建立多 VM 設定,請選取「From canonical configuration」(從標準設定),然後建立或匯入設定,例如 SDV Core 搭配 SDV IVI,或 SDV Media 搭配 SDV IVI for Display Safety。如要建立單一 VM,請改為選取「From local Android source tree checkout」。
如要在單一畫面上查看所有 VM 螢幕,並存取其他裝置選項,請使用 Cuttlefish 工具視窗。如要開啟,請選取側邊面板中的「...」圖示,然後選取「Cuttlefish」,或在「Help」>「Find Action」中搜尋「Cuttlefish」。您也可以在「Running Devices」中查看個別螢幕。由於 SDV Core 執行時不會顯示畫面,請使用 Logcat 和終端機檢查。
偵錯和測試
ASfP 內建 LLDB 偵錯工具,可用於 C++ 和 Rust 程式碼。如要進一步瞭解如何在 ASfP 中偵錯及測試,請參閱「對平台程式碼偵錯」、「對 Rust 程式碼偵錯」、「使用 atest 測試平台程式碼」和「在 LLDB 下對 cc_test 和 rust_test 目標偵錯」。
將偵錯工具附加至服務套件時,請附加至託管該套件的程序。處理程序名稱採用 <bundle_name>:<instance_name> 格式,例如 OrchestratorSampleRustServiceBundle:sample-main-no-conditions。下列指令會列出相符的程序和程序 ID:
adb shell ps -A | grep <bundle_name>
如要進一步瞭解 SDV 偵錯工作流程,例如連線至多部裝置及查看記錄,請參閱「偵錯 SDV」。
編輯 VSIDL 檔案
ASfP 包含 VSIDL 語言伺服器 (vsidl-lsp)。如要進一步瞭解如何為語言伺服器設定目錄,請參閱「自動目錄更新和 LSP 整合」。如果目錄包含 CATALOG_UPDATE 檔案,編輯器會為 .vsidl 檔案提供下列功能:
- 即時驗證:編輯器會醒目顯示 VSIDL 關鍵字,並在「Problems」視窗中顯示語法錯誤、未解析的類型和 VSIDLC 驗證錯誤。如要進一步瞭解驗證規則和錯誤代碼,請參閱 VSIDL 語言規格。
- 自動完成和說明文件:按下 Ctrl+Space 鍵可取得關鍵字、訊息、服務、主題和管道建議,按下 Ctrl+Q 鍵則可查看說明文件註解。
- 導覽和格式設定:您可以按下 Ctrl+B 前往
.vsidl或.proto定義、按下 Alt+Shift+F7 尋找參照、按下 Ctrl+F12 查看檔案結構,以及按下 Ctrl+Alt+L 設定檔案格式。
新增 AI 助理的 SDV 情境
ASfP 包含 Android Studio 中的 AI,以及內建代理,可使用 Soong 建構和 atest 工具。如要進一步瞭解 ASfP AI 功能,請參閱「認識 Android Studio for Platform」。為協助 AI 助理遵循 SDV 慣例,請在 VSIDL 目錄的根目錄中新增 AGENTS.md 檔案。如要進一步瞭解代理檔案,請參閱「使用 AGENTS.md 檔案自訂 Gemini」。
以下範例是起點,您可以根據目錄進行調整:
# 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.