ビルド項目
ビルド項目によって、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 プロジェクトの種類ごとに異なる影響があります。
- アプリケーションおよびクラス ライブラリ プロジェクト:
foo.jar
は AndroidJavaLibrary にマップされます。bar.aar
は AndroidAarLibrary にマップされます。
- Java バインド プロジェクト:
foo.jar
は EmbeddedJar にマップされます。Bind="false"
メタデータが追加される場合、foo.jar
は EmbeddedReferenceJar にマップされます。bar.aar
は LibraryProjectZip にマップされます。
この単純化は、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 つあります。
- パス "スニッフィング"。
%(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
でない場合は無視されます。