Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Gyakori kötési forgatókönyv egy Maven-adattárban (például Maven Central) üzemeltetett Java-kódtár kötése.
A .NET 9 támogatja a Java-kódtárak automatikus letöltését egy Maven-adattárból, és ellenőrzi a függőségeit, hogy megkönnyítse és pontosabbá tegye ezt a forgatókönyvet.
Jótanács
Ha .NET-verziót használ a .NET 9 előtt, vagy nem a Mavenből származó Java-kódtárat köt, tekintse meg a Java-kódtár kötésének dokumentációját.
Walkthrough
Ebben az útmutatóban a CircleImageView könyvtár 3.1.0 verzióját kötjük össze, amelyen a kép kör alakú vásznon jelenik meg.
A Maven-adattárban a következő azonosítókat láthatjuk ehhez a kódtárhoz, amelyekre később szükség lesz:
<dependency>
<groupId>de.hdodenhof</groupId>
<artifactId>circleimageview</artifactId>
<version>3.1.0</version>
</dependency>
A kapcsolódási könyvtár létrehozása
Először hozzon létre egy új kötéstár projektet. Ez a Visual Studióban elérhető "Android Java Binding Library" projektsablonnal vagy a dotnet következő parancssoron keresztül végezhető el:
dotnet new android-bindinglib
Nyissa meg a sablon által létrehozott projektfájlt (.csproj). Egy AndroidMavenLibrary elemet adunk hozzá egy ItemGroup belsejébe, hogy megadjuk a kötéshez használni kívánt Java-könyvtárat.
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidMavenLibrary Include="de.hdodenhof:circleimageview" Version="3.1.0" />
</ItemGroup>
Most hozza létre a projektet a Visual Studio Build parancsával vagy a parancssorból:
dotnet build
Ez a Java-kódtár már kötött, és készen áll arra, hogy egy .NET for Android-alkalmazásprojekt hivatkozzon rá, vagy nyilvános felhasználás céljából közzétehesse a NuGetben.
További lehetőségek
Felügyelt bináris kapcsolatok kerülése
Alapértelmezés szerint a C#-kötések létrejönnek minden .JAR/.AAR fájlhoz, amelyet a projektbe helyeznek. A C#-kötések létrehozása azonban bonyolult lehet, és nem szükséges, ha nem kívánja meghívni a Java API-t a C#-ból.
Ez különösen akkor fordul elő, ha a Java-kódtár egyszerűen egy másik Java-kódtár függősége, és nem kell közvetlenül a C#-ból meghívni. Ebben az esetben az Bind="false" attribútum csak a Java-függőség belefoglalására használható, de nem kötésre.
<ItemGroup>
<AndroidMavenLibrary Include="de.hdodenhof:circleimageview" Version="3.1.0" Bind="false" />
</ItemGroup>
Következő lépések
AndroidMavenLibraryBeállítások – Az útmutatótár automatikusan le lett töltve a Maven Centralról, amely az alapértelmezett adattár. Más Maven-adattárak és lehetőségek is megadhatóak.Java-függőség ellenőrzése – Az útmutatóban szereplő Java-kódtár triviális, és nem függ más Java-csomagoktól. A legtöbb kódtár más Java-csomagoktól függ, és a rendszer hibákat jelenít meg, hogy ezek a függőségek feloldhatók legyenek.
Ezeket a hibákat a kötés létrehozása előtt ki kell javítani, és a következőképpen kell kinéznie:
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.
Kötések testreszabása metaadatokkal – Az útmutatóban megkötött Java-kódtár triviális, és a kötési eszköz teljesen automatikusan C# API-vá tudta konvertálni. Sajnos ez gyakran nem így van, és gyakran lesznek fordítási hibák. Ezeket a hibákat "metaadatokkal" kell kijavítani, hogy manuálisan utasítsa a kötési eszközt a Java és a C#-nyelvek közötti különbségek megoldására.
Névterek módosítása – Az útmutatóban szereplő típusok a .NET névtérben végződnek
DE.Hdodenhof.Circleimageview. A Java-csomagnevek általában részletesebbek, mint a .NET-névterek, és célszerűbb lehet módosítani, például:CircleImageViewLibraryAndroidNamespaceReplacement
<ItemGroup>
<AndroidNamespaceReplacement Include='DE.Hdodenhof.Circleimageview' Replacement='CircleImageViewLibrary' />
</ItemGroup>