ビルド項目

ビルド項目によって、Xamarin Android アプリケーションまたはライブラリ プロジェクトのビルド方法が制御されます。

AndroidAsset

Java Android プロジェクトの assets フォルダーに含まれるファイルである Android アセットをサポートしています。

AndroidAarLibrary

.aar ファイルを直接参照するには、AndroidAarLibrary のビルド アクションを使用する必要があります。 このビルド アクションは、Xamarin コンポーネントで最もよく使用されます。 つまり、Google Play やその他のサービスを動作させるために必要な .aar ファイルへの参照を含めるためです。

このビルド アクションを使用するファイルは、ライブラリ プロジェクトで見つかる埋め込みリソースと同様に扱われます。 .aar は、中間ディレクトリに抽出されます。 次に、すべてのアセット、リソース、.jar ファイルが、適切な項目グループに含まれます。

AndroidAotProfile

ガイド付き AOT のプロファイルでの使用を目的に、AOT プロファイルを提供するために使用されます。

また、Visual Studio から、AOT プロファイルを含むファイルに AndroidAotProfile ビルド アクションを設定して使用することもできます。

AndroidAppBundleMetaDataFile

Android App Bundle にメタデータとして含めるファイルを指定します。 フラグ値の形式は <bundle-path>:<physical-file> です。ここで、bundle-path は App Bundle のメタデータ ディレクトリ内のファイルの場所を示し、physical-file は格納する生データを含む既存のファイルです。

<ItemGroup>
  <AndroidAppBundleMetaDataFile
    Include="com.android.tools.build.obfuscation/proguard.map:$(OutputPath)mapping.txt"
  />
</ItemGroup>

詳しくは、bundletool のドキュメントをご覧ください。

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

AndroidBoundLayout

AndroidGenerateLayoutBindings プロパティが false に設定された場合に、レイアウト ファイルにコードビハインドが生成されることを示します。 その他すべての面において、これは上記で説明された AndroidResource と同じです。 このアクションは、次のレイアウト ファイルでのみ使用できます。

<AndroidBoundLayout Include="Resources\layout\Main.axml" />

AndroidEnvironment

AndroidEnvironment のビルド アクションを持つファイルは、プロセスの起動時に環境変数とシステム プロパティを初期化するために使用されます。 AndroidEnvironment ビルド アクションは、複数のファイルに適用でき、任意の順序で評価されます (そのため、複数のファイルで同じ環境変数またはシステム プロパティを指定しないでください)。

AndroidJavaLibrary

AndroidJavaLibrary のビルド アクションを持つファイルは、最終的な Android パッケージに含まれる Java アーカイブ (.jar ファイル) です。

AndroidJavaSource

AndroidJavaSource のビルド アクションを持つファイルは、最終的な Android パッケージに含まれる Java ソース コードです。

.NET 7 以降では、プロジェクト ディレクトリ内のすべての **\*.java ファイルが AndroidJavaSource のビルド アクションを持ち、"かつ" Assembly ビルドの前にバインドされます。 **\*.java ファイル内に存在する型とメンバーを、C# コードが簡単に使用できるようにします。

この動作を無効にするには、%(AndroidJavaSource.Bind) を False に設定します。

AndroidLibrary

Androidlibrary は、プロジェクトへの .jar.aar のファイルの含め方を簡略化するための新しいビルド アクションです。

どのプロジェクトでも以下を指定できます。

<ItemGroup>
  <AndroidLibrary Include="foo.jar" />
  <AndroidLibrary Include="bar.aar" />
</ItemGroup>

上記のコード スニペットの結果は、Xamarin.Android プロジェクトの種類ごとに異なる影響があります。

  • アプリケーションおよびクラス ライブラリ プロジェクト:
  • Java バインド プロジェクト:

この単純化は、Androidlibrary をどこでも使用できることを意味します。

このビルド アクションは、Xamarin.Android 11.2 で追加されました。

AndroidLintConfig

ビルド アクション 'AndroidLintConfig' は、 プロパティと組み合わせて使用する必要があります。$(AndroidLintEnabled) プロパティ。 このビルド アクションを含むファイルはマージされ、Android の lint ツールに渡されます。 これは、有効および無効にするテストに関する情報を含んだ XML ファイルになります。

詳細については、Lint に関するドキュメントを参照してください。

AndroidManifestOverlay

AndroidManifestOverlay ビルド アクションを使用して、AndroidManifest.xml ファイルを Manifest Merger ツールに提供できます。 このビルド アクションを含むファイルは、メインの AndroidManifest.xml ファイルと、参照からのマニフェスト ファイルと共に、Manifest Merger ツールに渡されます。 これらは、最終的なマニフェストにマージされます。

このビルド アクションを使用すると、ビルド構成に応じて変更や設定をアプリに提供できます。 たとえば、デバッグ中にのみ特定のアクセス許可が必要な場合は、オーバーレイを使用してデバッグ時にそのアクセス許可を挿入できます。 たとえば、次のようなオーバーレイ ファイルのコンテンツがあるとします。

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  <uses-permission android:name="android.permission.CAMERA" />
</manifest>

以下を使用すると、デバッグ ビルドにマニフェスト オーバーレイを追加できます。

<ItemGroup>
  <AndroidManifestOverlay Include="DebugPermissions.xml" Condition=" '$(Configuration)' == 'Debug' " />
</ItemGroup>

このビルド アクションは、Xamarin.Android 11.2 で導入されました。

AndroidInstallModules

アプリ バンドルをインストールするときに bundletool コマンドによってインストールされるモジュールを指定します。

このビルド アクションは、Xamarin.Android 11.3 で導入されました。

AndroidNativeLibrary

ネイティブ ライブラリは、そのビルド アクションを AndroidNativeLibrary に設定することで、ビルドに追加されます。

Android では、複数のアプリケーション バイナリ インターフェイス (ABI) をサポートしているため、ビルド システムではネイティブ ライブラリがどの ABI に対してビルドされているかを知る必要があります。 ABI を指定する方法は 2 つあります。

  1. パス "スニッフィング"。
  2. %(Abi) 項目メタデータを使用する。

パス スニッフィングを使用すると、ネイティブ ライブラリの親ディレクトリ名が、ライブラリがターゲットとする ABI を指定するために使用されます。 したがって、ビルドに lib/armeabi-v7a/libfoo.so を追加すると、ABI は armeabi-v7a として "スニッフィング" されます。

項目属性名

Abi – ネイティブ ライブラリの ABI を指定します。

<ItemGroup>
  <AndroidNativeLibrary Include="path/to/libfoo.so">
    <Abi>armeabi-v7a</Abi>
  </AndroidNativeLibrary>
</ItemGroup>

AndroidResource

AndroidResource ビルド アクションを持つすべてのファイルは、ビルド プロセス中に Android リソースにコンパイルされ、$(AndroidResgenFile) を介してアクセスできます。

<ItemGroup>
  <AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>

上級ユーザーであれば、同じ効果的なパスを使用して、別の構成で使用されている別のリソースを使用したいと考えるかもしれません。 これは、複数のリソース ディレクトリとファイルにこれらの異なるディレクトリ内で同じ相対パスを持たせ、MSBuild 条件を使用して、異なる構成の異なるファイルを条件付きで含めることで実現できます。 次に例を示します。

<ItemGroup Condition="'$(Configuration)'!='Debug'">
  <AndroidResource Include="Resources\values\strings.xml" />
</ItemGroup>
<ItemGroup  Condition="'$(Configuration)'=='Debug'">
  <AndroidResource Include="Resources-Debug\values\strings.xml"/>
</ItemGroup>
<PropertyGroup>
  <MonoAndroidResourcePrefix>Resources;Resources-Debug</MonoAndroidResourcePrefix>
</PropertyGroup>

LogicalName – リソース パスを明示的に指定します。 ファイルの "別名定義" を許可して、複数の個別のリソース名として使用できるようにします。

<ItemGroup Condition="'$(Configuration)'!='Debug'">
  <AndroidResource Include="Resources/values/strings.xml"/>
</ItemGroup>
<ItemGroup Condition="'$(Configuration)'=='Debug'">
  <AndroidResource Include="Resources-Debug/values/strings.xml">
    <LogicalName>values/strings.xml</LogicalName>
  </AndroidResource>
</ItemGroup>

AndroidResourceAnalysisConfig

ビルド アクション AndroidResourceAnalysisConfig は、Xamarin Android Designer レイアウト診断ツールの重大度レベルの構成ファイルとしてファイルをマークします。 これは現在、レイアウト エディターでのみ使用され、ビルド メッセージでは使用されません。

詳細については、Android リソース分析のドキュメントを参照してください。

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

Content

通常の Content ビルド アクションはサポートされていません (コストのかかる可能性がある最初の実行手順を行わずにサポートする方法が見つかっていないからです)。

Xamarin.Android 5.1 以降では、@(Content) ビルド アクションを使用しようとすると、XA0101 警告が発生します。

EmbeddedJar

Xamarin.Android バインド プロジェクトでは、EmbeddedJar ビルド アクションによって Java または Kotlin ライブラリがバインドされ、.jar ファイルがライブラリに埋め込まれます。 Xamarin.Android アプリケーション プロジェクトでライブラリが使用されると、C# から Java または Kotlin API にアクセスできるだけでなく、最終的な Android アプリケーションに Java または Kotlin コードを含めることができます。

Xamarin.Android 11.2 以降、Androidlibrary ビルド アクションを次のように別の方法として使用できます。

<Project>
  <ItemGroup>
    <AndroidLibrary Include="Library.jar" />
  </ItemGroup>
</Project>

EmbeddedNativeLibrary

Xamarin.Android クラス ライブラリまたは Java バインド プロジェクトでは、EmbeddedNativeLibrary ビルド アクションによって lib/armeabi-v7a/libfoo.so などのネイティブ ライブラリがライブラリにバンドルされます。 Xamarin.Android アプリケーションでライブラリが使用されると、libfoo.so ファイルが最終的な Android アプリケーションに含められます。

Xamarin.Android 11.2 以降、別の方法として AndroidNativeLibrary ビルド アクションを使用できます。

EmbeddedReferenceJar

Xamarin.Android バインド プロジェクトでは、EmbeddedReferenceJar ビルド アクションによって .jar ファイルがライブラリに埋め込まれますが、EmbeddedJar と同じように C# バインドは作成されません。 Xamarin.Android アプリケーション プロジェクトでライブラリが使用されると、Java または Kotlin コードが最終的な Android アプリケーションに含まれます。

Xamarin.Android 11.2 以降、<AndroidLibrary Include="..." Bind="false" /> のような別の方法として AndroidLibrary ビルド アクションを使用できます。

<Project>
  <ItemGroup>
    <!-- A .jar file to bind & embed -->
    <AndroidLibrary Include="Library.jar" />
    <!-- A .jar file to only embed -->
    <AndroidLibrary Include="Dependency.jar" Bind="false" />
  </ItemGroup>
</Project>

JavaDocJar

Xamarin.Android バインド プロジェクトでは、Javadoc HTML を含む .jar ファイルに対して JavaDocJar ビルド アクションが使用されます。 Javadoc HTML は、パラメーター名を抽出するために解析されます。

次のような特定の "Javadoc HTML 言語" のみがサポートされています。

  • JDK 1.7 javadoc の出力。
  • JDK 1.8 javadoc の出力。
  • Droiddoc の出力。

このビルド アクションは、Xamarin.Android 11.3 では非推奨とされており、.NET 6 ではサポートされません。 @(JavaSourceJar) ビルド アクションが推奨されます。

JavaSourceJar

Xamarin.Android バインド プロジェクトでは、"Java ソースコード" (これには Javadoc ドキュメント コメントが含まれます) を含む .jar ファイルに対して JavaSourceJar ビルド アクションが使用されます。

Xamarin.Android 11.3 より前では、Javadoc がビルド時に javadoc ユーティリティを使用して HTML に変換され、後で XML ドキュメントになります。

Xamarin.Android 11.3 以降では、代わりに、生成されたバインディング ソース コード内の C# XML ドキュメント コメントに Javadoc が変換されます。

インポートされた Javadoc の "verbose" または "complete" の程度は、$(AndroidJavadocVerbosity) によって制御されます。

Xamarin.Android 11.3 以降では、次の MSBuild メタデータがサポートされています。

  • %(CopyrightFile): インポートされたすべてのドキュメントに追加される Javadoc コンテンツの著作権情報を含むファイルへのパス。

  • %(UrlPrefix): インポートされたドキュメント内のオンライン ドキュメントへのリンクをサポートする URL プレフィックス。

  • %(UrlStyle): オンライン ドキュメントにリンクするときに生成する URL の "スタイル"。 現在サポートされているスタイルは、developer.android.com/reference@2020-Nov の 1 つだけです。

Xamarin.Android 12.3 以降では、次の MSBuild メタデータがサポートされています。

  • %(DocRootUrl): インポートされたドキュメント内のすべての {@docroot} インスタンスの代わりに使用する URL プレフィックス。

LibraryProjectZip

Xamarin.Android バインド プロジェクトでは、LibraryProjectZip ビルド アクションによって Java または Kotlin ライブラリがバインドされ、.zip または .aar ファイルがライブラリに埋め込まれます。 Xamarin.Android アプリケーション プロジェクトでライブラリが使用されると、C# から Java または Kotlin API にアクセスできるだけでなく、最終的な Android アプリケーションに Java または Kotlin コードを含めることができます。

Note

Xamarin.Android バインド プロジェクトに含めることができる LibraryProjectZip は 1 つだけです。 この制限は、.NET 6 で解除される予定です。

LinkDescription

LinkDescription ビルド アクションを持つファイルは、リンカーの動作を制御するために使用されます。

ProguardConfiguration

ProguardConfiguration ビルド アクションを持つファイルは、proguard 動作を制御するために使用されます。 このビルド アクションの詳細については、「ProGuard」を参照してください。

これらのファイルは、これらのファイルは、$(EnableProguard) MSBuild プロパティが True でない場合は無視されます。