Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Uno scenario di associazione comune è l'associazione di una libreria Java ospitata in un repository Maven (ad esempio Maven Central).
.NET 9 introduce il supporto per il download automatico di una libreria Java da un repository Maven e la verifica delle relative dipendenze per semplificare e rendere questo scenario più semplice e accurato.
Suggerimento
Se si usa una versione .NET precedente a .NET 9 o si associa una libreria Java che non proviene da Maven, vedere la documentazione relativa all'associazione di una libreria Java.
guida dettagliata
In questa guida verrà collegata la versione 3.1.0 di CircleImageView, una libreria che visualizza un'immagine in un'area di disegno circolare.
Dal repository Maven è possibile visualizzare gli identificatori seguenti per questa libreria che saranno necessari in un secondo momento:
<dependency>
<groupId>de.hdodenhof</groupId>
<artifactId>circleimageview</artifactId>
<version>3.1.0</version>
</dependency>
Creazione della libreria dei binding
Creare prima di tutto un nuovo progetto libreria binding. Questa operazione può essere eseguita con il modello di progetto "Libreria di binding Java Android" disponibile in Visual Studio o tramite la dotnet riga di comando con:
dotnet new android-bindinglib
Aprire il file di progetto (.csproj) creato dal modello. Aggiungeremo un elemento AndroidMavenLibrary all'interno di un ItemGroup per specificare la libreria Java che vogliamo associare.
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidMavenLibrary Include="de.hdodenhof:circleimageview" Version="3.1.0" />
</ItemGroup>
Compilare ora il progetto usando il comando Compila di Visual Studio o dalla riga di comando:
dotnet build
Questa libreria Java è stata associata ed è pronta per essere referenziata da un progetto di applicazione .NET per Android o pubblicata su NuGet per l'utilizzo pubblico.
Opzioni aggiuntive
Saltare le associazioni gestite
Per impostazione predefinita, le associazioni C# verranno create per qualsiasi .JAR/.AAR inserito nel progetto. Tuttavia, le associazioni C# possono essere difficili da creare e non sono necessarie se non si intende chiamare l'API Java da C#.
Questo è soprattutto il caso in cui la libreria Java è semplicemente una dipendenza di un'altra libreria Java e non deve essere chiamata direttamente da C#. In questo caso, l'attributo Bind="false" può essere usato solo per includere la dipendenza Java, ma non per associarla.
<ItemGroup>
<AndroidMavenLibrary Include="de.hdodenhof:circleimageview" Version="3.1.0" Bind="false" />
</ItemGroup>
Passaggi successivi
AndroidMavenLibraryOpzioni : la libreria della procedura dettagliata è stata scaricata automaticamente da Maven Central, ovvero il repository predefinito. È possibile specificare altri repository e opzioni Maven.Verifica delle dipendenze Java - La libreria Java illustrata nella guida è semplice e non dipende da altri pacchetti Java. La maggior parte delle librerie dipenderà da altri pacchetti Java e verranno visualizzati errori per garantire che queste dipendenze possano essere risolte.
Questi errori devono essere corretti prima che il processo di compilazione possa essere eseguito, e si presentano come segue:
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.
Personalizzazione di binding con metadati: la libreria Java legata nella guida passo-passo è semplice e gli strumenti di binding sono stati in grado di convertirla completamente in un'API C#. Sfortunatamente questo non è spesso il caso e spesso si verificano errori di compilazione. Questi errori devono essere corretti con "metadati" per indicare manualmente agli strumenti di associazione come risolvere le differenze tra i linguaggi Java e C#.
Modifica degli spazi dei nomi: i tipi nella procedura dettagliata finiscono nello spazio dei nomi .NET
DE.Hdodenhof.Circleimageview. I nomi dei pacchetti Java tendono ad essere più verbosi dei namespace .NET e potrebbe essere preferibile modificarli, ad esempio usandoCircleImageViewLibraryAndroidNamespaceReplacement.
<ItemGroup>
<AndroidNamespaceReplacement Include='DE.Hdodenhof.Circleimageview' Replacement='CircleImageViewLibrary' />
</ItemGroup>