Android 用 .NET で Java ライブラリが使用されるようにバインドされると、使用できる方法は複数あります。
プロジェクト参照 - バインド プロジェクトとアプリケーション プロジェクトが同じソリューション ファイル内にある場合は、通常、
<ProjectReference>
を使用するのが最も簡単な方法です。NuGet パッケージ - NuGet パッケージは、パブリック発行や、内部 NuGet サーバーを持つ内部分散開発環境に最適です。
ファイル参照 - 使用しているアプリケーションは、バインド プロジェクトも NuGet サーバーも使用できない場合、バインド
.dll
に<Reference>
を直接追加できます。
バインドとパッケージ化のオプションの制御
バインド ライブラリ プロジェクトには、 <AndroidLibrary>
がバインドされて再配布されるかどうかを制御するための 2 つのオプションがあります。
- バインド (
true
/false
) - 既定値はtrue
で、指定した<AndroidLibrary>
に対してマネージド バインドが作成されます。false
に設定すると、Java ライブラリは出力に含まれますが、マネージド バインドは含まれません。 これは、ライブラリに別の Java ライブラリの必要な依存関係があるが、C# から呼び出されない場合に便利です。
<!-- Java library will have C# bindings and be included in the output -->
<AndroidLibrary Include="okhttp-4.12.0.jar" />
<!-- Java library will not have C# bindings but will still be included in the output -->
<AndroidLibrary Include="okio-3.9.0.jar" Bind="false" />
- Pack (
true
/false
) - 既定値はtrue
です。つまり、指定した<AndroidLibrary>
が出力に含まれます (NuGet パッケージなど)。false
に設定すると、Java ライブラリは出力に含まれません。 これは、依存関係が既に代替手段によって提供されている場合のまれなシナリオです。
<!-- Java library will have C# bindings and be included in the output -->
<AndroidLibrary Include="okhttp-4.12.0.jar" />
<!-- Java library will have C# bindings but will *not* be included in the output -->
<AndroidLibrary Include="okio-3.9.0.jar" Pack="false" />
ProjectReference
バインド プロジェクトとアプリケーション プロジェクトが同じソリューション ファイル内にある場合は、通常、 <ProjectReference>
を使用するのが、バインディングを使用する最も簡単な方法です。
<ProjectReference Include="mybindinglib.csproj" />
ビルド システムは、マネージド バインドと .jar
/.aar
ファイルをアプリケーション プロジェクトに追加する役割を担います。
NuGet パッケージ
.NET SDK スタイルのプロジェクトから継承されたプロパティとして、Visual Studio またはコマンド ラインから "Pack" コマンドを使用して、任意のバインド ライブラリを再頒布可能 NuGet パッケージに簡単にパッケージ化できます。
dotnet pack
バインド ライブラリと Java ライブラリは、NuGet パッケージに含まれます。
上記の Pack
属性を使用して、NuGet パッケージで必要な Java ライブラリを制御します。
NuGet パッケージは、 標準の .NET MSBuild 要素を使用してカスタマイズできます。
ファイル リファレンス
上記のいずれのオプションも使用できない場合は、バインド .dll
を <Reference>
要素で直接参照できます。 バインド プロジェクトの出力の一部である Java ライブラリは、バインド .dll
として same ディレクトリに存在する必要があることに注意してください。
バインド .dll
だけを別の場所に移動またはコピーし、 .jar
/.dll
ファイルも移動またはコピーしない場合、アプリケーションでは終了せず、実行時にバインドは失敗します。
重要
クラシック Xamarin.Android では、 EmbeddedJar
のような項目アクションを使用すると、 .jar
ファイルが .dll
内に配置され、必要なファイルは 1 つだけになります。 .NET for Android では、埋め込み Java ライブラリ ファイルをスキャンして抽出するためのアプリケーション ビルド時間が大幅に増加したため、このサポートは削除されました。 必要な .jar
/.dll
ファイルは、バインド .dll
と同じディレクトリに配置する必要があります。