一般的なバインディング シナリオは、Maven リポジトリでホストされている Java ライブラリをバインドすることです ( Maven Central など)。
.NET 9 では、Maven リポジトリから Java ライブラリを自動的にダウンロードし、その依存関係を確認して、このシナリオをより簡単かつ正確にするためのサポートが導入されています。
ヒント
.NET 9 より前のバージョンの .NET を使用している場合、または Maven からではない Java ライブラリをバインドする場合は、 Java ライブラリのバインド ドキュメントを参照してください。
ウォークスルー
このチュートリアルでは、円形キャンバスにイメージを表示するライブラリである CircleImageView のバージョン 3.1.0 をバインドします。
Maven リポジトリから後で必要になるこのライブラリの次の識別子を確認できます。
<dependency>
<groupId>de.hdodenhof</groupId>
<artifactId>circleimageview</artifactId>
<version>3.1.0</version>
</dependency>
バインド ライブラリの作成
最初に、新しいバインド ライブラリ プロジェクトを作成します。 これは、Visual Studio で使用できる "Android Java バインド ライブラリ" プロジェクト テンプレートを使用するか、 dotnet コマンド ラインを使用して実行できます。
dotnet new android-bindinglib
テンプレートによって作成されたプロジェクト ファイル (.csproj) を開きます。 バインドする Java ライブラリを指定するために、AndroidMavenLibrary内にItemGroup要素を追加します。
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidMavenLibrary Include="de.hdodenhof:circleimageview" Version="3.1.0" />
</ItemGroup>
次に、Visual Studio の Build コマンドを使用するか、コマンド ラインからプロジェクトをビルドします。
dotnet build
この Java ライブラリはバインドされ、.NET for Android アプリケーション プロジェクトによって参照されるか、パブリックに使用するために NuGet に発行される準備が整いました。
追加のオプション
マネージド バインドをスキップする
既定では、プロジェクトに配置された任意の .JAR/.AAR に対して C# バインディングが作成されます。 ただし、C# のバインドは作成が難しい場合があり、C# から Java API を呼び出す予定がない場合は必要ありません。
これは特に、Java ライブラリが単に別の Java ライブラリの依存関係であり、C# から直接呼び出す必要がない場合です。 この場合、 Bind="false" 属性を使用して Java 依存関係のみを含めることができますが、バインドすることはできません。
<ItemGroup>
<AndroidMavenLibrary Include="de.hdodenhof:circleimageview" Version="3.1.0" Bind="false" />
</ItemGroup>
次のステップ
AndroidMavenLibraryオプション - チュートリアル ライブラリは、既定のリポジトリである Maven Central から自動的にダウンロードされました。 その他の Maven リポジトリとオプションを指定できます。Java 依存関係の検証 - チュートリアルでバインドされた Java ライブラリは簡単であり、他の Java パッケージには依存しませんでした。 ほとんどのライブラリは他の Java パッケージに依存し、これらの依存関係を確実に解決できるようにエラーが表示されます。
これらのエラーは、バインドをビルドする前に修正する必要があります。次のようになります。
error XA4241: Java dependency 'androidx.collection:collection:1.0.0' is not satisfied.
error XA4242: Java dependency 'org.jetbrains.kotlin:kotlin-stdlib:1.9.0' is not satisfied. Microsoft maintains the NuGet package 'Xamarin.Kotlin.StdLib' that could fulfill this dependency.
メタデータを使用したバインドのカスタマイズ - チュートリアルでバインドされた Java ライブラリは簡単であり、バインディング ツールは、それを C# API に完全に自動的に変換できました。 残念ながら、多くの場合、それは当てはまらず、コンパイルエラーが発生します。 Java 言語と C# 言語の違いを解決する方法をバインド ツールに手動で指示するには、これらのエラーを "メタデータ" で修正する必要があります。
名前空間の変更 - ウォークスルーの型は最終的に .NET 名前空間
DE.Hdodenhof.Circleimageviewに入ります。 Java パッケージ名は.NET 名前空間よりも詳細になる傾向があり、たとえば、CircleImageViewLibraryを使用してAndroidNamespaceReplacementする場合など、変更する方が望ましい場合があります。
<ItemGroup>
<AndroidNamespaceReplacement Include='DE.Hdodenhof.Circleimageview' Replacement='CircleImageViewLibrary' />
</ItemGroup>