共用方式為


開始使用 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 套件安裝程式。 執行安裝程式,並遵循安裝精靈中的所有畫面提示:

提示

sharpie update使用 命令更新至最新版本。

基本逐步解說

Objective Sharpie 是 Xamarin 提供的命令行工具,可協助建立將第三方 Objective-C 連結庫系結至 C# 所需的定義。 即使使用 Objective Sharpie,開發人員 也需要 在 Objective Sharpie 完成之後修改產生的檔案,以解決工具無法自動處理的任何問題。

可能的話,Objective Sharpie 會標註 API,而 API 對如何正確系結有一些疑問(原生程序代碼中的許多建構模棱兩可)。 這些批注會顯示為 [Verify] 屬性

Objective Sharpie 的輸出是一對檔案, ApiDefinition.csStructsAndEnums.cs 可用來建立系結專案,以編譯成您可以在 Xamarin 應用程式中使用的連結庫。

重要

Objective Sharpie 隨附一 個主要 規則來適當使用:您必須絕對將正確的 clang 編譯程式命令行自變數傳遞給它,以確保適當的剖析。 這是因為 Objective Sharpie 剖析階段只是針對 clang libtooling API 實作的工具

這表示 Objective Sharpie 具有 Clang 的完整功能(C/Objective-C/C++ 編譯程式,可實際編譯您要系結的原生連結庫),以及其所有用於系結頭文件的內部知識。 Objective Sharpie 不會將剖 析的 AST 轉譯為對象程序代碼,而是將 AST 轉譯為 C# 系結 “scaffold”,適合輸入 bmacbtouch Xamarin 系結工具。

如果在剖析期間發生 Objective Sharpie 錯誤,表示在剖析階段嘗試建構 AST 時發生 clang 錯誤,而您需要找出原因。

新功能! 3.0 版會直接支援 Xcode 專案,嘗試解決某些複雜性。 如果原生連結庫具有有效的 Xcode 專案,Objective Sharpie 可以評估專案是否有指定的目標和組態,以推算必要的輸入頭檔和編譯程式旗標。

如果沒有可用的 Xcode 專案,您必須藉由推斷正確的輸入頭檔、頭檔搜尋路徑和其他必要的編譯程式旗標,來更熟悉專案。 請務必瞭解用來建置原生連結庫的編譯程式旗標,必須傳遞至 Objective Sharpie。 這是一個更手動的程式,而且需要熟悉使用 Clang 工具鏈在命令行上編譯機器碼。