次の方法で共有


Objective Sharpie の概要

重要

Objective Sharpie は、Objective-C (ひいては C) の高度な知識を持つ経験豊富な Xamarin 開発者向けのツールです。 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 に注釈を付けます (ネイティブ コード内の多くのコンストラクトはあいまいです)。 これらの注釈は [Verify] 属性として表示されます。

Objective Sharpie の出力は 1 対のファイル (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 を、bmac および btouch Xamarin バインド ツールへの入力に適した C# バインドの "スキャフォールディング" に変換します。

解析中に Objective Sharpie がエラーになった場合、clang が、AST を構築しようとして解析フェーズ中にエラーになったため、その理由の解明が必要であることを意味します。

新! バージョン 3.0 では、Xcode プロジェクトを直接サポートして、この複雑さの一部に対処しようとしています。 ネイティブ ライブラリに有効な Xcode プロジェクトがある場合、Objective Sharpie では、指定されたターゲットと構成のプロジェクトを評価して、必要な入力ヘッダー ファイルとコンパイラ フラグを推測できます。

使用できる Xcode プロジェクトがない場合は、正しい入力ヘッダー ファイル、ヘッダー ファイル検索パス、およびその他の必要なコンパイラ フラグを推測して、そのプロジェクトへの理解を深める必要があります。 ネイティブ ライブラリのビルドに使用されるコンパイラ フラグは、Objective Sharpie に渡す必要があるものと同じであることを認識することが重要です。 これは、より多くの手動操作が必要なプロセスであり、Clang ツールチェーンを使用してコマンド ラインでネイティブ コードをコンパイルすることに、ある程度慣れていることが求められます。