共用方式為


散發系結連結庫

一旦 Java 連結庫系結至適用於 Android 的 .NET 使用之後,就可以使用多種方式:

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

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

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

控制系結和封裝選項

系結連結庫專案有兩個選項可控制是否 <AndroidLibrary> 系結並重新發佈:

  • 系結truefalse/) - 預設值為 true,這表示會為指定的 <AndroidLibrary>建立Managed系結。 設定為 false 表示 Java 連結庫會包含在輸出中,但不會有 Managed 系結。 如果連結庫需要另一個 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" />

建置系統將負責將Managed系結和任何 .jar/.aar 檔案新增至應用程式專案。

NuGet 套件

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

dotnet pack

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

NuGet 套件內容

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

您可以使用標準 .NET MSBuild 元素來自定義 NuGet 套件。

檔案參考

如果上述兩個選項都不可能,可以直接使用 <Reference> 項目參考系結.dll。 請注意,屬於系結項目輸出一部分的任何 Java 連結庫都必須位於與系結 .dll相同的目錄中

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

重要

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