次の方法で共有


ビルド ターゲット

.NET for Android プロジェクトでは、次のビルド ターゲットが定義されています。

ビルド

プロジェクト内のソース コードとすべての依存関係をビルドします。

このターゲットでは Android パッケージ(ファイル)は作成されません。 Android パッケージを作成するには、SignAndroidPackage ターゲットを使用、"または" ビルド時に `$(AndroidBuildApplicationPackage) プロパティを True に設定します。

msbuild /p:AndroidBuildApplicationPackage=True App.sln

AOTプロファイリングのビルドと開始

埋め込みの AOT プロファイラーを使用してアプリをビルドし、プロファイラー TCP ポートを $(AndroidAotProfilerPort) に設定して、既定のアクティビティを開始します。

既定の TCP ポートは 9999 です。

Xamarin.Android 10.2 で追加されました。

クリア

ビルド プロセスによって生成されたすべてのファイルを削除します。

コンピュートアベイラブルデバイス

dotnet runで使用できる使用可能な Android デバイスとエミュレーターの一覧をクエリして返します。

このターゲットは、.NET SDK の dotnet run コマンドによって自動的に呼び出され、 --device オプションを使用したデバイスの選択がサポートされます。 各デバイスに次のメタデータがある @(Devices) 項目グループが返されます。

  • 説明: わかりやすい名前 (エミュレーターの場合は "Pixel 7 - API 35"、物理デバイスの場合は "Pixel 6 Pro" など)
  • : "Device" または "Emulator"
  • 状態: デバイスの状態 - "オンライン"、"オフライン"、"未承認"、または "NoPermissions"
  • モデル: デバイス モデル識別子 (省略可能)
  • 製品: 製品名 (省略可能)
  • デバイス: デバイス名 (省略可能)
  • TransportId: adb トランスポート ID (省略可能)

たとえば、使用可能なすべてのデバイスを一覧表示するには、次のようにします。

dotnet build -t:ComputeAvailableDevices

このターゲットは 、.NET SDK デバイスの選択仕様 の一部であり、次のようなコマンドを有効にします。

dotnet run --device <device-serial>

$(Device) プロパティを使用してデバイスを選択すると、$(AdbTarget) プロパティは、すべての adb 操作でその特定のデバイスを対象とするように自動的に設定されます。

.NET 11 で追加されました。

FinishAotProfiling

BuildAndStartAotProfiling ターゲットの "後に" 呼び出される必要があります。

デバイスまたはエミュレーターからの AOT プロファイラー データを TCP ポート経由で収集し、 $(AndroidAotProfilerPort)$(AndroidAotCustomProfilePath) に書き込みます。

ポートおよびカスタム プロファイルの既定値は 9999custom.aprof です。

追加のオプションを aprofutil に渡すには、それらを設定してください。 $(AProfUtilExtraOptions) プロパティ。

これは、次の内容と同じです。

aprofutil $(AProfUtilExtraOptions) -s -v -f -p $(AndroidAotProfilerPort) -o "$(AndroidAotCustomProfilePath)"

Xamarin.Android 10.2 で追加されました。

GetAndroidDependencies

@(AndroidDependency) ターゲットがインストールする Android SDK パッケージを決定するために使用する InstallAndroidDependencies 項目グループを作成します。

インストール

既定のデバイスまたは仮想デバイスに、Android パッケージを作成、署名、およびインストールします。

$(AdbTarget) プロパティは、Android パッケージのインストール先または削除元となる Android ターゲット デバイスを指定します。

# Install package onto emulator via -e
# Use `/Library/Frameworks/Mono.framework/Commands/msbuild` on OS X
MSBuild /t:Install ProjectName.csproj /p:AdbTarget=-e

Android依存関係をインストールする

GetAndroidDependencies ターゲットを呼び出し、@(AndroidDependency) 項目グループで指定された Android SDK パッケージをインストールします。

dotnet build -t:InstallAndroidDependencies -f net8.0-android "-p:AndroidSdkDirectory=<path to sdk>" "-p:JavaSdkDirectory=<path to java sdk>"

このターゲットは Android 固有のターゲット用の .NET であるため、 -f net8.0-android が必要です。 この引数を省略すると、次のエラーが発生します。

error MSB4057: The target "InstallAndroidDependencies" does not exist in the project.

必要なコンポーネントをインストールする場所を知る必要がある場合は、 AndroidSdkDirectory プロパティと JavaSdkDirectory プロパティが必要です。 これらのディレクトリは空でも既存でもかまいません。 Sdk コンポーネントは、既存の SDK インストールの上にインストールされます。

$(AndroidManifestType) MSBuild プロパティは、パッケージ名とパッケージ バージョンの検出に使用される Visual Studio SDK Manager リポジトリ と、ダウンロードする URL を制御します。

ログを記録しながら実行

追加のログ記録を有効にしてアプリケーションを実行します。 アプリケーションまたはランタイムの問題を報告または調査するときに役立ちます。 成功した場合、画面に出力されたメッセージには、ログに記録されたメッセージを含む logcat ファイルの場所が表示されます。

ターゲットの動作に影響を与えるプロパティ:

  • /p:RunLogVerbose=true MonoVM からのさらに詳細なログ記録が可能
  • /p:RunLogDelayInMS=X ここで、 X は、ログ出力をファイルに書き込む前に待機する時間 (ミリ秒単位) に置き換える必要があります。 既定値は 1000 です。

SignAndroidPackage 署名アンドロイドパッケージ

Android パッケージ (.apk) ファイルを作成して署名します。

/p:Configuration=Release とともに使用して、自己完結型の "リリース" パッケージを生成します。

StartAndroidActivity

デバイスまたは実行中のエミュレーターで、既定のアクティビティを開始します。

別のアクティビティを開始するには、 $(AndroidLaunchActivity) プロパティをアクティビティ名に設定します。

これは、次の内容と同じです。

adb shell am start -S -n @PACKAGE_NAME@/$(AndroidLaunchActivity)

Xamarin.Android 10.2 で追加されました。

StopAndroidPackage

デバイスまたは実行中のエミュレーターで、アプリケーション パッケージを完全に停止します。

これは、次の内容と同じです。

adb shell am force-stop @PACKAGE_NAME@

Xamarin.Android 10.2 で追加されました。

アンインストール

既定のデバイスまたは仮想デバイスから Android パッケージをアンインストールします。

$(AdbTarget) プロパティは、Android パッケージのインストール先または削除元となる Android ターゲット デバイスを指定します。

Androidリソース更新

Resource.designer.cs ファイルが更新されます。

このターゲットは通常、新しいリソースがプロジェクトに追加されたときに、IDE によって呼び出されます。