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.
Az Android-közösség számos Java-kódtárat kínál, amelyeket érdemes lehet használni az alkalmazásban. Ezek a Java-kódtárak gyakran .JAR (Java Archive) vagy .AAR (Android Archive) formátumban vannak csomagolva, de csomagolhat egy .JAR/.AAR fájlt egy Java-kötéstárba, így annak funkciói elérhetők a .NET-alapú Android-alkalmazások számára. A Java Bindings könyvtár célja, hogy a .JAR/.AAR fájl API-jait automatikusan generált kódcsomagok révén elérhetővé tegye a C# kód számára.
Jótanács
A .NET 9 támogatja a Java-kódtárak automatikus letöltését és kötését egy Maven-adattárból. A forgatókönyv egyszerűsítése érdekében tekintse meg a Java-kódtár kötését a Maven dokumentációjából .
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árból töltse le circleimageview-3.1.0.aar helyileg a kötéshez.
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
Másolja a fájlt a circleimageview-3.1.0.aar projektkönyvtárba.
A .NET SDK stílusú projektekhez hasonlóan a .NET for Android binding projektek is automatikusan tartalmazzák a projektkönyvtárban található .JAR/.AAR fájlokat típusú fájlként AndroidLibrary, így nincs szükség további konfigurációra.
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>
<AndroidLibrary Update="circleimageview-3.1.0.aar" Bind="false" />
</ItemGroup>
Vegye figyelembe, hogy ha automatikus importálást használ, az automatikusan importált fájlt kell Update módosítania, ahelyett, hogy Include egy további példányt hozna létre.
Java-függőségek
A Java-kódtárak más Java-kódtáraktól is függhetnek, amelyeket az alkalmazással együtt kell csomagolni ahhoz, hogy az alkalmazás működjön. Ez az információ hagyományosan egy .POM-fájlban található, és az ön feladata annak biztosítása, hogy a szükséges függőségekre megfelelően hivatkozzon, általában egy NuGet-csomagon keresztül vagy a szükséges .JAR/.AAR fájlok projektbe csomagolásával.
A .NET 9-ben hozzáadták a Java függőség-ellenőrzési funkcióját. A POM-fájl biztosítja, hogy a kötési eszköz segítségével minden szükséges Java függőség teljesüljön.
Ha engedélyezni szeretné a Java-függőségek ellenőrzését az útmutatónk során, győződjön meg arról, hogy a .NET 9+ verziót használja, és a projektje net9.0-android vagy annál magasabb verziót céloz meg.
A Maven-adattárból töltse le circleimageview-3.1.0.pom helyileg, és helyezze a projektmappába. Vegye figyelembe, hogy a POM-fájlok nem lesznek automatikusan észlelve, mert a megfelelő .JAR/.AAR fájlokkal kell őket társítani.
Frissítse az automatikusan importált AndroidLibrary értéket, hogy a Manifest attribútummal megadja a .POM-fájl helyét. Továbbá adja meg a JavaArtifact és JavaVersion Java-könyvtárat.
<!-- 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>
Ez a kódtár triviális, és nem rendelkezik Java-függőségekkel, de ha igen, és nem lettek kielégítve, a következőhöz hasonló hiba jelenik meg:
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.
A Java-függőségek ellenőrzésének konfigurálásáról és a függőségek teljesítésének módjáról a dokumentációban talál további információt.
Következő lépések
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>