ASfP 中的 Rust 支援

總覽

Rust 是一種現代系統程式設計語言,著重效能和安全性,尤其是記憶體安全。在 Android 生態系統中,Rust 的重要性日益增加,因為它是 C 或 C++ 的安全替代方案,可用於開發重要系統元件,提供更優異的安全性與穩定性。

本頁面將逐步說明如何設定 Android Studio for Platform (ASfP),以便在 Android 開放原始碼計畫 (AOSP) 專案中支援 Rust 開發。

必要條件

  • 已安裝 ASfP:確認您已安裝並執行 ASfP。
  • 平台結帳:您需要在電腦上進行 Android 開放原始碼計畫平台結帳。

啟用 Rust 支援

以下是在 ASfP 專案中啟用 Rust 支援的逐步程序:

  1. 啟用 Rust

    • 在設定精靈中建立新專案時,請勾選「Rust」的核取方塊:
    新專案設定精靈中的 Rust 核取方塊。
    新專案設定精靈中的 Rust 核取方塊。
    • 如果是現有專案,請開啟 .asfp-project 設定檔,並將 rust 新增至 other_languages:
        other_languages:
          -   cpp
          -   rust
        ```
    
    <figure>
          <img src="/studio/platform/images/1-modify_asfp_project_languages.png" alt="Modifying the .asfp-project file to add rust to other_languages" class="screenshot">
          <figcaption>Adding Rust support in the <code>.asfp-project</code> file.</figcaption>
        </figure>
    
  1. 同步處理專案

    觸發專案同步,讓 IDE 產生 Rust Crate 並建立索引:依序選取「ASfP」>「Sync」>「Sync Project」。

驗證設定

完成這些步驟後,請確認下列結果:

  • rust-project.json 會顯示在專案檢視畫面中,位於來源 .iml 檔案下方。這個檔案是由 Soong 在分析期間產生,並符號連結至存放區根目錄,這是語言伺服器通訊協定 (LSP) 提供語言服務的必要條件。請勿直接編輯這個檔案,而是重新同步,讓 Soong 處理。

    確認 rust 是否位於 .asfp-project 設定中的 other_languages 下方。

    確認已生成 rust-project.json。
    確認 rust-project.json 已生成。
  • IDE 會啟用下列 Rust 專屬功能。

Rust IDE 的主要功能

  • 內建 LLDB 偵錯和變數視覺化工具:從「Run」>「Attach to Android Process」偵錯執行中的 Rust 裝置服務。您也可以使用 ASfP 內建的 LLDB 偵錯工具 (lldb-dap),直接從 Android.bp 裝訂邊圖示啟動 rust_test 或 rust_test_host 目標,並自動為 String、Vec、HashMap 和 Option 加上美化排版。詳情請參閱「偵錯 Rust 程式碼」。
  • 程式碼自動完成:取得 Rust 程式碼的智慧建議,包括其他模組中的項目。

    Rust 跨模組程式碼補全範例
    程式碼自動完成功能會建議其他 Rust 模組中的項目。

  • 導覽:跳至定義,並在專案中尋找 Rust 符號的用法。

    Rust 程式碼導覽範例
    前往 Rust 符號的定義。
    Rust 尋找用法範例
    找出 Rust 符號的所有用法。

  • 工具提示:將指標懸停在符號上,即可查看類型資訊和文件。

    Rust 工具提示範例
    工具提示,顯示來自其他模組的 Rust 符號類型資訊。

  • 插頁提示:直接在編輯器中查看型別資訊和其他脈絡提示。

    Rust 內嵌提示範例
    程式碼中顯示型別資訊的內嵌提示。

  • 結構檢視畫面:使用「Structure」工具視窗 (依序點選「View」>「Tool Windows」>「Structure」),瀏覽 Rust 檔案的結構。

    Rust 結構檢視範例
    結構工具視窗,顯示 Rust 檔案的大綱。

  • 重構:安全地重新命名符號,並更新所有用法。

    Rust 重新命名符號重構範例
    重新命名 Rust 符號,並更新所有參照。

  • 即時分析:即時取得 Rust 程式碼的錯誤和警告回饋。

    Rust 即時程式碼分析範例
    IDE 會即時顯示 Rust 程式碼中的錯誤和警告。