Share via


系結 iOS Swift 連結庫

重要

我們目前正在調查 Xamarin 平臺上的自定義系結使用方式。 請接受 這項調查 ,以通知未來的開發工作。

iOS 平臺及其原生語言和工具不斷演進,而且有許多使用最新供應項目開發的第三方連結庫。 最大化程式代碼和元件重複使用是跨平台開發的主要目標之一。 使用 Swift 所建置的元件重複使用的能力,隨著開發人員的受歡迎程度持續成長,Xamarin 開發人員越來越重要。 您可能已經熟悉系結一般 Objective-C 連結庫的程式。 現在提供其他檔來描述系結 Swift 架構的程式,因此 Xamarin 應用程式會以相同方式取用它們。 本檔的目的是描述建立 Xamarin Swift 系結的高階方法。

高階方法

您可以使用 Xamarin 系結任何第三方原生連結庫,讓 Xamarin 應用程式取用。 Swift 是新的語言,並針對以此語言建置的連結庫建立系結需要一些額外的步驟和工具。 此方法牽涉到下列四個步驟:

  1. 建置原生連結庫
  2. 準備 Xamarin 元數據,讓 Xamarin 工具產生 C# 類別
  3. 使用原生連結庫和元數據建置 Xamarin 系結連結庫
  4. 在 Xamarin 應用程式中取用 Xamarin 系結連結庫

下列各節將概述這些步驟,其中包含其他詳細數據。

建置原生連結庫

第一個步驟是讓原生 Swift Framework 準備就緒,並 Objective-C 已建立標頭。 此檔案是自動產生的標頭,可公開所需的 Swift 類別、方法和欄位,讓它們可透過 Objective-C Xamarin 系結連結庫存取,並最終存取 C#。 此檔案位於下列路徑下的架構內:FrameworkName.framework>/Headers/<FrameworkName-Swift.h>。< 如果公開介面具有所有必要的成員,您可以跳到下一個步驟。 否則,需要進一步步驟才能公開這些成員。 此方法將取決於您是否可以存取 Swift 架構原始碼:

  • 如果您有程式代碼的存取權,您可以使用 屬性裝飾必要的 Swift 成員, @objc 並套用一些額外的規則,讓 Xcode 建置工具知道這些成員應該公開給 Objective-C 世界和標頭。
  • 如果您沒有原始程式碼存取權,您需要建立 Proxy Swift 架構,此架構會包裝原始 Swift 架構,並使用 屬性定義應用程式 @objc 所需的公用介面。

準備 Xamarin 元數據

第二個步驟是準備 API 定義介面,由系結專案用來產生 C# 類別。 這些定義可由 Objective Sharpie 工具和上述自動產生的 <FrameworkName-Swift.h> 頭檔手動建立或自動建立。 產生元數據之後,應該以手動方式驗證和驗證元數據。

建置 Xamarin.iOS 系結連結庫

第三個步驟是建立特殊專案 - Xamarin.iOS 系結連結庫。 它會參考在上一個步驟中準備的架構和元數據,以及個別架構所依賴的任何其他相依性。 它也會處理參考原生架構與取用 Xamarin.iOS 應用程式的連結。

取用 Xamarin 系結連結庫

第四個步驟和第一個步驟是參考 Xamarin.iOS 應用程式中的系結連結庫。 它足以在以 iOS 12.2 和更新版本為目標的 Xamarin.iOS 應用程式中使用原生連結庫。 針對以較低版本為目標的應用程式,需要一些額外的步驟:

  • 為運行時間支援新增 Swift dylib 相依性。 從 iOS 12.2 和 Swift 5.1 開始,語言會變成 ABI(應用程式二進位介面)穩定且相容。 這就是為什麼任何以較低 iOS 版本為目標的應用程式都必須包含架構所使用的 Swift 動態連結庫相依性。 使用 SwiftRuntimeSupport NuGet 套件,自動將必要的動態相依性包含在產生的應用程式套件中。
  • 使用已簽署的 dylibs 新增 SwiftSupport 資料夾,此資料夾會在上傳程式期間由 AppStore 驗證。 套件應該使用 Xcode 工具簽署並散發至 AppStore 連線,否則會自動拒絕。

逐步解說

上述方法概述為 Xamarin 建立 Swift 系結所需的高階步驟。 在實務上準備這些系結時,涉及許多較低層級的步驟和進一步的詳細數據,包括適應原生工具和語言的變更。 其目的是要協助您更深入地瞭解此概念,以及此程式所涉及的高階步驟。 如需詳細的逐步指南,請參閱 Xamarin Swift 系結逐步 解說檔。