ASfP での Rust のサポート

概要

Rust は、パフォーマンスと安全性(特にメモリ安全性)に重点を置いた最新のシステム プログラミング言語です。Rust は、重要なシステム コンポーネントを開発するための C または C++ のより安全な代替手段として、Android エコシステムでますます重要になっています。セキュリティと安定性の向上を実現します。

このページでは、Android オープンソース プロジェクト(AOSP)プロジェクト内で Rust 開発をサポートするために、Android Studio for Platform(ASfP)を設定する方法について説明します。

前提条件

  • ASfP がインストールされている: ASfP がインストールされ、実行されていることを確認します。
  • プラットフォームのチェックアウト: マシンで動作する AOSP プラットフォームのチェックアウトが必要です。

Rust のサポートを有効にする

ASfP プロジェクトで Rust サポートを有効にする手順は次のとおりです。

  1. Rust を有効にする

    • セットアップ ウィザードで新しいプロジェクトを作成するときに、[Rust] のチェックボックスをオンにします。
    新しいプロジェクトのセットアップ ウィザードの Rust チェックボックス。
    新しいプロジェクト設定ウィザードの Rust チェックボックス。
    • 既存のプロジェクトの場合は、.asfp-project 構成ファイルを開き、other_languages に rust を追加します。
        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 クレートを生成してインデックス登録するように、プロジェクトの同期をトリガーします。[ASfP] > [Sync] > [Sync Project] を選択します。

構成を確認する

これらの手順を完了したら、次の結果を確認します。

  • rust-project.json は、ソース .iml ファイルの下のプロジェクト ビューに表示されます。このファイルは、分析中に Soong によって生成され、リポジトリ ルートにシンボリック リンクされます。これは、言語サーバー プロトコル(LSP)が言語サービスを提供するために必要です。このファイルを直接編集しないでください。代わりに、Soong が処理するように再同期してください。

    .asfp-project 構成の other_languages に rust が存在することを確認します。

    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 のリアルタイム コード分析の例
    Rust コードのリアルタイム エラーと警告を表示する IDE。