Kötéstárak elosztása

Miután egy Java-kódtárat kötöttek az Androidhoz készült .NET-ben való használathoz, többféleképpen is felhasználható:

  • Projekthivatkozás – Ha a kötési projekt és az alkalmazásprojekt ugyanabban a megoldásfájlban található, a kötés fogyasztásának legegyszerűbb módja általában egy <ProjectReference> használata.

  • NuGet-csomag – A NuGet-csomag ideális nyilvános közzétételhez vagy belső NuGet-kiszolgálóval rendelkező belső elosztott fejlesztési környezethez.

  • Fájlhivatkozás – A fogyasztó alkalmazás közvetlenül hozzáadhat egy <Reference> egy kötéshez .dll , ha sem a kötési projekt, sem a NuGet-kiszolgáló nem érhető el.

Kötési és csomagolási lehetőségek szabályozása

A kötéstárprojektek kétféleképpen szabályozhatók, ha egy <AndroidLibrary> kötés meg van kötve, és újraterjesztésre kerül:

  • Kötés (true/false) - Alapértelmezés szerint true, ami azt jelenti, hogy a megadott <AndroidLibrary> felügyelt kötések jönnek létre. A beállítás azt jelenti, hogy false a Java-kódtár szerepelni fog a kimenetben, de nem lesznek felügyelt kötések. Ez akkor hasznos, ha a könyvtár egy másik Java-könyvtár szükséges függősége, de nem fogják C#-ból meghívni.
<!-- Java library will have C# bindings and be included in the output -->
<AndroidLibrary Include="okhttp-4.12.0.jar" />

<!-- Java library will not have C# bindings but will still be included in the output -->
<AndroidLibrary Include="okio-3.9.0.jar" Bind="false" />
  • Csomag (true/false) – Alapértelmezett érték, ami azt jelenti, hogy truea megadott <AndroidLibrary> elem szerepelni fog a kimenetben (például Egy NuGet-csomag). A false értékre állítás azt jelenti, hogy a Java könyvtár nem kerül bele a kimenetbe. Ez egy ritka eset, ha a függőséget már alternatív eszközökkel biztosítják.
<!-- Java library will have C# bindings and be included in the output -->
<AndroidLibrary Include="okhttp-4.12.0.jar" />

<!-- Java library will have C# bindings but will *not* be included in the output -->
<AndroidLibrary Include="okio-3.9.0.jar" Pack="false" />

Projektreferencia

Ha a kötési projekt és az alkalmazásprojekt ugyanabban a megoldásfájlban található, akkor általában a <ProjectReference> használata a legegyszerűbb módja a kötés használatának.

<ProjectReference Include="mybindinglib.csproj" />

A buildrendszer feladata lesz a felügyelt kötések .jar/.aar és a fájlok hozzáadása az alkalmazásprojekthez.

NuGet-csomag

A .NET SDK-stílusú projektektől örökölt tulajdonságként a kötéstárak triviálisan becsomagolhatók egy terjeszthető NuGet-csomagba a Visual Studio "Pack" parancsával vagy a parancssorból:

dotnet pack

A kötések kódtára és a Java-kódtár a NuGet-csomag része lesz:

NuGet-csomag tartalma

Pack A fent dokumentált attribútummal szabályozhatja, hogy mely Java-kódtárakat kívánja használni a NuGet-csomag.

A NuGet-csomagok testre szabhatók a standard .NET MSBuild elemekkel.

Fájlhivatkozás

Ha a fenti lehetőségek közül egyik sem lehetséges, a kötés .dll közvetlenül hivatkozható egy <Reference> elemmel. Vegye figyelembe, hogy a kötésprojekt kimenetének részét képező Java-kódtáraknak ugyanabban a könyvtárban kell lenniük, mint a kötés .dll.

Ha csak a kötést .dll helyezi át vagy másolja egy másik helyre, és nem helyezi át vagy másolja az .jar/.dll fájlokat is, azok nem kerülnek be az alkalmazásba, és a kötés futásidőben meghiúsul.

Fontos

A klasszikus Xamarin.Android esetében egy elemművelet, mint a EmbeddedJar, a .jar fájlt a .dll belsejébe helyezi, és csak egy fájlra van szükség. Ennek támogatása az Android .NET-ben el lett távolítva, mert jelentősen megnövelte az alkalmazások buildelési idejét a beágyazott Java-kódtárfájlok vizsgálatához és kinyeréséhez. A szükséges .jar/.dll fájlokat ugyanabban a könyvtárban kell elhelyezni, mint a kötést .dll.