Android Studio for Platform(ASfP)のプロジェクトには、ソースコードやアセットから、テストコード、Soong ビルド構成にいたるまで、AOSP コードベースのワークスペースを定義するものがすべて含まれています。
IntelliJ Workspace Model を基盤とする ASfP は、大規模なプラットフォーム プロジェクトを構築し、起動時にキャッシュに保存されたスナップショットからプロジェクト モデルを復元します。out/ ディレクトリ内のコンテンツと生成された gen ファイルは、シンボルとファイルのナビゲーションを高速に保つために、プロジェクトの検索スコープから除外されます。
プロジェクトの構成(.asfp-project)
プロジェクト ディレクトリのルートにある .asfp-project YAML ファイルは、ASfP プロジェクトの構成を制御します。このファイルでは、ワークスペースに含まれるディレクトリ、Soong モジュール、言語、ビルドフラグを定義します。
プロジェクト構成は、次のいずれかのオプションを使用していつでも開くことができます。
- メインメニューから [ASfP] > [Project] > [Open Config] を選択します。
- [Project] ツール ウィンドウのルートにある
.asfp-projectをダブルクリックします。 - [Soong] ツール ウィンドウのツールバーで [Open Config] をクリックします。
.asfp-project を編集したら、変更を有効にするためにプロジェクトの同期を実行します。
共有可能なプロジェクト テンプレート(エクスポートとインポート)
同じサブシステム(SystemUI、Settings、SurfaceFlinger、Automotive など)に取り組んでいるチームは、標準の .asfp-project 構成をテンプレートとして共有できます。
テンプレートにエクスポートする:
.asfp-projectエディタタブを右クリックするか、[ASfP] > [Project] > [Export Config to Template] を選択して、共有可能なテンプレート ファイルを保存します。
テンプレートからインポートする: プロジェクト設定ウィザードで新しいプロジェクトを作成するときに、[Import from template] を選択し、共有の
.asfp-projectYAML ファイルを選択して、ディレクトリ、モジュール、ビルド設定を事前入力します。
構成パラメータ
.asfp-project ファイルは次のパラメータをサポートしています。
repo
必須: Android プラットフォーム リポジトリのチェックアウト ルートへの絶対パス。
repo: /path/to/aosp
lunch
必須: プロジェクトに関連付けられたランチ ターゲット。すべての Soong ビルド、同期、デプロイ アクションに使用されます。
lunch: aosp_cf_x86_64_phone-aosp_current-userdebug
directories
省略可: プロジェクトに含める、またはプロジェクトから除外するディレクトリ(repo ルートを基準とする)。シンボリック リンクされたディレクトリとソースルートがサポートされています。
directories:
include:
- frameworks/base
- packages/apps/Settings
exclude:
- vendor
- out/soong
modules
省略可: プロジェクトに含める、またはプロジェクトから除外する特定の Soong モジュール。directories と連携して動作します。完全なモジュール名と短縮されたモジュール名の両方がサポートされています。
modules:
include:
- SystemUI
- frameworks/base/services/core/java:services
exclude:
- UnusedModule
test_sources
省略可: ASfP の自動テストソース ヒューリスティックを手動でオーバーライドする必要がある場合に、テストソース ルートとしてマークする相対パス。
test_sources:
- cts/tests/tests/example
- tests/mytests
other_languages
省略可: Java、Kotlin、Android.bp のサポートはデフォルトで有効になっています。C と C++ の場合は cpp、Rust 言語のサポートの場合は rust を追加します。
other_languages:
- cpp
- rust
build_config
省略可: IDE によってトリガーされる Soong ビルド呼び出しに渡されるカスタムフラグまたは環境変数(同期、ガタービルド、実行構成など):
build_config:
flags:
- -j64
env:
SOONG_PARTIAL_COMPILE: true
SOONG_ALLOW_MISSING_DEPENDENCIES: true
同期モードと Soong ツール ウィンドウ
ASfP には、ワークフローのニーズに応じて IDE プロジェクトを AOSP チェックアウトと同期する複数の方法が用意されています。これらのアクションには、[ASfP] > [Sync] メニューまたは [Soong] ツール ウィンドウからアクセスします。
- Sync Project: 構成済みのディレクトリとモジュールを分析し、IDE のインデックス登録と依存関係を更新します。
- 部分同期: モジュールまたはディレクトリのターゲット サブセットのみを同期し、ツリーのローカライズされた領域で作業する際の時間を節約します。
- No-Build Sync: Soong ビルドステップを実行せずに、IDE プロジェクト構造とソースルートを更新します。ソースファイルを追加または移動した場合や、ターミナルからすでにビルドしている場合に便利です。
- 同期とフルビルド: プロジェクトの同期と Soong のフルビルドを 1 つのステップにまとめます。
[Soong] ツール ウィンドウ([View] > [Tool Windows] > [Soong])には、各同期タスクノードのリアルタイム ステータス インジケーター、クイックアクセス ビルドボタン、Soong コマンドの実行が表示されます。
エディタ内での Android.bp のビルド、デプロイ、ナビゲーション
ASfP は、Android.bp ファイルの統合エディタ サポートを提供します。
ガターからターゲットをビルド、実行、デバッグする
プロジェクト内の任意の Android.bp ファイルを開き、2 つのガターアイコンからターゲットをビルドまたは起動します。
- ビルドアイコン(すべての名前付きモジュール): すべての名前付きモジュール(
cc_library_shared、java_library、rust_binary、android_app、テスト ターゲット)のname:の横に表示され、その Soong ターゲットをビルドします(Build "<module>")。 - 実行アイコンまたはデバッグ アイコン(
*_test、*_test_host、android_app): テスト モジュールまたはandroid_app宣言の横にある [実行] をクリックして、モジュールを実行またはデバッグします。android_testモジュールはatestを通じてデバッグされ、cc_test*モジュールとrust_test*モジュールは組み込みの LLDB で起動されます。

コンテキストに応じたデプロイとフラッシュ実行の構成
Android.bp ファイル内のデプロイ可能なモジュールの場合、次の機能を備えたガターまたは右クリック コンテキスト メニューから、コンテキスト Soong Deploy 実行構成を作成して起動できます。
- デプロイ方法:
adb、カスタム シェル スクリプト、adevice、flashallを使用してデプロイします。 - Soong ビルドフックの事前実行: コネクテッド デバイスまたは Cuttlefish 仮想デバイスにデプロイする前に、ターゲットの Soong モジュールを自動的にビルドします。

ソースコードと Android.bp の間を移動する
[Project] ツール ウィンドウ、エディタタブ、エディタのコンテキスト メニューの任意のソースファイルまたはディレクトリから、右クリックして [Open Corresponding Android.bp File] を選択します。ASfP は、そのファイルをコンパイルする Android.bp モジュール宣言を特定してハイライト表示し、defaults ブロック、ワイルドカード srcs パターン、シンボリック リンクを解決します。

Android.bp エディタのインテリジェンスとツールチップのドキュメント
- ファイル間のナビゲーションと使用回数: モジュール参照、
srcsファイル、soong_config_module_typeを Control キーを押しながらクリックすると、その宣言に移動します。クリック可能なN Usagesインレイ ヒントが、モジュール名と共有srcsターゲットの横に表示され、参照されていないライブラリ モジュールは視覚的に暗くなります。 - Soong プロパティのドキュメント ツールチップ:
Android.bpファイル内の任意のプロパティ(target、arch、multilibのアーキテクチャまたはターゲット スコープのプロパティを含む)にポインタを合わせると、Soong 型のシグネチャとドキュメントがインラインで表示されます。

Cuttlefish 仮想デバイスの管理とマルチスクリーン ミラーリング
ASfP には、プラットフォーム、Android Automotive OS(AAOS)、ソフトウェア定義車両(SDV)のデベロッパーがローカルでビルドされた Cuttlefish 仮想デバイスを操作するための Cuttlefish プラグインが組み込まれています。
- デバイス マネージャーでのマルチデバイス設定: ローカル AOSP チェックアウト(
$ANDROID_BUILD_TOPと$ANDROID_PRODUCT_OUT)を使用して、デバイス マネージャーでマルチデバイス Cuttlefish 仮想デバイス設定を作成、管理します。 - Cuttlefish ツール ウィンドウでのマルチスクリーン ディスプレイ ミラーリング: [View] > [Tool Windows] > [Cuttlefish] を開いて、組み込みの Cuttlefish マルチスクリーン ディスプレイ ミラーリングを使用すると、AAOS および SDV ワークフローで複数の車載ディスプレイを同時に表示して操作できます。
