Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De Android-community biedt veel Java-bibliotheken die u mogelijk wilt gebruiken in uw app. Deze Java-bibliotheken worden vaak verpakt in .JAR (Java Archive) of .AAR (Android Archive) indeling, maar u kunt een .JAR/.AAR in een Java Bindings-bibliotheek verpakken zodat de functionaliteit beschikbaar is voor .NET voor Android-toepassingen. Het doel van de Java Bindings-bibliotheek is om de API's in de .JAR/.AAR-bestanden beschikbaar te maken voor C#-code via automatisch gegenereerde code-wrappers.
Aanbeveling
.NET 9 introduceert ondersteuning voor het automatisch downloaden en binden van een Java-bibliotheek vanuit een Maven-opslagplaats. Zie de Documentatie voor binding van een Java-bibliotheek uit Maven om dit scenario te vereenvoudigen.
Stapsgewijze handleiding
In dit scenario gaan we de versie 3.1.0 van CircleImageView binden, een bibliotheek die een afbeelding op een cirkelvormig canvas weergeeft.
Download lokaal vanuit de Maven-opslagplaatscircleimageview-3.1.0.aar om te worden gebonden.
De bindingsbibliotheek maken
Maak eerst een nieuw Bindings Library-project. Dit kan worden gedaan met de projectsjabloon 'Android Java Binding Library' die beschikbaar is in Visual Studio of via de dotnet opdrachtregel met:
dotnet new android-bindinglib
Kopieer het circleimageview-3.1.0.aar bestand naar de projectmap.
Net als .NET SDK-stijlprojecten bevatten .NET voor Android-bindingsprojecten automatisch een . JAR/. AAR-bestanden in de projectmap als een AndroidLibrary typebestand, dus er is geen aanvullende configuratie nodig.
Bouw nu het project met behulp van de opdracht Build van Visual Studio of vanaf de opdrachtregel:
dotnet build
Deze Java-bibliotheek is nu gebonden en kan worden verwezen door een .NET voor Android-toepassingsproject of gepubliceerd naar NuGet voor openbaar gebruik.
Aanvullende opties
Beheerde bindingen overslaan
Standaard worden C#-bindingen gemaakt voor elke . JAR/. AAR in het project geplaatst. C#-bindingen kunnen echter lastig zijn om te maken en zijn niet nodig als u niet van plan bent om de Java-API aan te roepen vanuit C#.
Dit is met name het geval wanneer de Java-bibliotheek gewoon een afhankelijkheid is van een andere Java-bibliotheek en niet rechtstreeks vanuit C# hoeft te worden aangeroepen. In dit geval kan het Bind="false" kenmerk worden gebruikt om alleen de Java-afhankelijkheid op te nemen, maar niet te binden.
<ItemGroup>
<AndroidLibrary Update="circleimageview-3.1.0.aar" Bind="false" />
</ItemGroup>
Als u automatische importbewerkingen gebruikt, moet u het automatisch geïmporteerde bestand met Update wijzigen in plaats van een extra kopie toe te voegen.Include
Java-afhankelijkheden
Een Java-bibliotheek kan afhankelijk zijn van andere Java-bibliotheken die moeten worden verpakt met uw toepassing om ervoor te zorgen dat uw toepassing werkt. Deze informatie wordt traditioneel verstrekt in een . POM-bestand en het is uw verantwoordelijkheid om ervoor te zorgen dat eventuele benodigde afhankelijkheden naar behoren worden verwezen, meestal via een NuGet-pakket of door de benodigde te bundelen. JAR/. AAR-bestanden in uw project.
In .NET 9 is de functie Java-afhankelijkheidsverificatie toegevoegd. Door het .POM-bestand te verstrekken, kan het bindingshulpprogramma ervoor zorgen dat aan alle vereiste Java-afhankelijkheden is voldaan.
Als u Verificatie van Java-afhankelijkheden wilt inschakelen voor onze procedure, moet u ervoor zorgen dat u .NET 9+ en uw projectdoelen net9.0-android of hoger gebruikt.
Download lokaal vanuit de circleimageview-3.1.0.pom en plaats deze in uw projectmap. Houd er rekening mee dat .POM-bestanden niet automatisch worden gedetecteerd omdat ze gekoppeld moeten worden aan de juiste .JAR/.AAR.
Werk de automatisch geïmporteerde AndroidLibrary bij om de locatie van het .POM-bestand met Manifest kenmerk te specificeren. Geef bovendien de JavaArtifact en JavaVersion van de Java-bibliotheek op:
<!-- JavaArtifact format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidLibrary
Update="circleimageview-3.1.0.aar"
Manifest="circleimageview-3.1.0.pom"
JavaArtifact="de.hdodenhof:circleimageview"
JavaVersion="3.1.0" />
</ItemGroup>
Deze bibliotheek is triviaal en heeft geen Java-afhankelijkheden, maar als dat wel het geval is en ze niet zijn uitgevoerd, wordt er een fout zoals deze verzonden:
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.
Aanvullende informatie over het configureren van Verificatie van Java-afhankelijkheden en het voldoen aan afhankelijkheden vindt u in de documentatie.
Volgende stappen
Bindingen aanpassen met metagegevens : de Java-bibliotheek die in het overzicht is gebonden, is triviaal en de bindingshulpprogramma's konden deze volledig automatisch converteren naar een C#-API. Helaas is dit vaak niet het geval en zijn er vaak compilatiefouten. Deze fouten moeten worden opgelost met 'metagegevens' om handmatig de bindingshulpprogramma's te instrueren om verschillen tussen de Java- en C#-talen op te lossen.
Naamruimten wijzigen : de typen in het overzicht eindigen op de .NET-naamruimte
DE.Hdodenhof.Circleimageview. Java-pakketnamen zijn meestal uitgebreider dan .NET-naamruimtes, en het kan wenselijk zijn om ze aan te passen, bijvoorbeeldCircleImageViewLibrarymet eenAndroidNamespaceReplacement:
<ItemGroup>
<AndroidNamespaceReplacement Include='DE.Hdodenhof.Circleimageview' Replacement='CircleImageViewLibrary' />
</ItemGroup>