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.
Běžným scénářem vazeb je vytvoření vazby knihovny Java hostované v úložišti Maven (například Maven Central).
.NET 9 zavádí podporu automatického stahování knihovny Java z úložiště Maven a ověření jejích závislostí, aby byl tento scénář jednodušší a přesnější.
Návod
Pokud používáte verzi .NET před .NET 9 nebo vazbu knihovny Java, která není z Mavenu, přečtěte si dokumentaci k vazbě knihovny Java .
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.
V úložišti Maven vidíme následující identifikátory této knihovny, které budou potřeba později:
<dependency>
<groupId>de.hdodenhof</groupId>
<artifactId>circleimageview</artifactId>
<version>3.1.0</version>
</dependency>
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
Otevřete soubor projektu (.csproj) vytvořený šablonou. Prvek AndroidMavenLibrary přidáme uvnitř ItemGroup pro určení knihovny Java, kterou chceme svázat.
<!-- Include format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidMavenLibrary Include="de.hdodenhof:circleimageview" Version="3.1.0" />
</ItemGroup>
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>
<AndroidMavenLibrary Include="de.hdodenhof:circleimageview" Version="3.1.0" Bind="false" />
</ItemGroup>
Další kroky
AndroidMavenLibraryMožnosti – knihovna návodu se automaticky stáhla z Maven Central, což je výchozí úložiště. Je možné zadat další úložiště a možnosti Mavenu.Ověřování závislostí Java – Knihovna Java vázaná v návodu je triviální a nezávisí na žádném jiném balíčku Java. Většina knihoven bude záviset na dalších balíčcích Java a chyby budou oznámeny, aby se zajistilo, že tyto závislosti lze vyřešit.
Aby bylo možné sestavení vazby, chyby musí být opraveny a vypadají takto:
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.
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>