發佈綁定函式庫

一旦 Java 程式庫綁定以供 Android 的 .NET 使用後,就可以有多種方式來使用它:

  • 項目參考 - 如果系結專案和應用程式項目位於相同的方案檔中,則使用 <ProjectReference> 通常是取用系結的最簡單方式。

  • NuGet 套件 - NuGet 套件 適用於公用發佈,或適用於具有內部 NuGet 伺服器的內部分散式開發環境。

  • 檔案參考 - 如果系結專案和 NuGet 伺服器都無法使用,消費應用程式可以直接將<Reference> 新增至.dll

控制系結和封裝選項

繫結庫專案有兩個選項可控制 <AndroidLibrary> 是否繫結和重新分發:

  • 系結true/false) - 預設值為 true,這表示會為指定的 <AndroidLibrary> 建立管理的系結。 設定為 false 表示 Java 連結庫會包含在輸出中,但不會有 Managed 系結。 如果某個 Java 函式庫是另一個 Java 函式庫所需的相依性,但不會從 C# 呼叫,那麼這會很有用。
<!-- 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" />
  • 套件true/false) - 預設值為 true,表示指定的 <AndroidLibrary> 將會包含在輸出中(例如 NuGet 套件)。 設定為 false 表示不會將 Java 連結庫包含在輸出中。 這種情況很少見,即當相依性已經透過其他方式提供時。
<!-- 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" />

專案參考

如果系結專案和應用程式項目位於相同的方案檔中,則使用 <ProjectReference> 通常是取用系結的最簡單方式:

<ProjectReference Include="mybindinglib.csproj" />

建置系統將負責將受管理綁定和任何 .jar/.aar 檔案新增至應用程式專案。

NuGet 套件

作為繼承自 .NET SDK 樣式專案的屬性,任何系結連結庫都可以使用 Visual Studio 中的 “Pack” 命令,或從命令行將任何系結連結庫簡單封裝成可轉散發的 NuGet 套件:

dotnet pack

系結連結庫以及 Java 連結函式庫將會包含在 NuGet 套件中:

NuGet 套件內容

Pack使用上面記載的屬性來控制 NuGet 套件中所需的 Java 連結庫。

您可以使用標準 .NET MSBuild 元素來客製化 NuGet 套件。

檔案參考

如果無法使用上述兩個選項,可以直接使用 .dll 元素參考系結 <Reference>。 請注意,系結專案輸出中任何屬於 Java 程式庫的文件必須位於與系結相同的目錄中。

如果您只將系結 .dll 移至另一個位置,而且不會移動/複製任何 .jar/.dll 檔案,它們最終不會出現在您的應用程式中,而且系結會在運行時間失敗。

重要

在傳統的 Xamarin.Android 中,使用像 EmbeddedJar 這樣的項目動作時,.jar 檔案將被放置在 .dll 中,而且只需要一個檔案。 Android 版 .NET 已移除這項支持,因為它大幅提升應用程式建置時間,以掃描和擷取內嵌的 Java 連結庫檔案。 任何必要的 .jar/.dll 檔案都必須位於與系結 .dll相同的目錄中。