プロジェクトの概要と Soong ワークフロー

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] を選択して、共有可能なテンプレート ファイルを保存します。

    ASfP プロジェクト構成を共有可能なテンプレートにエクスポートする

  • テンプレートからインポートする: プロジェクト設定ウィザードで新しいプロジェクトを作成するときに、[Import from template] を選択し、共有の .asfp-project YAML ファイルを選択して、ディレクトリ、モジュール、ビルド設定を事前入力します。

構成パラメータ

.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 ガターアイコンからモジュールをビルド、実行、デバッグする

コンテキストに応じたデプロイとフラッシュ実行の構成

Android.bp ファイル内のデプロイ可能なモジュールの場合、次の機能を備えたガターまたは右クリック コンテキスト メニューから、コンテキスト Soong Deploy 実行構成を作成して起動できます。

  • デプロイ方法: adb、カスタム シェル スクリプト、adevice、flashall を使用してデプロイします。
  • Soong ビルドフックの事前実行: コネクテッド デバイスまたは Cuttlefish 仮想デバイスにデプロイする前に、ターゲットの Soong モジュールを自動的にビルドします。

ASfP で Adevice または Flashall 実行構成を選択する

ソースコードと Android.bp の間を移動する

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

対応する Android.bp ファイルを開くコンテキスト メニュー アクション

Android.bp エディタのインテリジェンスとツールチップのドキュメント

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

Android.bp プロパティのドキュメント ツールチップと使用状況のインレイヒント


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 ワークフローで複数の車載ディスプレイを同時に表示して操作できます。

ASfP の Cuttlefish ツール ウィンドウとマルチスクリーン ディスプレイ ミラーリング