[ビルド プロパティ]

MSBuild プロパティは、ターゲットの動作を制御します。 これらは、MSBuild PropertyGroup 内のプロジェクト ファイル (MyApp.csproj など) 内で指定されます。

AdbTarget

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

AfterGenerateAndroidManifest

このプロパティに一覧表示された MSBuild ターゲットは、$(IntermediateOutputPath)AndroidManifest.xml ファイルが生成される場所である内部の _GenerateJavaStubs ターゲットの直後に実行されます。 生成された AndroidManifest.xml ファイルに変更を加える場合、この拡張ポイントを使用して行うことができます。

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

AndroidAapt2CompileExtraArgs

Android アセットとリソースを処理するときに、aapt2 compile コマンドに渡すコマンド ライン オプションを指定します。

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

AndroidAapt2LinkExtraArgs

Android アセットとリソースを処理するときに、aapt2 link コマンドに渡すコマンド ライン オプションを指定します。

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

AndroidAddKeepAlives

オブジェクトが早期に収集されないように、リンカーによってバインド プロジェクト内に GC.KeepAlive() 呼び出しを挿入するかどうかを制御するブール型プロパティ。

リリース構成のビルドの既定値は True です。

このプロパティは、Xamarin.Android 11.2 で追加されました。

AndroidAotAdditionalArguments

$(AndroidEnableProfiledAot) または $(AotAssemblies)true に設定されているプロジェクトの Aot タスク中に、Mono コンパイラにオプションを渡すことができるようにする文字列プロパティ。 Mono クロスコンパイラを呼び出すときに、プロパティの文字列値が応答ファイルに追加されます。

一般に、このプロパティは空白のままにしておく必要がありますが、特殊なシナリオでは、柔軟性が向上する場合があります。

$(AndroidAotAdditionalArguments) プロパティは、関連する $(AndroidExtraAotOptions) プロパティとは異なります。$(AndroidAotAdditionalArguments) は、--verbose--debug などの完全なスタンドアロンのスペース区切りオプションを AOT コンパイラに渡します。一方、$(AndroidExtraAotOptions) には、AOT コンパイラの --aot オプションの一部であるコンマ区切りの引数が含まれます。

AndroidAotCustomProfilePath

プロファイラー データを保持するために aprofutil が作成する必要があるファイル。

AndroidAotProfiles

開発者がコマンド ラインから AOT プロファイルを追加できるようにする文字列プロパティ。 セミコロンまたはコンマで区切られた絶対パスの一覧です。 Xamarin.Android 10.1 で追加されました。

AndroidAotProfilerPort

プロファイル データを取得するときに aprofutil が接続する必要があるポート。

AndroidAotEnableLazyLoad

起動時に AOT-d アセンブリの事前読み込みではなく、遅延読み込みを有効にします。 任意の形式の AOT が有効になっているリリース ビルドの場合、既定値は True です。

.NET 6 で導入されました。

AndroidApkDigestAlgorithm

jarsigner -digestalg で使用するダイジェスト アルゴリズムを指定する文字列値。

既定値は SHA-256 です。 Xamarin.Android 10.0 以前では、既定値は SHA1 でした。

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

AndroidApkSignerAdditionalArguments

開発者が apksigner ツールに引数を指定することを許可する文字列プロパティ。

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

AndroidApkSigningAlgorithm

jarsigner -sigalg で使用する署名アルゴリズムを指定する文字列値。

既定値は SHA256withRSA です。 Xamarin.Android 10.0 以前では、既定値は md5withRSA でした。

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

AndroidApplication

プロジェクトが Android アプリケーション用 (True) か、または Android ライブラリ プロジェクト用 (False または存在しない) かを示すブール値。

<AndroidApplication>True</AndroidApplication> を持つプロジェクトは、Android パッケージ内に 1 つしか存在できない場合があります (残念ながら、この要件は検証されていないため、Android リソースに関する分かりにくい突拍子のないエラーが発生する可能性があります)。

AndroidApplicationJavaClass

Android.App.Application からクラスを継承するときに、android.app.Application の代わりに使用する完全な Java クラス名。

$(AndroidApplicationJavaClass) プロパティは通常、$(AndroidEnableMultiDex) MSBuild プロパティなどの "他の" プロパティによって設定されます。

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

AndroidBinUtilsPath

ld、ネイティブ リンカー、as、ネイティブ アセンブラーなどの Android binutils が格納されているディレクトリへのパス。 これらのツールは、Xamarin.Android のインストールに含まれています。

既定値は $(MonoAndroidBinDirectory)\binutils\bin\ です。

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

AndroidBoundExceptionType

Xamarin.Android が提供する型によって Java 型の観点から .NET の型またはインターフェイスが実装される場合に (たとえば、Android.Runtime.InputStreamInvokerSystem.IO.Stream または Android.Runtime.JavaDictionarySystem.Collections.IDictionary)、例外を伝播する方法を指定する文字列値。

  • Java: 元の Java 例外の型はそのまま伝播されます。

    Java は、たとえば、InputStreamInvokerSystem.IO.Stream API を適切に実装していないことを意味します。これは、Stream.Read() から System.IO.IOException ではなく Java.IO.IOException がスローされる可能性があるためです。

    Java は、Xamarin.Android 13.0 を含むすべての Xamarin.Android リリースにおける例外伝播動作です。

  • System: 元の Java 例外の型がキャッチされ、適切な .NET 例外の型でラップされます。

    System は、たとえば、InputStreamInvokerSystem.IO.Stream を正しく実装し、Stream.Read()Java.IO.IOException インスタンスをスロー "しない" ことを意味します。 (代わりに、Exception.InnerException の値として Java.IO.IOException を含む System.IO.IOException をスローする場合があります)。

    .NET 6.0 の既定値は System です。

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

AndroidBoundInterfacesContainConstants

インターフェイスのバインド定数をサポートするかどうか、または IMyInterfaceConsts クラスを作成する回避策を使用するかどうかを決定するブール型プロパティ。

既定値は、.NET 6 では True、レガシの場合は False です。

AndroidBoundInterfacesContainStaticAndDefaultInterfaceMethods

インターフェイスの既定のメンバーと静的メンバーをサポートするかどうか、または abstract class MyInterface のような静的メンバーを含む兄弟クラスを作成する以前の回避策をサポートするかどうかを示すブール型プロパティ。

既定値は、.NET 6 では True、レガシの場合は False です。

AndroidBoundInterfacesContainTypes

インターフェイスで入れ子になった型をサポートするかどうか、または IMyInterfaceMyNestedClass のような入れ子になっていない型を作成する回避策をサポートするかどうかを示すブール型プロパティ。

既定値は、.NET 6 では True、レガシの場合は False です。

AndroidBuildApplicationPackage

パッケージ (.apk) を作成して署名するかどうかを示すブール値。 この値を True に設定することは、SignAndroidPackage ビルド ターゲットを使用することと同じです。

このプロパティのサポートは、Xamarin.Android 7.1 以降で追加されました。

このプロパティは既定で False です。

AndroidBundleConfigurationFile

Android アプリ バンドルをビルドするときに bundletool構成ファイルとして使用するファイル名を指定します。 このファイルは、APK を生成するためのどのディメンションでバンドルを分割するかなど、バンドルから APK を生成する方法のいくつかの側面を制御します。 Xamarin.Android では、圧縮しないままにするファイル拡張子の一覧など、これらの設定の一部が自動的に構成されます。

このプロパティが意味をなすのは、$(AndroidPackageFormat)aab に設定されている場合のみです。

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

AndroidBundleToolExtraArgs

アプリ バンドルをビルドするときに bundletool コマンドに渡すコマンド ライン オプションを指定します。

このプロパティは、Xamarin.Android 11.3 で追加されました。

AndroidClassParser

.jar ファイルの解析方法を制御する文字列プロパティ。 使用可能な値 :

  • class-parse: JVM を利用せずに、class-parse.exe を使用して直接 Java バイトコードを解析します。

  • jar2xml: Java リフレクションを使用して .jar ファイルから型とメンバーを抽出するには、jar2xml.jar を使用します。

jar2xml よりも優れている class-parse の利点は次のとおりです。

  • class-parse は、"デバッグ" シンボル (javac -g でコンパイルされたバイトコード) を含む Java バイトコードからパラメータ名を抽出できます。

  • class-parse は、解決できない型のメンバーから継承するクラスやそのようなメンバーが含まれるクラスを "スキップ" しません。

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

既定値は、"レガシ" Xamarin.Android では jar2xml、.NET 6 以上では class-parse です。

jar2xml のサポートは廃止され、jar2xml は .NET 6 で削除されました。

AndroidCodegenTarget

コード生成ターゲット ABI を制御する文字列プロパティ。 使用可能な値 :

  • XamarinAndroid: Mono for Android 1.0 以降に付属している JNI バインド API を使用します。 Xamarin.Android 5.0 以降でビルドされたバインドのアセンブリは、Xamarin.Android 5.0 以降 (API/ABI 追加機能) でないと実行できませんが、ソースは前の製品バージョンと互換性があります。

  • XAJavaInterop1: JNI の呼び出しに Java.Interop を使用します。 XAJavaInterop1 を使用したバインドのアセンブリは、Xamarin.Android 6.1 以降でのみビルドおよび実行できます。 Xamarin.Android 6.1 以降は、この値で Mono.Android.dll をバインドします。

XAJavaInterop1 には次の利点があります。

  • より小さなアセンブリ。

  • 継承階層の他のバインドの種類がすべて XAJavaInterop1 以降でビルドされる限り、base メソッドの呼び出しに jmethodID キャッシュを使用。

  • マネージド サブクラスに対して Java 呼び出し可能ラッパー コンストラクターに jmethodID キャッシュを使用。

既定値は XAJavaInterop1 です。

XamarinAndroid のサポートは廃止されており、.NET 6 の一環として XamarinAndroid のサポートは削除されます。

AndroidCreatePackagePerAbi

1 つの .apk ですべての ABI をサポートするのでなく、($(AndroidSupportedAbis) で指定された ABI ごとに 1 つ) ファイルの "セット" を作成する必要があるかどうかを決定するブール型プロパティ。

ABI 固有の APK のビルド」ガイドも参照してください。

AndroidCreateProguardMappingFile

ビルド プロセスの一部として ProGuard マッピング ファイルを生成さするかどうかを制御するブール型プロパティ。

csproj に以下を追加するとファイルが生成され、AndroidProguardMappingFile プロパティを使用して最終的なマッピング ファイルの場所が制御されます。

<AndroidCreateProguardMappingFile>True</AndroidCreateProguardMappingFile>

.aab ファイルを生成すると、マッピング ファイルがパッケージに自動的に含まれます。 Google Play ストアに手動でアップロードする必要はありません。 .apk ファイルを使用する場合は、AndroidProguardMappingFile を手動でアップロードする必要があります。

$(AndroidLinkTool)=r8 を使用する場合、既定値は True です。

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

AndroidDebugKeyAlgorithm

debug.keystore 用に使用する既定のアルゴリズムを指定します。 既定値は RSA です。

AndroidDebugKeyValidity

debug.keystore 用に使用する既定の有効性を指定します。 既定値は 1095030 * 365 または 30 years です。

AndroidDebugStoreType

debug.keystore に使用するキー ストア ファイル形式を指定します。 既定値は pkcs12 です。

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

AndroidDeviceUserId

ゲストまたは職場のアカウントでアプリケーションを展開およびデバッグできるようにします。 値は、次の adb コマンドから取得した uid 値です。

adb shell pm list users

上記のコマンドにより次のデータが返されます。

Users:
	UserInfo{0:Owner:c13} running
	UserInfo{10:Guest:404}

uid は最初の整数値です。 上記の出力では、010 です。

$(AndroidDeviceUserId) プロパティは、Xamarin.Android 11.2 で追加されました。

AndroidDexTool

dx または d8 の有効な値の列挙方式のプロパティ。 Xamarin.Android のビルド プロセス中に使用される Android の dex コンパイラを示します。 既定値は dx です。 D8 と R8 に関するドキュメントを参照してください。

AndroidEnableDesugar

desugar が有効かどうかを決定するブール型プロパティ。 現在、Android ではすべての Java 8 機能がサポートされておらず、javac コンパイラの出力に desugar と呼ばれるバイトコード変換を実行して、既定のツールチェーンにより新しい言語機能が実装されています。 既定値は、$(AndroidDexTool)=dx を使用する場合は False$(AndroidDexTool)=d8 を使用する場合は True です。

AndroidEnableGooglePlayStoreChecks

開発者が次の Google Play ストア チェックを無効にできるようにするブール型プロパティ: XA1004、XA1005、および XA1006。 これらのチェックを無効にすることは、Google Play ストアを対象としておらず、このチェックを実行したくない開発者にとって役立ちます。

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

AndroidEnableMultiDex

最終的な .apk で Multi-Dex サポートを使用するかどうかを決定するブール型プロパティ。

このプロパティのサポートは、Xamarin.Android 5.1 で追加されました。

このプロパティは既定で False です。

AndroidEnablePreloadAssemblies

アプリケーション パッケージ内でバンドルされているすべてのマネージド アセンブリを、プロセスの起動中に読み込むかどうかを制御するブール型プロパティ。

True に設定すると、アプリケーション コードが呼び出される前に、アプリケーション パッケージ内でバンドルされているすべてのアセンブリがプロセスの起動中に読み込まれます。 アセンブリの事前読み込みは、Xamarin.Android が行う処理です。

False に設定すると、アセンブリは必要な場合にのみ読み込まれます。 必要に応じてアセンブリを読み込むと、アプリケーションの起動がより高速になり、デスクトップの .NET セマンティクスとの整合性も高まります。 時間の短縮を確認したい場合は、timing を含めるよう debug.mono.log システム プロパティを設定して、adb logcat 内で Finished loading assemblies: preloaded メッセージを探します。

依存関係の挿入を使うアプリケーションまたはライブラリでは、それらが同じように AppDomain.CurrentDomain.GetAssemblies() でアプリケーション バンドル内のすべてのアセンブリを返すことが必要な場合、それ以外ではアセンブリが必要なかった場合でも、このプロパティが True になることを "必要とする" 場合があります。

既定では、この値は Xamarin.Android の場合は True に設定され、.NET 6 以降のビルドの場合は False に設定されます。

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

AndroidEnableProfiledAot

Ahead-of-Time コンパイル中に AOT プロファイルを使用するかどうかを決定するブール型プロパティ。

該当するプロファイルは、@(AndroidAotProfile) 項目グループに一覧表示されます。 この項目グループには、既定のプロファイルが含まれています。 既存のものを削除し、独自の AOT プロファイルを追加することで上書きできます。

このプロパティのサポートは、Xamarin.Android 9.4 で追加されました。

このプロパティは既定で False です。

AndroidEnableSGenConcurrent

Mono の同時 GC コレクターを使用するかどうかを決定するブール型プロパティ。

このプロパティのサポートは、Xamarin.Android 7.2 で追加されました。

このプロパティは既定で False です。

AndroidErrorOnCustomJavaObject

Java.Lang.Object または Java.Lang.Throwable を継承 "することなく"、型が Android.Runtime.IJavaObject を実装するかどうかを決定するブール型プロパティ。

class BadType : IJavaObject {
    public IntPtr Handle {
        get {return IntPtr.Zero;}
    }

    public void Dispose()
    {
    }
}

True の場合、このような型は XA4212 エラーを生成し、それ以外の場合は XA4212 警告を生成します。

このプロパティのサポートは、Xamarin.Android 8.1 で追加されました。

このプロパティは既定で True です。

AndroidExplicitCrunch

Xamarin.Android 11.0 ではサポートされなくなりました。

AndroidExtraAotOptions

$(AndroidEnableProfiledAot) または $(AotAssemblies)true に設定されているプロジェクトの Aot タスク中に、Mono コンパイラにオプションを渡すことができるようにする文字列プロパティ。 Mono クロスコンパイラを呼び出すときに、プロパティの文字列値が応答ファイルに追加されます。

一般に、このプロパティは空白のままにしておく必要がありますが、特殊なシナリオでは、柔軟性が向上する場合があります。

$(AndroidExtraAotOptions) プロパティは、関連する $(AndroidAotAdditionalArguments) プロパティとは異なります。$(AndroidAotAdditionalArguments) は、コンマ区切りの引数を Mono コンパイラの --aot オプションに配置します。 $(AndroidExtraAotOptions) では代わりに、--verbose--debug など、完全なスタンドアロンのスペース区切りオプションがコンパイラに渡されます。

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

AndroidFastDeploymentType

$(EmbedAssembliesIntoApk) MSBuild プロパティが False の場合に、ターゲット デバイスの高速展開ディレクトリに展開できる型を制御する値の : (コロン) 区切りのリスト。 リソースが高速展開される場合、そのリソースが生成された .apk に埋め込まれないため、展開時間を短縮することができます (高速展開が増えるほど、.apk を再ビルドする頻度が減り、インストール プロセスを高速化できます)。有効な値を次に示します。

  • Assemblies: アプリケーション アセンブリを展開します。
  • Dexes: .dex ファイル、ネイティブ ライブラリ、および typemap を展開します。 Dexes 値は、Android 4.4 以降 (API-19) を実行しているデバイスで "のみ" 使用できます。

既定値は Assemblies です。

そのシステムを使用したリソースおよび資産の高速展開のサポートは、コミット f0d565fe で削除されました。 これは、非推奨の API を使用して作業する必要があったからです。

試験的です。 このプロパティは、Xamarin.Android 6.1 で追加されました。

AndroidFragmentType

レイアウト バインディング コードを生成するときに、すべての <fragment> レイアウト要素に使用される既定の完全修飾型を指定します。 既定値は、Android の標準の Android.App.Fragment 型です。

AndroidGenerateJniMarshalMethods

ビルド プロセスの一環として、JNI マーシャリング メソッドの生成を有効にするブール型プロパティ。 これにより、バインディング ヘルパー コードでの System.Reflection の使用量が大幅に削減されます。

既定値は False です。 開発者が新しい JNI マーシャリング メソッド機能を使用する場合、

<AndroidGenerateJniMarshalMethods>True</AndroidGenerateJniMarshalMethods>

該当する .csproj 内に上の内容を設定できます。 または、コマンド ラインでプロパティを指定します。

/p:AndroidGenerateJniMarshalMethods=True

試験的です。 Xamarin.Android 9.2 で追加されました。 既定値は False です。

AndroidGenerateJniMarshalMethodsAdditionalArguments

jnimarshalmethod-gen.exe 呼び出しにパラメータを追加するために使用できる文字列プロパティ。デバッグに役立ち、-v-d--keeptemp などのオプションを使用できます。

既定値は、空の文字列です。 これは、.csproj ファイルまたはコマンド ラインで設定できます。 次に例を示します。

<AndroidGenerateJniMarshalMethodsAdditionalArguments>-v -d --keeptemp</AndroidGenerateJniMarshalMethodsAdditionalArguments>

または

/p:AndroidGenerateJniMarshalMethodsAdditionalArguments="-v -d --keeptemp"

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

AndroidGenerateLayoutBindings

true に設定されている場合はレイアウトのコードビハインドの生成を有効にし、false に設定されている場合は完全に無効にします。 既定値は false です。

AndroidGenerateResourceDesigner

既定値は true です。 false に設定すると、Resource.designer.cs の生成が無効になります。

.NET 6 RC 1 で追加されました。 Xamarin.Android ではサポートされていません。

AndroidHttpClientHandlerType

既定の System.Net.Http.HttpClient コンストラクターによって使用される、既定の System.Net.Http.HttpMessageHandler の実装を制御します。 値は HttpMessageHandler サブクラスのアセンブリ修飾型名であり、System.Type.GetType(string) での使用に適しています。 このプロパティでは次の値が最も一般的です。

  • Xamarin.Android.Net.AndroidClientHandler: Android Java API を使用して、ネットワーク要求を実行します。 Java API を使用すると、基になる Android バージョンが TLS 1.2 をサポートする場合、TLS 1.2 の URL にアクセスできます。 TLS 1.2 のサポートが Java を通じて確実に提供されるのは、Android 5.0 以降のみです。

    Visual Studio のプロパティページの Android オプションと、Visual Studio for Mac プロパティ ページの AndroidClientHandler オプションに対応しています。

    Visual Studio で [最低限の Android バージョン][Android 5.0 (Lollipop)] 以上に構成されている、または Visual Studio for Mac で [ターゲット プラットフォーム][最新および最高] に設定されている場合、新しいプロジェクトのウィザードで、新しいプロジェクトに対してこのオプションが選択されます。

  • 未設定/空の文字列。これは 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 のプロパティ ページのマネージドオプションに対応しています。

Note

TLS 1.2 のサポートがバージョン 5.0 より前の Android で必要な場合、"または" TLS 1.2 のサポートが System.Net.WebClient および関連する API で必要な場合、$(AndroidTlsProvider) を使用する必要があります。

Note

$(AndroidHttpClientHandlerType) プロパティのサポートは、XA_HTTP_CLIENT_HANDLER_TYPE 環境変数を設定することにより機能します。 次のビルド アクションを含むファイル内で見つかる $XA_HTTP_CLIENT_HANDLER_TYPE 値が優先されます: @(AndroidEnvironment)

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

AndroidIncludeWrapSh

Android ラッパー スクリプト (wrap.sh) を APK にパッケージ化する必要があるかどうかを示すブール値。 ラッパー スクリプトはアプリケーションの起動方法や動作方法に大きく影響する可能性があるため、既定値は false になっています。スクリプトは、デバッグを行う場合やアプリケーションの起動または実行時の動作を変更する場合など、必要な場合にのみ含めるようにします。

スクリプトをプロジェクトに追加するには、@(AndroidNativeLibrary) ビルド アクションを使用します。これは、アーキテクチャ固有のネイティブ ライブラリと同じディレクトリに配置されているため、wrap.sh という名前を付ける必要があります。

wrap.sh スクリプトへのパスを指定する最も簡単な方法は、ターゲット アーキテクチャにちなんだ名前を付けたディレクトリにスクリプトを配置することです。 この方法は、アーキテクチャごとに wrap.sh が 1 つしかない場合に機能します。

<AndroidNativeLibrary Include="path/to/arm64-v8a/wrap.sh" />

ただし、さまざまな目的のためにアーキテクチャごとに複数の wrap.sh が必要な場合には、この方法は機能しません。 そのような場合は、代わりに AndroidNativeLibraryLink メタデータを使用して名前を指定できます。

<AndroidNativeLibrary Include="/path/to/my/arm64-wrap.sh">
  <Link>lib\arm64-v8a\wrap.sh</Link>
</AndroidNativeLibrary>

Link メタデータを使用する場合、その値に指定するパスは、APK ルート ディレクトリを基準とする有効なネイティブ アーキテクチャ固有のライブラリ パスである必要があります。 パスの形式は lib\ARCH\wrap.sh です。ARCH には次のいずれかを指定できます。

  • arm64-v8a
  • armeabi-v7a
  • x86_64
  • x86

AndroidJavadocVerbosity

バインド プロジェクト内で Javadoc ドキュメントをインポートする際に、C# XML ドキュメントのコメントをどの程度 "詳細" にするかを指定します。

を使用する必要があります。@(JavaSourceJar) ビルド アクションを使用する必要があります。

$(AndroidJavadocVerbosity) プロパティは列挙型に似ています。指定可能な値は full または intellisense です。

既定値は intellisense です。

このプロパティのサポートは、Xamarin.Android 11.3 で追加されました。

AndroidKeyStore

カスタム署名情報を使用するかどうかを示すブール値。 既定値は False で、既定のデバッグ署名キーがパッケージの署名に使用されることを意味します。

AndroidLaunchActivity

起動する Android アクティビティ。

AndroidLinkMode

Android パッケージ内に含まれるアセンブリで実行する必要があるリンクの種類を指定します。 Android アプリケーション プロジェクトでのみ使用されます。 既定値は SdkOnly です。 有効な値は次のとおりです。

  • None: リンクは試行されません。

  • SdkOnly: リンクは基本クラス ライブラリでのみ実行され、ユーザーのアセンブリでは実行されません。

  • Full: リンクは基本クラス ライブラリとユーザーのアセンブリで実行されます。

    Note

    FullAndroidLinkMode 値を使用すると、多くの場合、特にリフレクションを使用している場合には、アプリが破損します。 何をしているかを十分に理解している場合を除き、使用しないでください。

<AndroidLinkMode>SdkOnly</AndroidLinkMode>

AndroidLinkResources

true の場合、ビルド システムは、すべてのアセンブリ内の Resource.Designer.cs Resource クラスの入れ子になった型をリンクします。 これらの型を使用する IL コードは、フィールドにアクセスするのではなく、値を直接使用するように更新されます。

入れ子になった型をリンクすると、apk サイズを少し小さくすることができ、起動時のパフォーマンスを向上させることもできます。 "リリース" ビルドのみがリンクされます。

試験的です。 次のようなコードでのみ動作するように設計されています

var view = FindViewById(Resources.Ids.foo);

その他のシナリオ (リフレクションなど) はサポートされません。

このプロパティのサポートは、Xamarin.Android 11.3 で追加されました

AndroidLinkSkip

リンクしないアセンブリ名のセミコロン (;) で区切られたリストを、ファイル拡張子を使わずに指定します。 Android アプリケーション プロジェクト内でのみ使用されます。

<AndroidLinkSkip>Assembly1;Assembly2</AndroidLinkSkip>

AndroidLinkTool

proguard または r8 の有効な値の列挙方式のプロパティ。 Java コードに使用されるコード シュリンカーを示します。 既定値は空の文字列、または $(AndroidEnableProguard)True の場合は proguard です。 D8 と R8 に関するドキュメントを参照してください。

AndroidLintEnabled

開発者がパッケージ化プロセスの一部として、Android の lint ツールを実行できるようにするブール型プロパティ。

$(AndroidLintEnabled)=True の場合、次のプロパティが使用されます。

次のビルド アクションを使用することもできます。

Android の lint ツールの詳細については、Lint のヘルプに関するページを参照してください。

AndroidLintEnabledIssues

有効にする lint の問題のコンマ区切りリストである文字列プロパティ。

$(AndroidLintEnabled)=True の場合にのみ使用されます。

AndroidLintDisabledIssues

無効にする lint の問題のコンマ区切りリストである文字列プロパティ。

$(AndroidLintEnabled)=True の場合にのみ使用されます。

AndroidLintCheckIssues

チェックする lint の問題のコンマ区切りリストである文字列プロパティ。

$(AndroidLintEnabled)=True の場合にのみ使用されます。

注: これらの問題のみがチェックされます。

AndroidManagedSymbols

ファイル名と行番号の情報を Release スタック トレースから抽出できるように、シーケンス ポイントを生成するかどうかを制御するブール型プロパティ。

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

AndroidManifest

アプリの AndroidManifest.xml のテンプレートとして使用するファイル名を指定します。 ビルド時に、実際の AndroidManifest.xml を生成するためにその他の必要な値がマージされます。 $(AndroidManifest) は、/manifest/@package 属性にパッケージ名を含める必要があります。

AndroidManifestMerger

AndroidManifest.xml ファイルをマージするための実装を指定します。 これは、legacy が元の C# の実装を選択し、manifestmerger.jar が Google の Java 実装を選択する列挙型のプロパティです。

現在の既定値は legacy です。 これは、Android Studio の動作に合わせるために、将来のリリースで manifestmerger.jar に変更されます。

Google のマージャーでは、Android ドキュメントに記載されている xmlns:tools="http://schemas.android.com/tools" のサポートが有効になります。

Xamarin.Android 10.2 で導入されました。

AndroidManifestMergerExtraArgs

Android ドキュメント ツールに引数を指定する文字列プロパティ。

ツールからの詳細な出力が必要な場合は、.csproj に以下を追加できます。

<AndroidManifestMergerExtraArgs>--log VERBOSE</AndroidManifestMergerExtraArgs>

Xamarin.Android 11.x で導入されました

AndroidManifestType

Xamarin または GoogleV2 の有効な値の列挙方式のプロパティ。 これは、InstallAndroidDependencies ターゲットが、どの Android パッケージとパッケージ バージョンが利用可能で、インストール可能かを判断するために使用するリポジトリを制御します。

Xamarin は、Visual Studio SDK マネージャー内の許可された一覧 (推奨) リポジトリです。

GoogleV2 は、Visual Studio SDK マネージャー内のすべての一覧 (サポート対象外) リポジトリです。

Xamarin.Android 13.0 で追加されました。 Xamarin.Android 13.0 では、$(AndroidManifestType) が設定されていない場合は Xamarin が使用されます。

Xamarin.Android 13.0 より前のバージョンでは、$(AndroidManifestType) の設定は無効であり、GoogleV2 が使用されます。

AndroidManifestPlaceholders

AndroidManifest.xml のキーと値の置換ペアのセミコロン区切りのリストです。各ペアの形式は key=value です。

たとえば、assemblyName=$(AssemblyName) のプロパティ値によって、AndroidManifest.xml に表示できる ${assemblyName} プレースホルダーが定義されます。

<application android:label="${assemblyName}"

これにより、ビルド プロセスから AndroidManifest.xml ファイルに変数を挿入することができます。

AndroidMultiDexClassListExtraArgs

multidex.keep ファイルを生成するときに、開発者が引数を com.android.multidex.MainDexListBuilder に渡すことを許可する文字列プロパティ。

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 ステップが成功します。

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

AndroidPackageFormat

apk または aab の有効な値の列挙方式のプロパティ。 Android アプリケーションを APK ファイルまたは Android アプリ バンドルとしてパッケージ化するかどうかを示します。 アプリ バンドルは、Google Play での送信を目的とした Release ビルドの新しい形式です。 既定値は apk です。

$(AndroidPackageFormat)aab に設定すると、Android アプリ バンドルに必要な他の MSBuild プロパティが設定されます。

このプロパティは、.NET 6 では非推奨になります。 ユーザーは新しい AndroidPackageFormats に切り替える必要があります。

AndroidPackageFormats

セミコロン区切りのプロパティで、有効な値は apkaab です。 Android アプリケーションを APK ファイルまたは Android アプリ バンドルとしてパッケージ化するかどうかを示します。 アプリ バンドルは、Google Play での送信を目的とした Release ビルドの新しい形式です。

リリース ビルドをビルドするときは、さまざまなストアに配布するために aabapk の両方を生成する必要がある場合があります。

AndroidPackageFormatsaab;apk に設定すると、両方が生成されます。 AndroidPackageFormatsaab または apk のいずれかに設定すると、1 つのファイルのみが生成されます。

.NET 6 では、Release ビルドの場合のみ AndroidPackageFormatsaab;apk に設定されます。 デバッグには引き続き apk のみを使用することをお勧めします。

レガシ Xamarin.Android の場合、既定値は "" です。 その結果、レガシ Xamarin.Android では、既定ではリリース ビルドの一部として両方は生成されません。 ユーザーが両方の出力を生成したい場合は、Release 構成で以下を定義する必要があります。

<AndroidPackageFormats>aab;apk</AndroidPackageFormats>

また、その構成の既存の AndroidPackageFormat がある場合は、それを削除する必要があります。

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

AndroidPackageNamingPolicy

生成された Java ソース コードの Java パッケージ名を指定するための列挙型スタイルのプロパティ。

Xamarin.Android 10.2 以降では、サポートされている値は LowercaseCrc64 のみです。

Xamarin.Android 10.1 では、暫定の LowercaseMD5 値も使用できました。これにより、Xamarin.Android 10.0 以前で使用されてた元の Java パッケージ名スタイルに戻すことができました。 このオプションは、FIPS 準拠が適用されたビルド環境との互換性を向上させるために、Xamarin.Android 10.2 で削除されました。

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

AndroidProguardMappingFile

r8-printmapping proguard ルールを指定します。 これは、mapping.txt ファイルが $(OutputPath) フォルダーに生成されることを意味します。 このファイルは、パッケージを Google Play ストアにアップロードするときに使用できます。

既定では、このファイルは AndroidLinkTool=r8 を使用すると自動的に生成され、次のファイル $(OutputPath)mapping.txt が生成されます。

このマッピング ファイルを生成したくない場合は、AndroidCreateProguardMappingFile プロパティを使用して作成を停止できます。 次を、プロジェクトに追加します。

<AndroidCreateProguardMappingFile>False</AndroidCreateProguardMappingFile>

または、コマンド ラインで -p:AndroidCreateProguardMappingFile=False を使用します。

このプロパティは、Xamarin.Android 11.2 で追加されました。

AndroidR8IgnoreWarnings

r8-ignorewarnings proguard ルールを指定します。 これにより、特定の警告が発生した場合でも、r8 で Dex コンパイルを使用して続けることができます。 既定値は True ですが、より厳密な動作を強制するために False を設定できます。 詳細については、ProGuard のマニュアルを参照してください。

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

AndroidR8JarPath

r8 dex コンパイラおよびシュリンカーで使用する r8.jar へのパス。 既定値は、Xamarin.Android インストールのパスです。 詳細については、D8 と R8 に関するドキュメントをご覧ください。

AndroidResgenExtraArgs

Android アセットとリソースを処理するときに、aapt コマンドに渡すコマンド ライン オプションを指定します。

AndroidResgenFile

生成するリソース ファイルの名前を指定します。 既定のテンプレートでは、これは Resource.designer.cs に設定されます。

AndroidSdkBuildToolsVersion

Android SDK ビルド ツール パッケージは、特に、aapt および zipalign ツールを提供します。 複数の異なるバージョンのビルド ツール パッケージを同時にインストールすることができます。 パッケージ化するビルド ツール パッケージの選択は、"優先" ビルド ツールのバージョンをチェックして、ある場合はそれを使用して行われます。"優先" バージョンが "ない" 場合は、インストールされている最も高いバージョンのビルド ツール パッケージが使用されます。

$(AndroidSdkBuildToolsVersion) MSBuild プロパティには、優先ビルド ツールのバージョンが含まれています。 Xamarin.Android ビルド システムは Xamarin.Android.Common.targets に既定値を提供します。たとえば、最新の aapt がクラッシュして、前のバージョンの aapt が機能することがわかっている場合には、その既定値をプロジェクト ファイル内でオーバーライドして、別のビルド ツール バージョンを選択できます。

AndroidSigningKeyAlias

キーストア内のキーに別名を指定します。 これは、キーストアを作成するときに使用される keytool -alias 値です。

AndroidSigningKeyPass

キーストア ファイル内にあるキーのパスワードを指定します。 これは、keytoolEnter key password for $(AndroidSigningKeyAlias) ($(AndroidSigningKeyAlias) のキーのパスワードを入力) を求めたときに入力される値です。

Xamarin.Android 10.0 以前では、このプロパティはプレーンテキストのパスワードのみをサポートしています。

Xamarin.Android 10.1 以降では、このプロパティは、パスワードを格納する環境変数またはファイルを指定するために使用できる env: および file: プレフィックスもサポートします。 これらのオプションを使用すると、ビルド ログにパスワードが表示されないようにすることができます。

たとえば、AndroidSigningPassword という名前の環境変数を使用するには、次のようにします。

<PropertyGroup>
    <AndroidSigningKeyPass>env:AndroidSigningPassword</AndroidSigningKeyPass>
</PropertyGroup>

C:\Users\user1\AndroidSigningPassword.txt にあるファイルを使用するには、次のようにします。

<PropertyGroup>
    <AndroidSigningKeyPass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningKeyPass>
</PropertyGroup>

Note

env: プレフィックスは、$(AndroidPackageFormat)aab に設定されている場合はサポートされません。

AndroidSigningKeyStore

keytool で作成されたキーストア ファイルのファイル名を指定します。 これは、keytool -keystore オプションで指定された値に対応します。

AndroidSigningStorePass

$(AndroidSigningKeyStore) へのパスワードを指定します。 これは、キーストア ファイルを作成していて、Enter keystore password: (キーストア パスワードを入力) で求められたときに、keytool に指定する値です。

Xamarin.Android 10.0 以前では、このプロパティはプレーンテキストのパスワードのみをサポートしています。

Xamarin.Android 10.1 以降では、このプロパティは、パスワードを格納する環境変数またはファイルを指定するために使用できる env: および file: プレフィックスもサポートします。 これらのオプションを使用すると、ビルド ログにパスワードが表示されないようにすることができます。

たとえば、AndroidSigningPassword という名前の環境変数を使用するには、次のようにします。

<PropertyGroup>
    <AndroidSigningStorePass>env:AndroidSigningPassword</AndroidSigningStorePass>
</PropertyGroup>

C:\Users\user1\AndroidSigningPassword.txt にあるファイルを使用するには、次のようにします。

<PropertyGroup>
    <AndroidSigningStorePass>file:C:\Users\user1\AndroidSigningPassword.txt</AndroidSigningStorePass>
</PropertyGroup>

Note

env: プレフィックスは、$(AndroidPackageFormat)aab に設定されている場合はサポートされません。

AndroidSigningPlatformKey

apk の署名に使用するキー ファイルを指定します。 これは system アプリケーションをビルドするときにのみ使用されます。

このプロパティのサポートは、Xamarin.Android 11.3 で追加されました。

AndroidSigningPlatformCert

apk の署名に使用する証明書ファイルを指定します。 これは system アプリケーションをビルドするときにのみ使用されます。

このプロパティのサポートは、Xamarin.Android 11.3 で追加されました。

AndroidSupportedAbis

.apk に含める必要がある ABI のセミコロン (;) で区切られたリストを含む文字列プロパティ。

サポートされている値は次のとおりです。

  • armeabi-v7a
  • x86
  • arm64-v8a: Xamarin.Android 5.1 以降が必要です。
  • x86_64: Xamarin.Android 5.1 以降が必要です。

AndroidTlsProvider

アプリケーションで使用する必要がある TLS プロバイダーを指定する文字列値。 次のいずれかの値になります。

  • 未設定/空の文字列: Xamarin.Android 7.3 以上では、これは btls と同等です。

    Xamarin.Android 7.1 では、これは legacy と同等です。

    これは、Visual Studio のプロパティ ページの既定の設定に対応しています。

  • btls: HttpWebRequest との TLS 通信に BoringSSL を使用します。

    これにより、Android のすべてのバージョンで TLS 1.2 を使用できます。

    これは、Visual Studio のプロパティ ページのネイティブ TLS 1.2+ の設定に対応しています。

  • legacy: Xamarin.Android 10.1 以前では、ネットワークの対話に過去に管理されていた SSL の実装を使用します。 これは、TLS 1.2 はサポート "されていません"。

    これは、Visual Studio のプロパティ ページのマネージド TLS 1.0 の設定に対応しています。

    Xamarin.Android 10.2 以降では、この値は無視され、btls 設定が使用されます。

  • default: この値は、Xamarin.Android プロジェクトで使用される可能性はほとんどありません。 代わりに空の文字列を使用することをお勧めします。これは、Visual Studio のプロパティ ページの既定の設定に対応しています。

    default 値は、Visual Studio のプロパティ ページでは提供されません。

    これは現在、legacy と同じです。

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

AndroidUseAapt2

開発者がパッケージ化するために aapt2 ツールの使用を制御することを許可するブール型プロパティ。 既定では、これは False になり、Xamarin.Android では aapt が使用されます。 開発者が新しい aapt2 機能を使用することを望んでいる場合は、

<AndroidUseAapt2>True</AndroidUseAapt2>

該当する .csproj 内に上の内容を設定できます。 または、コマンド ラインでプロパティを指定します。

/p:AndroidUseAapt2=True

このプロパティは、Xamarin.Android 8.3 で追加されました。 AndroidUseAapt2false に設定することは、Xamarin Android 11.2 では非推奨とされます。

AndroidUseApkSigner

jarsigner ではなく apksigner ツールを使用することを開発者に許可するブール型プロパティ。

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

AndroidUseDefaultAotProfile

開発者が既定の AOT プロファイルの使用を抑制できるようにするブール型プロパティ。

既定の AOT プロファイルを抑制するには、このプロパティを false に設定します。

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

AndroidUseInterpreter

.apk に通常の JIT ではなく mono "インタープリター" が含まれるようにするブール型プロパティ。

試験的です。

このプロパティのサポートは、Xamarin.Android 11.3 で追加されました。

AndroidUseLegacyVersionCode

開発者が versionCode の計算を Xamarin.Android 8.2 前の動作に戻すことを許可するブール型プロパティ。 これは、Google Play ストアに既存のアプリケーションがある開発者に向けてのみ使用する必要があります。 新しい $(AndroidVersionCodePattern) プロパティを使用することを強くお勧めします。

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

AndroidUseManagedDesignTimeResourceGenerator

デザイン時のビルドを、aapt ではなく管理対象リソース パーサーの使用に切り替えるブール型プロパティ。

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

AndroidUseSharedRuntime

ターゲット デバイスでアプリケーションを実行するために "共有ランタイム パッケージ" が必要かどうかを決定するブール型プロパティ。 共有ランタイム パッケージに依存することで、アプリケーション パッケージをより小型化し、パッケージの作成と展開プロセスを高速化できるため、ビルド/配置/デバッグのターンアラウンド サイクルの高速化が結果として得られます。

Xamarin Android 11.2 より前のバージョンでは、このプロパティは、デバッグ ビルドには True、リリース プロジェクトには False にする必要があります。

このプロパティは、Xamarin. Android 11.2 で "削除" されました。

AndroidVersionCode

AndroidManifest.xml ファイル内の /manifest/@android:versionCode の代替として使用できる MSBuild プロパティ。 この機能をオプトインするには、<GenerateApplicationManifest>true</GenerateApplicationManifest> も有効にする必要があります。 .NET 6 では今後、これが既定値になります。

$(AndroidCreatePackagePerAbi)$(AndroidVersionCodePattern) が使用されている場合、このプロパティは無視されます。

@android:versionCode は、Google Play リリースごとにインクリメントする必要がある整数値です。 /manifest/@android:versionCode の要件の詳細については、Android のドキュメントを参照してください。

このプロパティのサポートは、Xamarin.Android 11.3 で追加されました。

AndroidVersionCodePattern

開発者がマニフェスト内の versionCode をカスタマイズできるようにする文字列プロパティ。 versionCode の決定に関する情報は、「Creating the Version Code for the APK」 (APK のバージョン コードの作成) を参照してください。

いくつかの例では、abiarmeabi でマニフェスト内の versionCode123 の場合、$(AndroidCreatePackagePerAbi) が True のときには {abi}{versionCode} により 1123 の versionCode が生成され、それ以外のときは 123 の値が生成されます。 abix86_64 でマニフェスト内の versionCode44 です。 これにより、$(AndroidCreatePackagePerAbi) が True の場合には 544 が生成され、それ以外の場合は 44 の値が生成されます。

versionCode0 でレフト パディングしているため、レフト パディングの書式文字列 {abi}{versionCode:0000} を含めると、50044 が生成されます。 または、 などの 10 進パディングを使用することもできます。{abi}{versionCode:D4} は前の例と同じ動作になります。

値は整数である必要があるため、'0' と 'Dx' のパディングの書式文字列のみがサポートされます。

事前定義済みのキー項目

  • abi - アプリのターゲットとなる abi を挿入します

    • 2 – armeabi-v7a
    • 3 - x86
    • 4 - arm64-v8a
    • 5 - x86_64
  • minSDK - AndroidManifest.xml からサポートされている Sdk の最小値を挿入するか、定義されていない場合は 11 を挿入します。

  • versionCode - Properties\AndroidManifest.xml から直接バージョン コードを使用します。

$(AndroidVersionCodeProperties) プロパティ (次で定義) を使用してカスタム項目を定義することができます。

既定では、値は {abi}{versionCode:D6} に設定されます。 開発者が古い動作を保持する必要がある場合は、$(AndroidUseLegacyVersionCode) プロパティを true に設定することで既定値をオーバーライドできます。

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

AndroidVersionCodeProperties

$(AndroidVersionCodePattern) で使用するために、開発者がカスタム項目を定義できるようにする文字列プロパティ。 これらは key=value ペアの形式です。 value 内のすべての項目は整数値である必要があります。 (例: screen=23;target=$(_AndroidApiLevel))。 ご覧のとおり、既存またはカスタムの MSBuild プロパティを文字列で利用することができます。

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

ApplicationId

AndroidManifest.xml ファイル内の /manifest/@package の代替として使用できる MSBuild プロパティ。 この機能をオプトインするには、<GenerateApplicationManifest>true</GenerateApplicationManifest> も有効にする必要があります。 .NET 6 では今後、これが既定値になります。

/manifest/@package の要件の詳細については、Android のドキュメントを参照してください。

このプロパティのサポートは、Xamarin.Android 11.3 で追加されました。

ApplicationTitle

AndroidManifest.xml ファイル内の /manifest/application/@android:label の代替として使用できる MSBuild プロパティ。 この機能をオプトインするには、<GenerateApplicationManifest>true</GenerateApplicationManifest> も有効にする必要があります。 .NET 6 では今後、これが既定値になります。

/manifest/application/@android:label の要件の詳細については、Android のドキュメントを参照してください。

このプロパティのサポートは、Xamarin.Android 11.3 で追加されました。

ApplicationVersion

AndroidManifest.xml ファイル内の /manifest/@android:versionName の代替として使用できる MSBuild プロパティ。 この機能をオプトインするには、<GenerateApplicationManifest>true</GenerateApplicationManifest> も有効にする必要があります。 .NET 6 では今後、これが既定値になります。

/manifest/@android:versionName の要件の詳細については、Android のドキュメントを参照してください。

このプロパティのサポートは、Xamarin.Android 11.3 で追加されました。

AotAssemblies

アセンブリをネイティブ コードに Ahead-of-Time コンパイルして、.apk に含めるかどうかを決定するブール型プロパティ。

このプロパティのサポートは、Xamarin.Android 5.1 で追加されました。

このプロパティは既定で False です。

AProfUtilExtraOptions

aprofutil に渡す追加のオプション。

BeforeGenerateAndroidManifest

このプロパティに一覧表示されている MSBuild ターゲットは、_GenerateJavaStubs の前に直接実行されます。

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

構成

使用するビルド構成 ("Debug" や "Release" など) を指定します。 Configuration プロパティは、ターゲットの動作を決定するその他のプロパティの既定値を決定するために使用されます。 追加の構成は、IDE 内で作成できます。

"既定" では、Debug 構成によって、Install および SignAndroidPackage ターゲットが生成され、動作する上で他のファイルやパッケージの存在が必要となる、より小さい Android パッケージが作成されます。

既定の Release 構成によって Install および SignAndroidPackage ターゲットが生成されます。これらが作成する Android パッケージは、"スタンドアロン" であり、他のパッケージやファイルをインストールしなくても使用できます。

DebugSymbols

$(DebugType) プロパティと組み合わせて、Android パッケージが "デバッグ可能" かどうかを決定するブール値。 デバッグ可能なパッケージは、デバッグ シンボルを含んでいて、//application/@android:debuggable 属性true に設定し、INTERNET アクセス許可を自動的に追加して、デバッガーがプロセスにアタッチできるようにします。 DebugSymbolsTrue "かつ" DebugType が空の文字列または Full の場合、アプリケーションはデバッグ可能です。

DebugType

ビルドの一部として生成するためのデバッグ シンボルの型を指定します。これはアプリケーションがデバッグ可能かどうかにも影響します。 使用可能な値 :

  • Full: 完全なシンボルが生成されます。 DebugSymbols MSBuild プロパティも True の場合、アプリケーション パッケージはデバッグ可能です。

  • PdbOnly: "PDB" シンボルが生成されます。 アプリケーション パッケージはデバッグ可能ではありません。

DebugType が設定されていないか、空の文字列の場合、DebugSymbols プロパティが、アプリケーションがデバッグ可能かどうかを制御します。

EmbedAssembliesIntoApk

アプリのアセンブリをアプリケーション パッケージに埋め込む必要があるかどうかを決定するブール型プロパティ。

このプロパティは、リリース ビルドには True、デバッグ ビルドには False にする必要があります。 高速展開でターゲット デバイスがサポートされない場合は、デバッグ ビルドでこのプロパティを True にする必要がある場合があります

このプロパティが False の場合、$(AndroidFastDeploymentType) MSBuild プロパティは .apk に埋め込まれるものも制御するため、デプロイおよびリビルド時間が影響を受ける場合があります。

EnableLLVM

アセンブリをネイティブ コードに Ahead-of-Time コンパイルするときに、LLVM を使用するかどうかを決定するブール型プロパティ。

このプロパティが有効になっているプロジェクトをビルドするには、Android NDK がインストールされている必要があります。

このプロパティのサポートは、Xamarin.Android 5.1 で追加されました。

このプロパティは既定で False です。

$(AotAssemblies) MSBuild プロパティが True でない限り、このプロパティは無視されます。

EnableProguard

proguard を Java コードをリンクするパッケージ化プロセスの一部として実行するかどうかを決定するブール型プロパティ。

このプロパティのサポートは、Xamarin.Android 5.1 で追加されました。

このプロパティは既定で False です。

True の場合、@(ProguardConfiguration) ファイルは proguard の実行を制御するために使用されます。

GenerateApplicationManifest

最終的な AndroidManifest.xml ファイルに値を出力する次の MSBuild プロパティを有効または無効にします。

既定値 $(GenerateApplicationManifest) は、.NET 6 では true、"レガシ" Xamarin.Android では false です。

このプロパティのサポートは、Xamarin.Android 11.3 で追加されました。

JavaMaximumHeapSize

.dex ファイルをパッケージ化プロセスの一部としてビルドする際に使用する java-Xmx パラメーター値を指定します。 指定されていない場合、-Xmx オプションでは java1G の値が指定されます。 その他のプラットフォームに比べて、Windows では一般的にこの値が必要なことがわかりました。

以下を変更することで値をカスタマイズします。

<JavaMaximumHeapSize>1G</JavaMaximumHeapSize>

JavaOptions

.dex ファイルのビルド時に、java に渡すコマンド ライン オプションを指定します。

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

照合順序や並べ替えテーブルなど、アプリケーションに含まれる国際化サポートを指定します。 値は、次の大文字と小文字を区別しない値の 1 つ以上のコンマ区切りまたはセミコロン区切りのリストです。

  • None: 追加のエンコーディングは含まれません。

  • All: 利用可能なすべてのエンコーディングが含まれます。

  • CJK: "日本語 (EUC)" [enc-jp、CP51932]、"日本語 (Shift-JIS)" [iso-2022-jp、shift_jis、CP932]、"日本語 (JIS)" [CP50220]、"簡体中国語 (GB2312)" [gb2312、CP936]、"韓国語 (UHC)" [ks_c_5601-1987、CP949]、"韓国語 (EUC)" [euc-kr、CP51949]、"繁体中国語 (Big5)" [big5、CP950]、および "簡体中国語 (GB18030)" [GB18030、CP54936] などの中国語、日本語、および韓国語のエンコーディングが含まれます。

  • MidEast: "トルコ語 (Windows)" [iso-8859-9、CP1254]、"ヘブライ語 (Windows)" [windows-1255、CP1255]、"アラビア語 (Windows)" [windows-1256、CP1256]、"アラビア語 (ISO)" [iso-8859-6、CP28596]、"ヘブライ語 (ISO)" [iso-8859-8、CP28598]、"ラテン 5 (ISO)" [iso-8859-9、CP28599]、および "ヘブライ語 (Iso 代替)" [iso-8859-8、CP38598] などの中東のエンコーディングが含まれます。

  • Other: "キリル語 (Windows)" [CP1251]、"バルト語 (Windows)" [iso-8859-4、CP1257]、"ベトナム語 (Windows)" [CP1258]、"キリル語 (KOI8-R)" [koi8-r、CP1251]、"ウクライナ語 (KOI8-U)" [koi8-u、CP1251]、"バルト語 (ISO)" [iso-8859-4、CP1257]、"キリル語 (ISO)" [iso-8859-5、CP1251]、"ISCII デーヴァナーガリー語" [x-iscii-de、CP57002]、"ISCII ベンガル語" [x-iscii-be、CP57003]、"ISCII タミール語" [x-iscii-ta、CP57004]、"ISCII テルグ語" [x-iscii-te、CP57005]、"ISCII アッサム語" [x-iscii-as、CP57006]、"ISCII オリヤー語" [x-iscii-or、CP57007]、"ISCII カンナダ語" [x-iscii-ka、CP57008]、"ISCII マラヤーラム語" [x-iscii-ma、CP57009]、"ISCII グジャラート語" [x-iscii-gu、CP57010]、"ISCII パンジャーブ語" [x-iscii-pa、CP57011]、および "タイ語 (Windows)" [CP874] などのその他のエンコードが含まれます。

  • Rare: "IBM EBCDIC (トルコ語)" [CP1026]、"IBM EBCDIC (オープン システム ラテン 1)" [CP1047]、"IBM EBCDIC (米国-カナダとユーロ)" [CP1140]、"IBM EBCDIC (ドイツとユーロ)" [CP1141]、"IBM EBCDIC (デンマーク/ノルウェーとユーロ)" [CP1142]、"IBM EBCDIC (フィンランド/スウェーデンとユーロ)" [CP1143]、"IBM EBCDIC (イタリアとユーロ)" [CP1144]、"IBM EBCDIC (ラテン アメリカ/スペインとユーロ)" [CP1145]、"IBM EBCDIC (イギリスとユーロ)" [CP1146]、"IBM EBCDIC (フランスとユーロ)" [CP1147]、"IBM EBCDIC (インターナショナルとユーロ)" [CP1148]、"IBM EBCDIC (アイスランド語とユーロ)" [CP1149]、"IBM EBCDIC (ドイツ)" [CP20273]、"IBM EBCDIC (デンマーク/ノルウェー)" [CP20277]、"IBM EBCDIC (フィンランド/スウェーデン)" [CP20278]、"IBM EBCDIC (イタリア)" [CP20280]、"IBM EBCDIC (ラテン アメリカ/スペイン)" [CP20284]、"IBM EBCDIC (イギリス)" [CP20285]、"IBM EBCDIC (日本語カタカナ拡張)" [CP20290]、"IBM EBCDIC (フランス)" [CP20297]、"IBM EBCDIC (アラビア語)" [CP20420]、"IBM EBCDIC (ヘブライ語)" [CP20424]、"IBM EBCDIC (アイスランド語)" [CP20871]、"IBM EBCDIC (キリル、セルビア語、ブルガリア語)" [CP21025]、"IBM EBCDIC (米国-カナダ)" [CP37]、"IBM EBCDIC (インターナショナル)" [CP500]、"アラビア語 (ASMO 708)" [CP708]、"中央ヨーロッパ言語 (DOS)" [CP852]、"キリル言語 (DOS)" [CP855]、"トルコ語 (DOS)" [CP857]、"西ヨーロッパ言語 (DOS とユーロ)" [CP858]、"ヘブライ語 (DOS)" [CP862]、"アラビア語 (DOS)" [CP864]、"ロシア語 (DOS)" [CP866]、"ギリシャ語 (DOS)" [CP869]、"IBM EBCDIC (ラテン 2)" [CP870]、"IBM EBCDIC (ギリシャ語)" [CP875] などのまれなエンコードが含まれます。

  • West: "西ヨーロッパ言語 (Mac)" [macintosh、CP10000]、"アイスランド語 (Mac)" [x-mac-icelandic、CP10079]、"中央ヨーロッパ言語 (Windows)" [iso-8859-2、CP1250]、"西ヨーロッパ言語 (Windows)" [iso-8859-1、CP1252]、"ギリシャ語 (Windows)" [iso-8859-7、CP1253]、"中央ヨーロッパ言語 (ISO)" [iso-8859-2、CP28592]、"ラテン 3 (ISO)" [iso-8859-3、CP28593]、"ギリシャ語 (ISO)" [iso-8859-7、CP28597]、"ラテン 9 (ISO)" [iso-8859-15、CP28605]、"OEM 米国" [CP437]、"西ヨーロッパ言語 (DOS)" [CP850]、"ポルトガル語 (DOS)" [CP860]、"アイスランド語 (DOS)" [CP861]、"フランス語 (カナダ) (DOS)" [CP863]、および "北欧語 (DOS)" [CP865] などの欧文のエンコードが含まれます。

<MandroidI18n>West</MandroidI18n>

MonoAndroidResourcePrefix

AndroidResource のビルド アクションで、ファイル名の先頭から削除される "パス プレフィックス" を指定します。 これにより、リソースがある場所を変更することができます。

既定値は Resources です。 Java プロジェクトの構造には、これを res に変更します。

MonoSymbolArchive

"実際の" ファイル名と行番号の情報をリリース スタック トレースから抽出するために、後で mono-symbolicate で使用するための .mSYM 成果物を作成するかどうかを制御するブール型プロパティ。

これは、デバッグ シンボルが有効になっている リリース アプリ に対しては、既定で True になっています: $(EmbedAssembliesIntoApk) が True、$(DebugSymbols) が True、および $(Optimize) が True。

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