開始使用 Objective Sharpie
重要
Objective Sharpie 是一種工具,適用於具有進階知識 Objective-C 的資深 Xamarin 開發人員(並藉由延伸模組 C)。 嘗試系結連結 Objective-C 庫之前,您應該具備在命令行上建置原生連結庫的紮實知識(以及充分瞭解原生連結庫的運作方式)。
安裝 Objective Sharpie
Objective Sharpie 目前是 Mac OS X 10.10 和更新版本的獨立命令行工具,並非 完全支援的 Xamarin 產品。 只有進階開發人員才應該使用它來協助建立第三方 Objective-C 連結庫的系結專案。
Objective Sharpie 可以下載為標準 OS X 套件安裝程式。 執行安裝程式,並遵循安裝精靈中的所有畫面提示:
- 目前版本:3.5
提示
sharpie update
使用 命令更新至最新版本。
基本逐步解說
Objective Sharpie 是 Xamarin 提供的命令行工具,可協助建立將第三方 Objective-C 連結庫系結至 C# 所需的定義。 即使使用 Objective Sharpie,開發人員 也需要 在 Objective Sharpie 完成之後修改產生的檔案,以解決工具無法自動處理的任何問題。
可能的話,Objective Sharpie 會標註 API,而 API 對如何正確系結有一些疑問(原生程序代碼中的許多建構模棱兩可)。
這些批注會顯示為 [Verify]
屬性。
Objective Sharpie 的輸出是一對檔案, ApiDefinition.cs
StructsAndEnums.cs
可用來建立系結專案,以編譯成您可以在 Xamarin 應用程式中使用的連結庫。
重要
Objective Sharpie 隨附一 個主要 規則來適當使用:您必須絕對將正確的 clang 編譯程式命令行自變數傳遞給它,以確保適當的剖析。 這是因為 Objective Sharpie 剖析階段只是針對 clang libtooling API 實作的工具。
這表示 Objective Sharpie 具有 Clang 的完整功能(C/Objective-C/C++ 編譯程式,可實際編譯您要系結的原生連結庫),以及其所有用於系結頭文件的內部知識。
Objective Sharpie 不會將剖 析的 AST 轉譯為對象程序代碼,而是將 AST 轉譯為 C# 系結 “scaffold”,適合輸入 bmac
和 btouch
Xamarin 系結工具。
如果在剖析期間發生 Objective Sharpie 錯誤,表示在剖析階段嘗試建構 AST 時發生 clang 錯誤,而您需要找出原因。
新功能! 3.0 版會直接支援 Xcode 專案,嘗試解決某些複雜性。 如果原生連結庫具有有效的 Xcode 專案,Objective Sharpie 可以評估專案是否有指定的目標和組態,以推算必要的輸入頭檔和編譯程式旗標。
如果沒有可用的 Xcode 專案,您必須藉由推斷正確的輸入頭檔、頭檔搜尋路徑和其他必要的編譯程式旗標,來更熟悉專案。 請務必瞭解用來建置原生連結庫的編譯程式旗標,必須傳遞至 Objective Sharpie。 這是一個更手動的程式,而且需要熟悉使用 Clang 工具鏈在命令行上編譯機器碼。