MSBuild プロパティは、ターゲットの動作を制御します。
これらは、MSBuild PropertyGroup 内のプロジェクト ファイル (MyApp.csproj など) 内で指定されます。
注意
.NET for Android では、技術的にはアプリケーションとバインド プロジェクトの違いがないため、プロパティは両方で機能します。 実際には、個別のアプリケーション プロジェクトとバインド プロジェクトを作成することを強くお勧めします。 バインド プロジェクトで主に使用されるプロパティについては、「 MSBuild バインド プロジェクトのプロパティ リファレンス ガイド」を参照してください。
AdbTarget
$(AdbTarget) プロパティは、Android パッケージのインストール先または削除元となる Android ターゲット デバイスを指定します。
このプロパティの値は、adb ターゲット デバイス オプションと同じです。
AfterGenerateAndroidManifest
このプロパティに一覧表示された MSBuild ターゲットは、_GenerateJavaStubs で AndroidManifest.xml ファイルが生成される場所である内部の $(IntermediateOutputPath) ターゲットの直後に実行されます。 生成された AndroidManifest.xml ファイルに変更を加える場合、この拡張ポイントを使用して行うことができます。
AndroidAapt2CompileExtraArgs
Android アセットとリソースを処理するときに、aapt2 compile コマンドに渡すコマンド ライン オプションを指定します。
AndroidAapt2LinkExtraArgs
Android アセットとリソースを処理するときに、aapt2 link コマンドに渡すコマンド ライン オプションを指定します。
AndroidAddKeepAlives
オブジェクトが早期に収集されないように、リンカーによってバインド プロジェクト内に GC.KeepAlive() 呼び出しを挿入するかどうかを制御するブール型プロパティ。
リリース構成のビルドの既定値は True です。
AndroidAotAdditionalArguments
Aot または $(AndroidEnableProfiledAot) が $(AotAssemblies) に設定されているプロジェクトの true タスク中に、Mono コンパイラにオプションを渡すことができるようにする文字列プロパティ。
Mono クロスコンパイラを呼び出すときに、プロパティの文字列値が応答ファイルに追加されます。
一般に、このプロパティは空白のままにしておく必要がありますが、特殊なシナリオでは、柔軟性が向上する場合があります。
$(AndroidAotAdditionalArguments) プロパティは、関連する $(AndroidExtraAotOptions) プロパティとは異なります。$(AndroidAotAdditionalArguments) は、--verbose や --debug などの完全なスタンドアロンのスペース区切りオプションを AOT コンパイラに渡します。一方、$(AndroidExtraAotOptions) には、AOT コンパイラの --aot オプションの一部であるコンマ区切りの引数が含まれます。
AndroidAotCustomProfilePath
プロファイラー データを保持するために aprofutil が作成する必要があるファイル。
AndroidAotProfiles
開発者がコマンド ラインから AOT プロファイルを追加できるようにする文字列プロパティ。 セミコロンまたはコンマで区切られた絶対パスの一覧です。
AndroidAotProfilerPort
プロファイル データを取得するときに aprofutil が接続する必要があるポート。
AndroidAotEnableLazyLoad
起動時に AOT-d アセンブリの事前読み込みではなく、遅延読み込みを有効にします。 任意の形式の AOT が有効になっているリリース ビルドの場合、既定値は True です。
.NET 6 で導入されました。
AndroidApkDigestAlgorithm
jarsigner -digestalg で使用するダイジェスト アルゴリズムを指定する文字列値。
既定値は SHA-256 です。
AndroidApkSignerAdditionalArguments
開発者が apksigner ツールに引数を指定することを許可する文字列プロパティ。
AndroidApkSigningAlgorithm
jarsigner -sigalg で使用する署名アルゴリズムを指定する文字列値。
既定値は SHA256withRSA です。
AndroidApplication
プロジェクトが Android アプリケーション用 (True) か、または Android ライブラリ プロジェクト用 (False または存在しない) かを示すブール値。
<AndroidApplication>True</AndroidApplication> を持つプロジェクトは、Android パッケージ内に 1 つしか存在できない場合があります (残念ながら、この要件は検証されていないため、Android リソースに関する分かりにくい突拍子のないエラーが発生する可能性があります)。
AndroidApplicationJavaClass
android.app.Application を継承するクラスにおいて、 の代わりに使用する完全な Java クラス名。
$(AndroidApplicationJavaClass) プロパティは通常、 MSBuild プロパティなどの "他の" プロパティによって設定されます。$(AndroidEnableMultiDex)
アンドロイドパフォーマンスのためのエミット回避
起動パフォーマンスを向上させるために、 System.Reflection.Emit を "回避" するかどうかを決定するブール型プロパティ。 このプロパティは既定で True です。
System.Reflection.Emitの使用は、Android でのスタートアップ パフォーマンスに顕著な影響を与えます。 この動作は、次の機能スイッチでは既定で無効になっています。
Switch.System.Reflection.ForceInterpretedInvoke:MethodInfo.Invoke()またはConstructorInfo.Invoke()への 2 回目の呼び出しの後に、繰り返し呼び出しのパフォーマンスを向上させるためにコードが生成されます。Microsoft.Extensions.DependencyInjection.DisableDynamicEngine: 依存関係挿入コンテナーからサービスを取得する 2 回目の呼び出しの後、繰り返し呼び出しのパフォーマンスを向上させるためにコードが生成されます。
ほとんどの Android アプリケーションでは、この動作を無効にすることが望ましいです。
使用可能な機能スイッチの詳細についてはBase クラス ライブラリ機能スイッチのドキュメントを参照してください。
.NET 8 で追加されました。
AndroidBinUtilsPath
binutils、ld、ネイティブリンカー、ネイティブアセンブラなどの Android 用 as が格納されているディレクトリへのパス。 これらのツールは、.NET for Android ワークロードに含まれています。
既定値は $(MonoAndroidBinDirectory)\binutils\bin\ です。
AndroidBoundExceptionType
Android で提供される .NET 型が Java 型 ( Android.Runtime.InputStreamInvoker と System.IO.Stream、 Android.Runtime.JavaDictionary や System.Collections.IDictionaryなど) の観点から .NET 型またはインターフェイスを実装する場合に例外を伝達する方法を指定する文字列値。
Java: 元の Java 例外の型はそのまま伝播されます。Javaは、たとえば、InputStreamInvokerがSystem.IO.StreamAPI を適切に実装していないことを意味します。これは、Java.IO.IOExceptionからStream.Read()ではなくSystem.IO.IOExceptionがスローされる可能性があるためです。System: 元の Java 例外の型がキャッチされ、適切な .NET 例外の型でラップされます。Systemは、たとえば、InputStreamInvokerがSystem.IO.Streamを正しく実装し、Stream.Read()が インスタンスをスロー "しない" ことを意味します。Java.IO.IOException(代わりに、System.IO.IOExceptionの値としてJava.IO.IOExceptionを含むException.InnerExceptionをスローする場合があります)。既定値は
Systemです。
Android結合インターフェースには定数が含まれる
インターフェイスのバインド定数をサポートするかどうか、または IMyInterfaceConsts クラスを作成する回避策を使用するかどうかを決定するブール型プロパティ。
既定値は True です。
Androidバウンドインタフェースには静的メソッドとデフォルトメソッドが含まれています
インターフェイスの既定のメンバーと静的メンバーをサポートするかどうか、または abstract class MyInterface のような静的メンバーを含む兄弟クラスを作成する以前の回避策をサポートするかどうかを示すブール型プロパティ。
既定値は、.NET 6 では True、レガシの場合は False です。
アンドロイド境界インターフェイス含有型
インターフェイスで入れ子になった型をサポートするかどうか、または IMyInterfaceMyNestedClass のような入れ子になっていない型を作成する回避策をサポートするかどうかを示すブール型プロパティ。
既定値は、.NET 6 では True、レガシの場合は False です。
AndroidBuildApplicationPackage
パッケージ (.apk) を作成して署名するかどうかを示すブール値。 この値を True に設定することは、使用するのと同等です。
SignAndroidPackage ビルドターゲット。
このプロパティは既定で False です。
AndroidBundleConfigurationFile
Android アプリ バンドルをビルドする際に、のbundletoolとして使用するファイル名を指定します。 このファイルは、APK を生成するためのどのディメンションでバンドルを分割するかなど、バンドルから APK を生成する方法のいくつかの側面を制御します。
.NET for Android では、圧縮されていないファイル拡張子の一覧など、これらの設定の一部が自動的に構成されます。
このプロパティが意味をなすのは、$(AndroidPackageFormat) が aab に設定されている場合のみです。
AndroidBundleToolExtraArgs
アプリ バンドルをビルドするときに bundletool コマンドに渡すコマンド ライン オプションを指定します。
AndroidClassParser
.jar ファイルの解析方法を制御する文字列プロパティ。 考えられる値:
class-parse: JVM を利用せずに、
class-parse.exeを使用して直接 Java バイトコードを解析します。jar2xml: この値は廃止され、サポートされなくなりました。
AndroidCodegenTarget
コード生成ターゲット ABI を制御する文字列プロパティ。 考えられる値:
XamarinAndroid: この値は廃止され、サポートされなくなりました。
XAJavaInterop1: JNI の呼び出しに Java.Interop を使用します。
XAJavaInterop1を使用したバインドのアセンブリは、Xamarin.Android 6.1 以降でのみビルドおよび実行できます。 Xamarin.Android 6.1 以降は、この値でMono.Android.dllをバインドします。JavaInterop1: 試験的な値。現在、NativeAOT ランタイムの既定値です。
既定値は XAJavaInterop1 です。
AndroidパッケージをAbiごとに作成する
1 つの ですべての ABI をサポートするのでなく、($(AndroidSupportedAbis) で指定された ABI ごとに 1 つ) ファイルの "セット" を作成する必要があるかどうかを決定するブール型プロパティ。.apk
「ABI 固有の APK のビルド」ガイドも参照してください。
AndroidCreateProguardMappingFile
ビルド プロセスの一部として ProGuard マッピング ファイルを生成さするかどうかを制御するブール型プロパティ。
csproj に以下を追加するとファイルが生成され、AndroidProguardMappingFile プロパティを使用して最終的なマッピング ファイルの場所が制御されます。
<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>
.aab ファイルを生成すると、マッピング ファイルがパッケージに自動的に含まれます。 Google Play ストアに手動でアップロードする必要はありません。
.apk ファイルを使用する場合は、AndroidProguardMappingFile を手動でアップロードする必要があります。
True=r8 を使用する場合、既定値は $(AndroidLinkTool) です。
AndroidDebugKeyAlgorithm
debug.keystore 用に使用する既定のアルゴリズムを指定します。 既定値は RSA です。
Androidデバッグキーの有効期限
debug.keystore 用に使用する既定の有効性を指定します。 既定値は 10950、30 * 365 または 30 years です。
AndroidDebugStoreType
debug.keystore に使用するキー ストア ファイル形式を指定します。 既定値は pkcs12 です。
AndroidDeviceUserId
ゲストまたは職場のアカウントでアプリケーションを展開およびデバッグできるようにします。 値は、次の adb コマンドから取得した uid 値です。
adb shell pm list users
上記のコマンドにより次のデータが返されます。
Users:
UserInfo{0:Owner:c13} running
UserInfo{10:Guest:404}
uid は最初の整数値です。 上記の出力では、0 と 10 です。
AndroidDexTool
有効な値が d8 の列挙型プロパティ。
以前は、Xamarin.Android では dx の値がサポートされていました。
.NET for Android ビルド プロセス中に使用される Android dex コンパイラを示します。
既定値は d8 です。
D8 と R8 に関するドキュメントを参照してください。
AndroidEnableDesugar
desugar が有効かどうかを決定するブール型プロパティ。 現在、Android ではすべての Java 8 機能がサポートされておらず、desugar コンパイラの出力に javac と呼ばれるバイトコード変換を実行して、既定のツールチェーンにより新しい言語機能が実装されています。 既定値は、False を使用する場合は $(AndroidDexTool)=dx、True$(AndroidDexTool)= を使用する場合は d8 です。
Android有効GooglePlayストア確認
開発者が次の Google Play ストア チェックを無効にできるようにするブール型プロパティ: XA1004、XA1005、および XA1006。 これらのチェックを無効にすることは、Google Play ストアを対象としておらず、このチェックを実行したくない開発者にとって役立ちます。
AndroidEnableMarshalMethods
LLVM マーシャリング メソッドが有効かどうかを決定する bool プロパティ。
LLVM マーシャリング メソッドは、Java native メソッドの登録にネイティブ エントリ ポイントを使用するアプリのスタートアップ最適化です。
既定では、このプロパティは False です。
.NET 8 で追加されました。
AndroidEnableMultiDex
最終的な .apk で Multi-Dex サポートを使用するかどうかを決定するブール型プロパティ。
このプロパティは既定で False です。
AndroidEnableProfiler
$(EnableDiagnostics) プロパティのシノニム。
Android アプリケーションで dotnet-trace または dotnet-gcdump を使用する場合に必要です。
trueに設定すると、Mono 診断コンポーネントがアプリケーションに含まれます。 このコンポーネントは、 libmono-component-diagnostics_tracing.so ネイティブ ライブラリです。
このプロパティは既定で False です。
AndroidEnableObsoleteOverrideInheritance
バインドされたメソッドがオーバーライドするメソッドから [Obsolete] 属性を自動的に継承するかどうかを決定するブール型プロパティ。
.NET 8 では、このプロパティのサポートが追加されました。
このプロパティは既定で True です。
AndroidEnablePreloadAssemblies
アプリケーション パッケージ内でバンドルされているすべてのマネージド アセンブリを、プロセスの起動中に読み込むかどうかを制御するブール型プロパティ。
True に設定すると、アプリケーション コードが呼び出される前に、アプリケーション パッケージ内でバンドルされているすべてのアセンブリがプロセスの起動中に読み込まれます。
False に設定すると、アセンブリは必要な場合にのみ読み込まれます。
必要に応じてアセンブリを読み込むと、アプリケーションの起動がより高速になり、デスクトップの .NET セマンティクスとの整合性も高まります。
時間の短縮を確認したい場合は、debug.mono.log を含めるよう timing システム プロパティを設定して、Finished loading assemblies: preloaded 内で adb logcat メッセージを探します。
依存関係の挿入を使うアプリケーションまたはライブラリでは、それらが同じように でアプリケーション バンドル内のすべてのアセンブリを返すことが必要な場合、それ以外ではアセンブリが必要なかった場合でも、このプロパティが True になることを "必要とする" 場合があります。AppDomain.CurrentDomain.GetAssemblies()
既定では、この値は False です。
AndroidEnableProfiledAot
Ahead-of-Time コンパイル中に AOT プロファイルを使用するかどうかを決定するブール型プロパティ。
プロファイルは、リストにされています。
@(AndroidAotProfile) 項目グループ。 この項目グループには、既定のプロファイルが含まれています。 既存のものを削除し、独自の AOT プロファイルを追加することで上書きできます。
このプロパティは既定で False です。
AndroidEnableRestrictToAttributes
obsoleteとdisableの有効な値を持つ列挙スタイルのプロパティ。
obsoleteに設定すると、Java 注釈androidx.annotation.RestrictToor でマークされている型とメンバーがエクスポートされていない Java パッケージ内にある場合は、C# バインドで[Obsolete]属性でマークされます。
この [Obsolete] 属性には、Java パッケージ所有者が API を "内部" と見なし、その使用に対して警告することを説明する説明メッセージが含まれています。
この属性には、"通常の" 古い API とは別に抑制できるように、カスタム警告コード XAOBS001 もあります。
disableに設定すると、API は通常どおりに生成され、追加の属性はありません。 (これは、.NET 8 より前と同じ動作です)。
API を自動的に削除するのではなく、 [Obsolete] 属性を追加することで、既存のパッケージとの API の互換性を維持しました。 代わりに、注釈or@RestrictToがエクスポートされていない Java パッケージ内にあるメンバーを削除する場合は、このプロパティに加えて Transform ファイルを使用して、これらの型がバインドされないようにすることができます。
<remove-node path="//*[@annotated-visibility]" />
.NET 8 では、このプロパティのサポートが追加されました。
このプロパティは既定で obsolete に設定されています。
AndroidEnableSGenConcurrent
Mono の同時 GC コレクターを使用するかどうかを決定するブール型プロパティ。
このプロパティは既定で False です。
カスタムJavaオブジェクトで発生するAndroidエラー (AndroidErrorOnCustomJavaObject)
Android.Runtime.IJavaObject または を継承しなくても、Java.Lang.Object または Java.Lang.Throwable を型が実装できるかどうかを判断するブール型プロパティ。
class BadType : IJavaObject {
public IntPtr Handle {
get {return IntPtr.Zero;}
}
public void Dispose()
{
}
}
True の場合、このような型は XA4212 エラーを生成し、それ以外の場合は XA4212 警告を生成します。
このプロパティは既定で True です。
AndroidExplicitCrunch
このプロパティはサポートされなくなりました。
AndroidExtraAotOptions
Aot または $(AndroidEnableProfiledAot) が $(AotAssemblies) に設定されているプロジェクトの true タスク中に、Mono コンパイラにオプションを渡すことができるようにする文字列プロパティ。
Mono クロスコンパイラを呼び出すときに、プロパティの文字列値が応答ファイルに追加されます。
一般に、このプロパティは空白のままにしておく必要がありますが、特殊なシナリオでは、柔軟性が向上する場合があります。
$(AndroidExtraAotOptions) プロパティは、関連する $(AndroidAotAdditionalArguments) プロパティとは異なります。$(AndroidAotAdditionalArguments) は、コンマ区切りの引数を Mono コンパイラの --aot オプションに配置します。
$(AndroidExtraAotOptions) では代わりに、--verbose や --debug など、完全なスタンドアロンのスペース区切りオプションがコンパイラに渡されます。
AndroidFastDeploymentType
: MSBuild プロパティが の場合に、ターゲット デバイスの$(EmbedAssembliesIntoApk)に展開できる型を制御する値の False (コロン) 区切りのリスト。 リソースが高速にデプロイされている場合は、生成されたまたは.apkに埋め込.aab、デプロイ時間が短縮される可能性があります。 (迅速に展開すればするほど、パッケージを再構築する必要が少なくなり、インストール プロセスが高速になる可能性があります)。有効な値は次のとおりです。
-
Assemblies: アプリケーション アセンブリを展開します。 -
Dexes:.dexファイル、ネイティブ ライブラリ、および typemap を展開します。Dexes値は、Android 4.4 以降 (API-19) を実行しているデバイスで "のみ" 使用できます。
既定値は Assemblies です。
そのシステムを使用したリソースおよび資産の高速展開のサポートは、コミット f0d565fe で削除されました。 これは、非推奨の API を使用して作業する必要があったからです。
**.NET 9 でこの機能のサポートが削除されました
試験的です。
AndroidFragmentType
レイアウト バインディング コードを生成するときに、すべての <fragment> レイアウト要素に使用される既定の完全修飾型を指定します。 既定値は、Android の標準の Android.App.Fragment 型です。
AndroidGenerateJniMarshalMethods
ビルド プロセスの一環として、JNI マーシャリング メソッドの生成を有効にするブール型プロパティ。 これにより、バインディング ヘルパー コードでの System.Reflection の使用量が大幅に削減されます。
既定値は False です。 開発者が新しい JNI マーシャリング メソッド機能を利用したいであれば、
<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>
彼らの .csproj の中で。 または、コマンド ラインでプロパティを指定します。
-p:AndroidGenerateJniMarshalMethods=True
試験的です。 既定値は False です。
AndroidGenerateJniMarshalMethodsAdditionalArguments
jnimarshalmethod-gen.exe 呼び出しにパラメータを追加するために使用できる文字列プロパティ。デバッグに役立ち、-v、-d、--keeptemp などのオプションを使用できます。
既定値は、空の文字列です。 これは、.csproj ファイルまたはコマンド ラインで設定できます。 次に例を示します。
<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>
または
-p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"
AndroidGenerateLayoutBindings
コードビハインドのレイアウトの生成をtrueに設定することで有効にし、falseに設定することで完全に無効にします。
既定値は false です。
AndroidGenerateResourceDesigner
既定値は true です。
false に設定すると、Resource.designer.cs の生成が無効になります。
AndroidHttpClientHandlerType
既定の System.Net.Http.HttpMessageHandler コンストラクターによって使用される、既定の System.Net.Http.HttpClient の実装を制御します。 値は HttpMessageHandler サブクラスのアセンブリ修飾型名であり、System.Type.GetType(string) での使用に適しています。
.NET 6 以降では、このプロパティは $(UseNativeHttpHandler)=trueと共に使用した場合にのみ有効です。
このプロパティでは次の値が最も一般的です。
Xamarin.Android.Net.AndroidMessageHandler: Android Java API を使用して HTTP 要求を実行します。 これは従来のXamarin.Android.Net.AndroidClientHandlerに似ていますが、いくつかの機能強化が行われました。 HTTP 1.1 と TLS 1.2 がサポートされています。 これは既定の HTTP メッセージ ハンドラーです。System.Net.Http.SocketsHttpHandler, System.Net.Http: .NET の既定のメッセージ ハンドラー。 HTTP/2、TLS 1.2 をサポートしており、 Grpc.Net.Client で使用することをお勧めします。 この値は、$(UseNativeHttpHandler)=falseと同じです。未設定/空の文字列。これは
System.Net.Http.HttpClientHandler, System.Net.Httpと同等です。Visual Studio のプロパティ ページの既定オプションに対応しています。
Visual Studio で [最低限の Android バージョン] が [Android 4.4.87] 以下に構成されている、または Visual Studio for Mac で [ターゲット プラットフォーム] が [最新の開発] または [最大の互換性] に設定されている場合、新しいプロジェクトのウィザードで、新しいプロジェクトに対してこのオプションが選択されます。
System.Net.Http.HttpClientHandler, System.Net.Http: マネージドHttpMessageHandlerを使用します。Visual Studio のプロパティ ページのマネージドオプションに対応しています。
注意
.NET 6 では、指定する型を Xamarin.Android.Net.AndroidClientHandler または System.Net.Http.HttpClientHandler したり、これらのクラスから継承したりすることはできません。 "クラシック" Xamarin.Android から移行する場合は、 AndroidMessageHandler を使用するか、代わりにそこからカスタム ハンドラーを派生させます。
注意
$(AndroidHttpClientHandlerType) プロパティのサポートは、XA_HTTP_CLIENT_HANDLER_TYPE 環境変数を設定することにより機能します。
次のビルド アクションを含むファイル内で見つかる $XA_HTTP_CLIENT_HANDLER_TYPE 値が優先されます:
@(AndroidEnvironment)は優先されます。
AndroidIgnoreAllJniPreload
trueに設定されている場合、すべてのネイティブ JNI ライブラリがアプリケーションの起動時にプリロードされないようにするブール値。 既定では、このようなライブラリはすべて、適切な初期化を保証するために、アプリケーションの起動時にランタイムによって読み込まれます。 ただし、場合によっては、望ましい動作ではない可能性があり、このプロパティを使用すると効果的に無効にすることができます。
アプリケーションの起動時に読み込む必要がある一部のフレームワーク ライブラリは、このプロパティの影響を受けなくなります。
プリロード メカニズムからライブラリを除外するより詳細な方法については、 @(AndroidNativeLibraryNoJniPreload) も参照してください。
AndroidIncludeWrapSh
Android ラッパー スクリプト (wrap.sh) を APK にパッケージ化する必要があるかどうかを示すブール値。 ラッパー スクリプトはアプリケーションの起動方法や動作方法に大きく影響する可能性があるため、既定値は false になっています。スクリプトは、デバッグを行う場合やアプリケーションの起動または実行時の動作を変更する場合など、必要な場合にのみ含めるようにします。
スクリプトはプロジェクトに追加されます
@(AndroidNativeLibrary) ビルド アクションを使用します。これは、アーキテクチャ固有のネイティブ ライブラリと同じディレクトリに配置されているため、wrap.sh という名前を付ける必要があります。
wrap.sh スクリプトへのパスを指定する最も簡単な方法は、ターゲット アーキテクチャにちなんだ名前を付けたディレクトリにスクリプトを配置することです。 この方法は、アーキテクチャごとに wrap.sh が 1 つしかない場合に機能します。
<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />
ただし、さまざまな目的のためにアーキテクチャごとに複数の wrap.sh が必要な場合には、この方法は機能しません。
そのような場合は、代わりに Link の AndroidNativeLibrary メタデータを使用して名前を指定できます。
<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
<Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>
Link メタデータを使用する場合、その値に指定するパスは、APK ルート ディレクトリを基準とする有効なネイティブ アーキテクチャ固有のライブラリ パスである必要があります。 パスの形式は lib\ARCH\wrap.sh です。ARCH には次のいずれかを指定できます。
arm64-v8aarmeabi-v7ax86_64x86
AndroidIncludeAssetPacksInPackage(アンドロイドのパッケージにアセットパックを含める)
このプロパティは、アセット パックのビルドが最終的な .aab ファイルに自動的に含まれるかどうかを制御します。 既定では trueに設定されます。
場合によっては、ユーザーが中間リリースをリリースする必要がある場合があります。 このような場合、ユーザーは資産パックを更新する必要はありません。 特にアセット パックの内容が変更されていない場合。 このプロパティを使用すると、アセット パックが不要な場合はスキップできます。
.NET 9 で追加
AndroidInstallJavaDependencies
既定値は、コマンド ライン ビルドの true です。
trueに設定すると、<InstallAndroidDependencies/> ターゲットの実行時に Java SDK のインストールが有効になります。
.NET 9 では、このプロパティのサポートが追加されました。
AndroidJavadocVerbosity
バインド プロジェクト内で Javadoc ドキュメントをインポートする際に、C# XML ドキュメントのコメントをどの程度 "詳細" にするかを指定します。
そのツールを使用する必要があります。
@(JavaSourceJar) ビルドアクション。
$(AndroidJavadocVerbosity) プロパティは列挙型に似ています。指定可能な値は full または intellisense です。
-
intellisense: 次の XML コメントのみを出力します:<exception/>、<param/>、<returns/>、<summary/>。 -
full:intellisense要素、<remarks/>、<seealso/>、およびサポートされているその他のすべての要素を出力します。
既定値は intellisense です。
AndroidKeyStore
カスタム署名情報を使用するかどうかを示すブール値。 既定値は False で、既定のデバッグ署名キーがパッケージの署名に使用されることを意味します。
AndroidLaunchActivity
起動する Android アクティビティー。
AndroidLinkMode
Android パッケージ内に含まれるアセンブリで実行する必要があるリンクの種類を指定します。 Android アプリケーション プロジェクトでのみ使用されます。 既定値は SdkOnly です。 有効な値は次のとおりです。
None: リンクは試行されません。
SdkOnly: リンクは基本クラス ライブラリでのみ実行され、ユーザーのアセンブリでは実行されません。
Full: リンクは基本クラス ライブラリとユーザーのアセンブリで実行されます。
注意
AndroidLinkModeの値として Full を使用すると、特にリフレクションを使用している場合には、アプリが故障することがよくあります。 何をしているかを十分に理解している場合を除き、使用しないでください。
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
AndroidLinkResources
true の場合、ビルド システムは、すべてのアセンブリ内の Resource.Designer.cs Resource クラスの入れ子になった型をリンクします。 これらの型を使用する IL コードは、フィールドにアクセスするのではなく、値を直接使用するように更新されます。
入れ子になった型をリンクすると、apk サイズを少し小さくすることができ、起動時のパフォーマンスを向上させることもできます。 "リリース" ビルドのみがリンクされます。
試験的です。 次のようなコードでのみ動作するように設計されています
var view = FindViewById(Resources.Ids.foo);
その他のシナリオ (リフレクションなど) はサポートされません。
AndroidLinkSkip
リンクしないアセンブリ名のセミコロン (;) で区切られたリストを、ファイル拡張子を使わずに指定します。 Android アプリケーション プロジェクト内でのみ使用されます。
<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>
AndroidLinkTool
proguard または r8 の有効な値を持つ列挙型プロパティ。 Java プログラムコードに使用されるコードシュリンカーを示します。 既定値は空の文字列、または proguard が $(AndroidEnableProguard) の場合は True です。
D8 と R8 に関するドキュメントを参照してください。
AndroidLintEnabled
開発者がパッケージ化プロセスの一部として、Android の lint ツールを実行できるようにするブール型プロパティ。
$(AndroidLintEnabled)=True の場合、次のプロパティが使用されます。
次のビルド アクションを使用することもできます。
詳細については、Android の ツールの lint を参照してください。
Androidリント有効な問題
有効にする lint 問題を示すコンマ区切りリストの文字列プロパティ。
$(AndroidLintEnabled)=True の場合にのみ使用されます。
AndroidLintDisabledIssues
無効化する lint の問題をコンマで区切ったリストを表す文字列プロパティ。
$(AndroidLintEnabled)=True の場合にのみ使用されます。
AndroidLintCheckIssues
チェックするlint問題のコンマ区切りリストである文字列プロパティ。
$(AndroidLintEnabled)=True の場合にのみ使用されます。
注: これらの問題のみがチェックされます。
Android管理シンボル
ファイル名と行番号の情報を Release スタック トレースから抽出できるように、シーケンス ポイントを生成するかどうかを制御するブール型プロパティ。
AndroidManifest
アプリの AndroidManifest.xml のテンプレートとして使用するファイル名を指定します。
ビルド時に、実際の AndroidManifest.xml を生成するためにその他の必要な値がマージされます。
$(AndroidManifest) は、/manifest/@package 属性にパッケージ名を含める必要があります。
AndroidManifestMerger
AndroidManifest.xml ファイルをマージするための実装を指定します。 これは、legacy が元の C# の実装を選択し、manifestmerger.jar が Google の Java 実装を選択する列挙型のプロパティです。
現在の既定値は manifestmerger.jar です。 古いバージョンを使用する場合は、csproj に次のコードを追加します
<AndroidManifestMerger>legacy</AndroidManifestMerger>
Google の統合によって、xmlns:tools="http://schemas.android.com/tools"がAndroid ドキュメントに記載されているサポートが有効になります。
AndroidManifestMergerExtraArgs
Android ドキュメント ツールに引数を指定する文字列プロパティ。
ツールからの詳細な出力が必要な場合は、.csproj に以下を追加できます。
<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>
AndroidManifestType
Xamarin または GoogleV2 の有効な値を持つ列挙型プロパティ。
これは、使用するリポジトリを制御します。
InstallAndroidDependencies どの Android パッケージとパッケージバージョンが利用可能で、インストール可能かを判断する対象です。
Xamarin は、Visual Studio SDK マネージャー内の許可された一覧 (推奨) リポジトリです。
GoogleV2 は、Visual Studio SDK マネージャー内のすべての一覧 (サポート対象外) リポジトリです。
$(AndroidManifestType)が設定されていない場合は、Xamarinが使用されます。
AndroidManifestPlaceholders
AndroidManifest.xml のキーと値の置換ペアのセミコロン区切りのリストです。各ペアの形式は key=value です。
たとえば、プロパティ値 assemblyName=$(AssemblyName) によって、${assemblyName} プレースホルダーが定義され、それは AndroidManifest.xml 内で使用できます。
<application android:label="${assemblyName}"
これにより、ビルド プロセスから AndroidManifest.xml ファイルに変数を挿入することができます。
AndroidMultiDexClassListExtraArgs
com.android.multidex.MainDexListBuilder ファイルを生成するときに、開発者が引数を multidex.keep に渡すことを許可する文字列プロパティ。
1 つの具体的なケースは、dx のコンパイル中に次のエラーが発生する場合です。
com.android.dex.DexException: Too many classes in --main-dex-list, main dex capacity exceeded
このエラーが発生している場合は、以下を .csproj に追加できます。
<DxExtraArguments>--force-jumbo </DxExtraArguments>
<AndroidMultiDexClassListExtraArgs>--disable-annotation-resolution-workaround</AndroidMultiDexClassListExtraArgs>
これにより、dx ステップが成功します。
アンドロイドパッケージフォーマット
apk または aab の有効な値を持つ列挙型プロパティ。 Android アプリケーションを APK ファイルまたは Android アプリ バンドルとしてパッケージ化するかどうかを示します。 アプリ バンドルは、Google Play での送信を目的とした Release ビルドの新しい形式です。 既定値は apk です。
$(AndroidPackageFormat) を aab に設定すると、Android アプリ バンドルに必要な他の MSBuild プロパティが設定されます。
-
$(AndroidUseAapt2)がTrueです。 -
$(AndroidUseApkSigner)がFalseです。 -
$(AndroidCreatePackagePerAbi)がFalseです。
このプロパティは、.NET 6 では非推奨になります。 ユーザーは新しい AndroidPackageFormats に切り替える必要があります。
アンドロイドパッケージフォーマット
セミコロン区切りのプロパティで、有効な値は apk と aab です。
Android アプリケーションを APK ファイルまたは Android アプリ バンドルとしてパッケージ化するかどうかを示します。 アプリ バンドルは、Google Play での送信を目的とした Release ビルドの新しい形式です。
リリース ビルドをビルドするときは、さまざまなストアに配布するために aab と apk の両方を生成する必要がある場合があります。
AndroidPackageFormats を aab;apk に設定すると、両方が生成されます。
AndroidPackageFormats を aab または apk のいずれかに設定すると、1 つのファイルのみが生成されます。
既定値は、aab;apk ビルドに対してのみReleaseです。
デバッグに apk を使用する方が高速ですが、必要に応じて高速展開で aab もサポートされます (アセット パックのテスト時など)。
AndroidPackageNamingPolicy
生成された Java ソース コードの Java パッケージ名を指定するための列挙型スタイルのプロパティ。
値 LowercaseCrc64 のみがサポートされています。
AndroidPrepareForBuildDependsOn
Android ビルド プロセスを拡張するために使用できるセミコロンで区切られたプロパティ。 このプロパティに追加された MSBuild ターゲットは、アプリケーション プロジェクトとライブラリ プロジェクトの両方の種類に対してビルドの早い段階で実行されます。 既定では、このプロパティは空です。
例:
<PropertyGroup>
<AndroidPrepareForBuildDependsOn>MyCustomTarget</AndroidPrepareForBuildDependsOn>
</PropertyGroup>
<Target Name="MyCustomTarget" >
<Message Text="Running target: 'MyCustomTarget'" Importance="high" />
</Target>
AndroidProguardMappingFile
-printmapping の proguard ルールをr8に指定します。 これは、mapping.txt ファイルが $(OutputPath) フォルダーに生成されることを意味します。 このファイルは、パッケージを Google Play ストアにアップロードするときに使用できます。
既定では、このファイルは AndroidLinkTool=r8 を使用すると自動的に生成され、次のファイル $(OutputPath)mapping.txt が生成されます。
このマッピング ファイルを生成したくない場合は、AndroidCreateProguardMappingFile プロパティを使用して作成を停止できます。
次を、プロジェクトに追加します。
<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>
または、コマンド ラインで -p:AndroidCreateProguardMappingFile=False を使用します。
AndroidD8IgnoreWarnings
--map-diagnostics warning infoに渡すd8を指定します。 既定値は True ですが、より厳密な動作を強制するために False を設定できます。 詳細については、 D8 と R8 のソース コード を参照してください。
.NET 8 で追加されました。
AndroidR8IgnoreWarnings
-ignorewarnings の proguard ルールをr8に指定します。 これにより、特定の警告が発生した場合でも、r8 で Dex コンパイルを使用して続けることができます。 既定値は True ですが、より厳密な動作を強制するために False を設定できます。 詳細については、ProGuard のマニュアルを参照してください。
.NET 8 以降では、 --map-diagnostics warning infoを指定します。 詳細については、 D8 と R8 のソース コード を参照してください。
AndroidR8JarPath
r8 dex コンパイラおよびシュリンカーで使用する r8.jar へのパス。 既定値は、.NET for Android ワークロードインストールへのパスです。 詳細については、D8 と R8 に関するドキュメントをご覧ください。
AndroidResgenExtraArgs
Android アセットとリソースを処理するときに、aapt コマンドに渡すコマンド ライン オプションを指定します。
AndroidResgenFile
生成するリソース ファイルの名前を指定します。 既定のテンプレートでは、これは Resource.designer.cs に設定されます。
AndroidResourceDesignerClassModifier
生成される中間 Resource クラスのクラス修飾子を指定します。 有効値は public または internal です。
既定では、これは publicされます。
.NET 9 で追加されました。
AndroidSdkBuildToolsVersion
Android SDK ビルド ツール パッケージは、特に、aapt および zipalign ツールを提供します。 複数の異なるバージョンのビルド ツール パッケージを同時にインストールすることができます。 パッケージ化するビルド ツール パッケージの選択は、"優先" ビルド ツールのバージョンをチェックして、ある場合はそれを使用して行われます。"優先" バージョンが "ない" 場合は、インストールされている最も高いバージョンのビルド ツール パッケージが使用されます。
$(AndroidSdkBuildToolsVersion) MSBuild プロパティには、優先ビルド ツールのバージョンが含まれています。 .NET for Android ビルド システムでは、 Xamarin.Android.Common.targetsの既定値が提供されます。また、以前の aapt バージョンが動作することがわかっている間に最新の aapt がクラッシュした場合など、プロジェクト ファイル内で既定値をオーバーライドして代替ビルド ツール バージョンを選択できます。
AndroidSigningKeyAlias
キーストア内のキーに別名を指定します。 これは、キーストアを作成するときに使用される keytool -alias 値です。
AndroidSigningKeyPass
キーストア ファイル内にあるキーのパスワードを指定します。 これは、keytool が Enter key password for $(AndroidSigningKeyAlias) ($(AndroidSigningKeyAlias) のキーのパスワードを入力) を求めたときに入力される値です。
このプロパティは env: プレフィクスと file: のプレフィクスもサポートし、これらのプレフィクスを使って、パスワードが格納された環境変数やファイルを指定できます。
これらのオプションを使用すると、ビルド ログにパスワードが表示されないようにすることができます。
たとえば、AndroidSigningPassword という名前の環境変数を使用するには、次のようにします。
<PropertyGroup>
<AndroidSigningKeyPass>env:AndroidSigningPassword</AndroidSigningKeyPass>
</PropertyGroup>
C:\Users\user1\AndroidSigningPassword.txt にあるファイルを使用するには、次のようにします。
<PropertyGroup>
<AndroidSigningKeyPass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>
注意
env: プレフィックスは、$(AndroidPackageFormat) が aab に設定されている場合はサポートされません。
AndroidSigningKeyStore
keytool で作成されたキーストア ファイルのファイル名を指定します。 これは、keytool -keystore オプションで指定された値に対応します。
Androidサイニングストアパス
$(AndroidSigningKeyStore) へのパスワードを指定します。
これは、キーストア ファイルを作成していて、keytool (キーストア パスワードを入力) で求められたときに、 に指定する値です。
このプロパティは env: プレフィクスと file: のプレフィクスもサポートし、これらのプレフィクスを使って、パスワードが格納された環境変数やファイルを指定できます。 これらのオプションを使用すると、ビルド ログにパスワードが表示されないようにすることができます。
たとえば、AndroidSigningPassword という名前の環境変数を使用するには、次のようにします。
<PropertyGroup>
<AndroidSigningStorePass>env:AndroidSigningPassword</AndroidSigningStorePass>
</PropertyGroup>
C:\Users\user1\AndroidSigningPassword.txt にあるファイルを使用するには、次のようにします。
<PropertyGroup>
<AndroidSigningStorePass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningStorePass>
</PropertyGroup>
注意
env: プレフィックスは、$(AndroidPackageFormat) が aab に設定されている場合はサポートされません。
AndroidSigningPlatformKey
apk の署名に使用するキー ファイルを指定します。
これは system アプリケーションをビルドするときにのみ使用されます。
Android署名プラットフォーム証明書
apk の署名に使用する証明書ファイルを指定します。
これは system アプリケーションをビルドするときにのみ使用されます。
AndroidStripILAfterAOT
AOT コンパイル メソッドの メソッド本体 を削除するかどうかを指定する bool プロパティ。
既定値は falseであり、AOT コンパイル済みメソッドのメソッド本体 削除されません 。
trueに設定すると、$(AndroidEnableProfiledAot)は既定でfalseに設定されます。
つまり、リリース構成ビルドでは、$(RunAOTCompilation) が既定で true されます。つまり、AOT は すべての部分に対して有効化されます。
これにより、アプリのサイズが増える可能性があります。 この動作は、 $(AndroidEnableProfiledAot) をプロジェクト ファイル内の true に明示的に設定することでオーバーライドできます。
このプロパティの試験的なサポートは .NET 8 で追加され、.NET 10 では削除されました。
AndroidStripNativeLibraries
ネイティブ共有ライブラリ (.so ファイル) からデバッグ シンボルを削除するようにパッケージ化プロセスに指示する bool プロパティ。
既定値は false であり、パッケージ化時にデバッグ シンボル (存在する場合) は保持されます。
AndroidSupportedAbis
; に含める必要がある ABI のセミコロン (.apk) で区切られたリストを含む文字列プロパティ。
サポートされている値は次のとおりです。
armeabi-v7ax86arm64-v8ax86_64
AndroidTlsProvider
このプロパティは廃止されているため、使用しないでください。
AndroidUseAapt2
これは Xamarin.Android プロパティで、.NET for Android には影響しません。
aapt2 は常に使用され、無効にすることはできません。
AndroidUseApkSigner
apksigner ではなく jarsigner ツールを使用することを開発者に許可するブール型プロパティ。
AndroidUseDefaultAotProfile
開発者が既定の AOT プロファイルの使用を抑制できるようにするブール型プロパティ。
既定の AOT プロファイルを抑制するには、このプロパティを false に設定します。
AndroidUseDesignerAssembly
ビルド システムが_Microsoft.Android.Resource.Designer.dllファイルではなくResource.Designer.csファイルを生成するかどうかを制御する bool プロパティ。 この利点は、アプリケーションが小さくなり、起動時間が短縮されるという利点があります。
既定値は .NET 8 で true されます。
下位互換性を維持する場合は、Nuget 作成者として 3 つのバージョンのアセンブリを出荷することをお勧めします。
1 つは MonoAndroid 用、1 つは net6.0-android 用、1 つは net8.0-android 用です。 これを行うには、 Xamarin.Legacy.Sdk を使用します。 これは、Nuget ライブラリ プロジェクトがプロジェクト内の AndroidResource 項目を使用する場合、または依存関係を介して使用する場合にのみ必要です。
<TargetFrameworks>monoandroid90;net6.0-android;net8.0-android</TargetFrameworks>
または、クラシックと net7.0-android の両方が非推奨になるまで、この設定をオフにします。
この設定をオフにすることを選択した .NET 8 プロジェクトでは、それを使用する参照を使用できません。 この機能が有効になっていないプロジェクトでこの機能が有効になっているアセンブリを使用しようとすると、 XA1034 ビルド エラーが発生します。
.NET 8 で追加されました。
AndroidUseInterpreter
.apk に通常の JIT ではなく mono インタープリターが含まれるようにするブール型のプロパティです。
試験的です。
AndroidUseLegacyVersionCode
開発者が versionCode の計算を Xamarin.Android 8.2 前の動作に戻すことを許可するブール型プロパティ。 これは、Google Play ストアに既存のアプリケーションがある開発者に向けてのみ使用する必要があります。 新しい $(AndroidVersionCodePattern) プロパティを使用することを強くお勧めします。
AndroidUseManagedDesignTimeResourceGenerator
デザイン時のビルドを、aapt ではなく管理対象リソース パーサーの使用に切り替えるブール型プロパティ。
AndroidUseNegotiateAuthentication
AndroidMessageHandlerでの NTLMv2/Negotiate 認証のサポートを有効にするブール型プロパティ。 既定値は Falseです。
.NET 7 で追加されました。
AndroidUseSharedRuntime
このプロパティは廃止されているため、使用しないでください。
AndroidVersionCode
/manifest/@android:versionCode ファイル内の AndroidManifest.xml の代替として使用できる MSBuild プロパティ。 この機能をオプトインするには、<GenerateApplicationManifest>true</GenerateApplicationManifest> も有効にする必要があります。
.NET 6 では今後、これが既定値になります。
$(AndroidCreatePackagePerAbi) と $(AndroidVersionCodePattern) が使用されている場合、このプロパティは無視されます。
@android:versionCode は、Google Play リリースごとにインクリメントする必要がある整数値です。
Android ドキュメントを参照して、/manifest/@android:versionCodeの要件の詳細を確認してください。
Androidバージョンコードパターン
開発者がマニフェスト内の versionCode をカスタマイズできるようにする文字列プロパティ。
の決定に関する情報は、「versionCode」 (APK のバージョン コードの作成) を参照してください。
いくつかの例では、abi が armeabi でマニフェスト内の versionCode が 123 の場合、{abi}{versionCode} が True のときには 1123 により $(AndroidCreatePackagePerAbi) の versionCode が生成され、それ以外のときは 123 の値が生成されます。
abi が x86_64 でマニフェスト内の versionCode は 44 です。 これにより、544 が True の場合には $(AndroidCreatePackagePerAbi) が生成され、それ以外の場合は 44 の値が生成されます。
{abi}{versionCode:0000} を 50044 でレフト パディングしているため、レフト パディングの書式文字列 versionCode を含めると、0 が生成されます。 または、 などの 10 進パディングを使用することもできます。
{abi}{versionCode:D4} は前の例と同じ動作になります。
値は整数である必要があるため、'0' と 'Dx' のパディングの書式文字列のみがサポートされます。
事前定義済みのキー項目
abi - アプリのターゲットとなる abi を挿入します
- 2 –
armeabi-v7a - 3 -
x86 - 4 -
arm64-v8a - 5 -
x86_64
- 2 –
minSDK -
AndroidManifest.xmlからサポートされている Sdk の最小値を挿入するか、定義されていない場合は11を挿入します。versionCode -
Properties\AndroidManifest.xmlから直接バージョン コードを使用します。
$(AndroidVersionCodeProperties) プロパティ (次で定義) を使用してカスタム項目を定義することができます。
既定では、値は {abi}{versionCode:D6} に設定されます。 開発者が古い動作を保持する必要がある場合は、$(AndroidUseLegacyVersionCode) プロパティを true に設定することで既定値をオーバーライドできます。
AndroidVersionCodeProperties
$(AndroidVersionCodePattern) で使用するために、開発者がカスタム項目を定義できるようにする文字列プロパティ。
これらは key=value ペアの形式です。
value 内のすべての項目は整数値である必要があります。 (例: screen=23;target=$(_AndroidApiLevel))。 ご覧のとおり、既存またはカスタムの MSBuild プロパティを文字列で利用することができます。
ApplicationId
/manifest/@package ファイル内の AndroidManifest.xml の代替として使用できる MSBuild プロパティ。 この機能をオプトインするには、<GenerateApplicationManifest>true</GenerateApplicationManifest> も有効にする必要があります。
.NET 6 では今後、これが既定値になります。
Android ドキュメントを参照して、/manifest/@packageの要件の詳細を確認してください。
アプリケーションタイトル
/manifest/application/@android:label ファイル内の AndroidManifest.xml の代替として使用できる MSBuild プロパティ。 この機能をオプトインするには、<GenerateApplicationManifest>true</GenerateApplicationManifest> も有効にする必要があります。
.NET 6 では今後、これが既定値になります。
Android ドキュメントを参照して、/manifest/application/@android:labelの要件の詳細を確認してください。
アプリケーションバージョン
/manifest/@android:versionName ファイル内の AndroidManifest.xml の代替として使用できる MSBuild プロパティ。 この機能をオプトインするには、<GenerateApplicationManifest>true</GenerateApplicationManifest> も有効にする必要があります。
.NET 6 では今後、これが既定値になります。
Android ドキュメントを参照して、/manifest/@android:versionNameの要件の詳細を確認してください。
AotAssemblies
アセンブリをネイティブ コードにコンパイルし、アプリケーションに含めるかどうかを決定するブール型プロパティ。
このプロパティは既定で False です。
.NET 7 では非推奨です。
$(RunAOTCompilation)のサポートは今後のリリースで削除されるため、代わりに新しい$(AotAssemblies) MSBuild プロパティに移行してください。
AProfUtilExtraOptions
aprofutil に渡す追加のオプション。
BeforeBuildAndroidAssetPacks
このプロパティに記載されている MSBuild ターゲットは、 AssetPack 項目がビルドされる直前に実行されます。
.NET 9 で追加
BeforeGenerateAndroidManifest
このプロパティに一覧表示されている MSBuild ターゲットは、_GenerateJavaStubs の前に直接実行されます。
構成
使用するビルド構成 ("Debug" や "Release" など) を指定します。 Configuration プロパティは、ターゲットの動作を決定するその他のプロパティの既定値を決定するために使用されます。 追加の構成は、IDE 内で作成できます。
既定では、 構成によって、Debug
Install および
SignAndroidPackage は、動作するために他のファイルやパッケージの存在を必要とする、より小さい Android パッケージを作成することを目的としています。
既定の Release 構成によって
Install および
SignAndroidPackage 単独で動作する Android パッケージの作成を目指します。これにより、他のパッケージやファイルをインストールせずに使用できます。
デバッグシンボル
プロパティと組み合わせて、Android パッケージが "デバッグ可能" かどうかを決定するブール値。$(DebugType)
デバッグ可能なパッケージは、デバッグ シンボルを含んでいて、//application/@android:debuggable 属性を true に設定し、自動的に追加します。
INTERNET のアクセス許可を追加して、デバッガーがプロセスにアタッチする。
DebugSymbols が True "かつ" DebugType が空の文字列または Full の場合、アプリケーションはデバッグ可能です。
DebugType
ビルドの一部として生成するためのデバッグ シンボルの型を指定します。これはアプリケーションがデバッグ可能かどうかにも影響します。 考えられる値:
Full: 完全なシンボルが生成されます。 もし
DebugSymbolsMSBuild プロパティもTrueの場合、アプリケーション パッケージはデバッグ可能です。PdbOnly: "PDB" シンボルが生成されます。 アプリケーション パッケージはデバッグ可能ではありません。
DebugType が設定されていないか、空の文字列の場合、DebugSymbols プロパティが、アプリケーションがデバッグ可能かどうかを制御します。
デバイス
デバイス (dotnet run --device <Device>、Run、Installなど) と対話するUninstallまたは MSBuild ターゲットを使用する場合にターゲットとする Android デバイスまたはエミュレーターを指定します。
値は、 adb devicesによって返される完全なデバイスのシリアル番号または識別子である必要があります。 たとえば、デバイスのシリアルが emulator-5554されている場合は、 -p:Device=emulator-5554を使用する必要があります。
このプロパティを設定すると、値AdbTargetを使用して -s "<Device>" プロパティを初期化するために使用されます。
デバイスの選択の詳細については、 .NET SDK デバイスの選択仕様を参照してください。
診断アドレス
dotnet-dsrouter、127.0.0.1または$(DiagnosticConfiguration)の IP アドレス コンポーネントなど、$DOTNET_DiagnosticPortsによって提供される値。
Mono 診断コンポーネントを暗黙的に有効にします。つまり、 $(EnableDiagnostics)/$(AndroidEnableProfiler) は true に設定されます。
既定値は 127.0.0.1 です。
診断設定
dotnet-dsrouterのために$DOTNET_DiagnosticPortsによって提供される値は次のようになります。
127.0.0.1:9000,suspend,connect127.0.0.1:9000,nosuspend,connect
コマンド ラインで,に渡された場合、%2c文字は dotnet build でエスケープする必要があることに注意してください。
dotnet build -c Release -p:DiagnosticConfiguration=127.0.0.1:9000%2csuspend%2cconnect
これにより、アプリケーション内にパッケージ化された $DOTNET_DiagnosticPorts 環境変数が自動的に設定されます。
Mono 診断コンポーネントを暗黙的に有効にします。つまり、 $(EnableDiagnostics)/$(AndroidEnableProfiler) は true に設定されます。
DiagnosticListenMode
dotnet-dsrouter、connect、または$(DiagnosticConfiguration)のリッスンモードコンポーネントなど、$DOTNET_DiagnosticPortsによって提供される値。
Mono 診断コンポーネントを暗黙的に有効にします。つまり、 $(EnableDiagnostics)/$(AndroidEnableProfiler) は true に設定されます。
既定値は connect です。
DiagnosticPort
dotnet-dsrouter、9000または$(DiagnosticConfiguration)のポート コンポーネントなど、$DOTNET_DiagnosticPortsによって提供される値。
Mono 診断コンポーネントを暗黙的に有効にします。つまり、 $(EnableDiagnostics)/$(AndroidEnableProfiler) は true に設定されます。
既定値は 9000 です。
DiagnosticSuspend (ダイアグノスティックサスペンド)
dotnet-dsrouterやtrue/suspend、false/nosuspendまたは$(DiagnosticConfiguration)のコンポーネントなど、$DOTNET_DiagnosticPortsによって提供されるブール値。
Mono 診断コンポーネントを暗黙的に有効にします。つまり、 $(EnableDiagnostics)/$(AndroidEnableProfiler) は true に設定されます。
既定値は false です。
EmbedAssembliesIntoApk
アプリのアセンブリをアプリケーション パッケージに埋め込む必要があるかどうかを決定するブール型プロパティ。
このプロパティは、リリース ビルドには True、デバッグ ビルドには False にする必要があります。 高速展開でターゲット デバイスがサポートされない場合は、デバッグ ビルドでこのプロパティを にする必要があるTrue。
このプロパティが False の場合、
$(AndroidFastDeploymentType) MSBuild プロパティは、 .apk または .aabに埋め込まれるものも制御します。これは、デプロイと再構築の時間に影響する可能性があります。
診断機能を有効化
$(AndroidEnableProfiler) プロパティのシノニム。
Android アプリケーションで dotnet-trace または dotnet-gcdump を使用する場合に必要です。
trueに設定すると、Mono 診断コンポーネントがアプリケーションに含まれます。 このコンポーネントは、 libmono-component-diagnostics_tracing.so ネイティブ ライブラリです。
このプロパティは既定で False です。
EnableLLVM
アセンブリをネイティブ コードに Ahead-of-Time コンパイルするときに、LLVM を使用するかどうかを決定するブール型プロパティ。
このプロパティが有効になっているプロジェクトをビルドするには、Android NDK がインストールされている必要があります。
このプロパティは既定で False です。
$(AotAssemblies) MSBuild プロパティが True でない限り、このプロパティは無視されます。
EnableProguard
proguard を Java コードをリンクするパッケージ化プロセスの一部として実行するかどうかを決定するブール型プロパティ。
このプロパティは既定で False です。
True の場合、@(ProguardConfiguration) ファイルは proguard の実行を制御するために使用されます。
EventSourceSupport
falseに設定すると、トリミングされた Android アプリケーションで .NET の EventSource のサポートが無効になります。 この機能を無効にすると、 dotnet-counters などの .NET 診断ツールは機能しなくなりますが、アプリケーション サイズが小さいという利点があります。
falseまたはReleaseが有効になっていない限り、$(EnableDiagnostics) モードでは既定で$(AndroidEnableProfiler)に設定されます。
アプリケーションマニフェストを生成する
最終的な AndroidManifest.xml ファイルに値を出力する次の MSBuild プロパティを有効または無効にします。
既定値 $(GenerateApplicationManifest) は trueです。
JavaMaximumHeapSize
java プロパティで指定された値を使用して、パッケージ化プロセスの一部として -Xmx.dex ファイルをビルドします。 指定されていない場合、-Xmx オプションでは java に 1G の値が指定されます。 その他のプラットフォームに比べて、Windows では一般的にこの値が必要なことがわかりました。
_CompileDex ターゲットが java.lang.OutOfMemoryError をスローする場合には、このプロパティを指定する必要があります。
以下を変更することで値をカスタマイズします。
<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
JavaOptions
java ファイルのビルド時に、.dex に渡すコマンドラインオプションを指定します。
JarsignerTimestampAuthorityCertificateAlias
このプロパティを使用すると、タイムスタンプ認証機関のキーストアに別名を指定できます。 詳細については、Java の署名のタイムスタンプのサポートに関するドキュメントを参照してください。
<PropertyGroup>
<JarsignerTimestampAuthorityCertificateAlias>Alias</JarsignerTimestampAuthorityCertificateAlias>
</PropertyGroup>
JarsignerTimestampAuthorityUrl
このプロパティでは、タイムスタンプ機関サービスへの URL を指定できます。 これを使用して、.apk 署名に確実にタイムスタンプを含めるようにすることができます。
詳細については、Java の署名のタイムスタンプのサポートに関するドキュメントを参照してください。
<PropertyGroup>
<JarsignerTimestampAuthorityUrl>http://example.tsa.url</JarsignerTimestampAuthorityUrl>
</PropertyGroup>
LinkerDumpDependencies
リンカーの依存関係ファイルの生成を有効にするブール型プロパティ。 このファイルは、illinkanalyzer ツールに対する入力として使用できます。
linker-dependencies.xml.gz という名前の依存関係ファイルがプロジェクト ディレクトリに書き込まれます。 .NET5 または 6 では、obj/<Configuration>/android<ABI>/linked ディレクトリ内のリンク アセンブリの横に書き込まれます。
既定値は Falseです。
MandroidI18n
この MSBuild プロパティは廃止され、サポートされなくなりました。
MetricsSupport
falseに設定すると、トリミングされた Android アプリケーション向けの .NET の メトリック サポートが無効になります。 この機能を無効にすると、 System.Diagnostics.Metrics などの API は機能しなくなりますが、アプリケーション サイズが小さくなるという利点があります。
falseまたはReleaseが有効になっていない限り、$(EnableDiagnostics) モードでは既定で$(AndroidEnableProfiler)に設定されます。
MonoAndroidAssetPrefix
ファイル名の先頭から削除される "パス プレフィックス" を、AndroidAsset として指定します。 これにより、リソースがある場所を変更することができます。
既定値は Assets です。 Java プロジェクトの構造には、これを assets に変更します。
MonoAndroidResourcePrefix
ファイル名の先頭から削除される "パス プレフィックス" を、AndroidResource として指定します。 これにより、リソースがある場所を変更することができます。
既定値は Resources です。 Java プロジェクトの構造には、これを res に変更します。
MonoSymbolArchive
注意
これは Xamarin.Android のレガシ MSBuild プロパティでした。 .NET 6 以降では使用できません。
"実際の" ファイル名と行番号の情報をリリース スタック トレースから抽出するために、後で .mSYM で使用するための mono-symbolicate 成果物を作成するかどうかを制御するブール型プロパティ。
これは、デバッグ シンボルが有効になっている リリース アプリ に対しては、既定で True になっています: $(EmbedAssembliesIntoApk) が True、
$(DebugSymbols) が True であり、
$(Optimize) が True。
RunAOTCompilation
アセンブリをネイティブ コードにコンパイルし、アプリケーションに含めるかどうかを決定するブール型プロパティ。
このプロパティは、False ビルドでは既定でDebugされ、True ビルドの場合は既定でReleaseされます。
この MSBuild プロパティは、Xamarin.Android の msBuild プロパティ $(AotAssemblies) 置き換えます。 これは、Blazor WASM に使用されるのと同じプロパティです。
WaitForExit
Android アプリケーションを起動するときの dotnet run の動作を制御するブール型プロパティ。
$(WaitForExit)がfalseされていない場合 (既定値)、dotnet runは次のようになります。
- Android アプリケーションを起動する
- アプリケーションのプロセス用にフィルター処理されたストリーム
logcat出力 - アプリケーションが終了するか、ユーザーが Ctrl + C キーを押すのを待ちます
- Ctrl + C キーを押したときにアプリケーションを強制停止する
$(WaitForExit)がfalseされると、dotnet runは単にadb shell am startを使用してアプリケーションを起動し、アプリケーションの終了や出力のストリーミングを待たずに直ちに戻ります。
.NET 11 で導入されました。