Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Komunita Androidu nabízí mnoho knihoven Java, které můžete chtít použít ve své aplikaci. Tyto knihovny Java jsou často zabaleny ve formátu .JAR (Java Archive) nebo .AAR (Android Archive), ale můžete knihovně vazeb Java zabalit .JAR/.AAR tak, aby její funkce byly k dispozici pro aplikace .NET pro Android. Účelem knihovny Java Bindings je zpřístupnit rozhraní API v souboru .JAR/.AAR pro kód jazyka C# prostřednictvím automaticky generovaných zabalení kódu.
Návod
.NET 9 zavádí podporu pro automatické stahování a vazbu knihovny Java z úložiště Maven. Pro zjednodušení tohoto scénáře si přečtěte dokumentaci k vytvoření vazby pro knihovnu Java z Mavenu.
Návod
V tomto průvodci propojíme verzi 3.1.0 knihovny CircleImageView, což je knihovna, která zobrazuje obrázek v kruhovém rámečku.
Z úložiště Maven si stáhněte circleimageview-3.1.0.aar místně, aby bylo možné ho svázat.
Vytvoření knihovny vazeb
Nejprve vytvořte nový projekt Knihovny vazeb. Můžete to provést pomocí šablony projektu "Android Java Binding Library", která je k dispozici v sadě Visual Studio, nebo pomocí příkazového dotnet řádku:
dotnet new android-bindinglib
circleimageview-3.1.0.aar Zkopírujte soubor do adresáře projektu.
Stejně jako projekty ve stylu sady .NET SDK, projekty vazeb pro .NET pro Android automaticky zahrnují všechny .JAR/.AAR soubory v adresáři projektu jako soubor typu AndroidLibrary, takže není potřeba žádná další konfigurace.
Teď sestavte projekt pomocí příkazu Sestavení sady Visual Studio nebo z příkazového řádku:
dotnet build
Tato knihovna Java byla nyní navázána a je připravena k odkazování v projektu aplikace .NET pro Android nebo k publikování na NuGet pro veřejné použití.
Další možnosti
Přeskočte spravované vazby
Ve výchozím nastavení se pro všechny bindingy jazyka C# vytvoří .JAR/.AAR umístěné v projektu. Vazby jazyka C# ale můžou být složité vytvořit a nejsou nutné, pokud nemáte v úmyslu volat rozhraní Java API z jazyka C#.
To platí zejména v případě, že je knihovna Java jednoduše závislostí jiné knihovny Java a není nutné ji volat přímo z jazyka C#. V tomto případě Bind="false" lze atribut použít pouze k zahrnutí závislosti Java, ale ne k vytvoření vazby.
<ItemGroup>
<AndroidLibrary Update="circleimageview-3.1.0.aar" Bind="false" />
</ItemGroup>
Poznámka: Pokud použijete automatické importy, budete muset použít Update ke změně automaticky importovaného souboru místo přidání další kopie s Include.
Závislosti v Javě
Knihovna Java může záviset na jiných knihovnách Java, které budou potřeba zabalit do vaší aplikace, aby aplikace fungovala. Tyto informace jsou tradičně poskytovány v souboru .POM a je vaší zodpovědností zajistit, aby se všechny potřebné závislosti správně odkazovaly, obvykle prostřednictvím balíčku NuGet nebo zahrnutím potřebných souborů .JAR/.AAR do vašeho projektu.
V .NET 9 byla přidána funkce ověřování závislostí Java. Poskytnutím .POM souboru vám nástroje pro tvorbu vazeb můžou pomoci zajistit splnění všech požadovaných závislostí na Javě.
Pokud chcete pro náš průvodce povolit ověřování závislostí Javy, ujistěte se, že používáte .NET 9+ a váš projekt cílí na net9.0-android nebo vyšší.
Z úložiště Maven si stáhněte circleimageview-3.1.0.pom místně a umístěte ho do složky projektu. Vezměte na vědomí, že soubory .POM se nezjistí automaticky, protože je nutné je přidružit ke správnému .JAR/.AAR.
Aktualizujte automaticky importované AndroidLibrary, abyste určili umístění souboru .POM s atributem Manifest. Dále zadejte parametry JavaArtifact a JavaVersion knihovny Java:
<!-- 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>
Tato knihovna je triviální a neobsahuje žádné závislosti na Javě, ale pokud by tomu tak bylo a nebyly splněny, taková chyba by byla vyvolána.
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.
Další informace o konfiguraci ověřování závislostí v Javě a o tom, jak vyhovět závislostem, najdete v dokumentaci.
Další kroky
Přizpůsobení vazeb pomocí metadat – knihovna Java uvedená v návodu je triviální a nástroje pro vazby ji dokázaly automaticky převést na API jazyka C#. Bohužel to často není případ a často dochází k chybám kompilace. Tyto chyby musí být opraveny pomocí "metadat", aby nástroje pro vazby ručně daly pokyn, jak vyřešit rozdíly mezi jazyky Java a C#.
Změna oborů názvů – Datové typy v návodu se nacházejí v oboru názvů .NET
DE.Hdodenhof.Circleimageview. Názvy balíčků Java mají tendenci být více podrobné než obory názvů .NET a může být vhodnější je změnit, například použítCircleImageViewLibraryAndroidNamespaceReplacement:
<ItemGroup>
<AndroidNamespaceReplacement Include='DE.Hdodenhof.Circleimageview' Replacement='CircleImageViewLibrary' />
</ItemGroup>