客観的なシャーピーとはじめに
重要
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 は、サード パーティ Objective-C 製ライブラリを C# にバインドするために必要な定義の作成を支援する Xamarin によって提供されるコマンド ライン ツールです。 Objective Sharpie を使用する場合でも、Objective Sharpie が 完了した後に生成されたファイルを変更して、ツールで自動的に処理できなかった問題に対処する必要があります。
可能な限り、Objective Sharpie は API に注釈を付けますが、適切にバインドする方法に疑問があります (ネイティブ コードの多くのコンストラクトはあいまいです)。
これらの注釈は属性として[Verify]表示されます。
Objective Sharpie の出力はファイル ApiDefinition.cs のペアであり、 StructsAndEnums.cs Xamarin アプリで使用できるライブラリにコンパイルされるバインド プロジェクトを作成するために使用できます。
重要
Objective Sharpie には、適切に使用するための 1 つの 主要な ルールが付属しています。適切な解析を確実に行うには、必ず正しい clang コンパイラ コマンド ライン引数を渡す必要があります。 これは、Objective Sharpie 解析フェーズは、 単に clang libtooling API に対して実装されたツールであるためです。
つまり、Objective Sharpie には、Clang (実際にバインドするネイティブ ライブラリをコンパイルする C/Objective-C/C++ コンパイラ) と、バインディング用のヘッダー ファイルに関する内部知識がすべて備えています。
Objective Sharpie は、解析された AST をオブジェクト コードに変換する代わりに、AST を C# バインディングの "スキャフォールディング" に変換しbtouch、Xamarin バインド ツールへの入力にbmac適しています。
解析中に Objective Sharpie エラーが発生した場合は、AST を構築しようとしている解析フェーズ中に clang エラーが発生したことを意味し、その理由を理解する必要があります。
新機能! バージョン 3.0 では、Xcode プロジェクトを直接サポートすることで、この複雑さの一部に対処します。 ネイティブ ライブラリに有効な Xcode プロジェクトがある場合、Objective Sharpie は、指定されたターゲットと構成のプロジェクトを評価して、必要な入力ヘッダー ファイルとコンパイラ フラグを推測できます。
Xcode プロジェクトが使用できない場合は、正しい入力ヘッダー ファイル、ヘッダー ファイルの検索パス、およびその他の必要なコンパイラ フラグを指定することで、プロジェクトに関する知識を深める必要があります。 ネイティブ ライブラリのビルドに使用されるコンパイラ フラグは、Objective Sharpie に渡す必要があるのと同じであることを認識することが重要です。 これはより手動のプロセスであり、Clang ツールチェーンを使用してコマンド ラインでネイティブ コードをコンパイルすることに少し精通している必要があります。