一旦 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 套件中:
Pack使用上面記載的屬性來控制 NuGet 套件中所需的 Java 連結庫。
您可以使用標準 .NET MSBuild 元素來客製化 NuGet 套件。
檔案參考
如果無法使用上述兩個選項,可以直接使用 .dll 元素參考系結 <Reference>。 請注意,系結專案輸出中任何屬於 Java 程式庫的文件必須位於與系結相同的目錄中。
如果您只將系結 .dll 移至另一個位置,而且不會移動/複製任何 .jar/.dll 檔案,它們最終不會出現在您的應用程式中,而且系結會在運行時間失敗。
重要
在傳統的 Xamarin.Android 中,使用像 EmbeddedJar 這樣的項目動作時,.jar 檔案將被放置在 .dll 中,而且只需要一個檔案。 Android 版 .NET 已移除這項支持,因為它大幅提升應用程式建置時間,以掃描和擷取內嵌的 Java 連結庫檔案。 任何必要的 .jar/.dll 檔案都必須位於與系結 .dll相同的目錄中。