2017-10-25 18 views
1

私はスマートカードとやりとりするためのアプリ作りの手続きを行っています。 これは、Macの標準であるCryptoTokenKit Framework(/System/Library/Frameworks/CryptoTokenKit.frameworkにあります)を使用したいと考えています。私は、次のシャーピーのコマンドを使用してApiDefinition.csファイルとStrucsAndEnums.csファイルを作成しました https://developer.xamarin.com/guides/cross-platform/macios/native-references/Xamarin.Macでシステムフレームワークにバインドするにはどうすればよいですか?

: シャーピーバインド-framework

このリンクは、それは、Macプロジェクトの枠組みをバインドすることは可能だと述べています./CryptoTokenKit.framework -sdk macosx10.13 -o〜/ CryptoTokenKitBinding

上記のファイルを実装してフレームワークを使用する方法についてインターネット上の情報が見つかりません。

答えて

2

ソリューション内にXamarin.Macバインディングプロジェクトを作成します。

NativeReferenceに追加します:sharpieを使用してバインド

/System/Library/Frameworks/CryptoTokenKit.framework 

を:

sharpie bind \ 
    -o CryptoTokenKitFramework \ 
    -namespace CryptoTokenKit \ 
    -sdk macosx10.13 \ 
    -f /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks/CryptoTokenKit.framework 

あなたがApiDefinitionを削除することができますいずれかのように、結合プロジェクトテンプレートとシャーピーの出力の間に不一致があります。 csを追加し、ApiDefinitions.csを追加するか、作成したテンプレートを上書きするだけです。

mv CryptoTokenKitFramework/ApiDefinitions.cs CryptoTokenKitFramework/ApiDefinition.cs 

(バージョンはそれら全体に変更されます)のような属性の数があるでしょう:

これらとして
[Watch (4,0), TV (11,0), Mac (10,12), iOS (10,0)] 

は、iOS、ウォッチのプライベートフレームワーク、テレビなので、これらのプラットフォームを取り除きます。 Mac属性と元のバージョンを残す:

[Mac (10,11)] 

注:PlatformAttributeが廃止されましたが、sharpieはまだそれを使用している(?後方バージョンの互換性を(仮定))、あなたが本当にクリーンアップしたい場合はIntroducedを使用することができますので、出力をビルド:

[Introduced (PlatformName.MacOSX, 10, 11, PlatformArchitecture.Arch64)] 

レビュー/修正する必要がある属性がいくつかあります。すなわちTKSmartCardUserInteraction.CancelおよびTKSmartCardSlot.MakeSmartCardは両方ともプロパティではないメソッドである必要があります。

例/生成:

// -(TKSmartCard * _Nullable)makeSmartCard; 
[NullAllowed, Export ("makeSmartCard")] 
[Verify (MethodToProperty)] 
TKSmartCard MakeSmartCard { get; } 

が修正:

// -(TKSmartCard * _Nullable)makeSmartCard; 
[NullAllowed, Export("makeSmartCard")] 
TKSmartCard MakeSmartCard(); 

など、戻り値の型、ポインタ、悪いメソッドのシグネチャの束があり、[Verify]属性とコンパイルエラーの残りの部分を修正..生成され、修正が必要です。

注:私の質問の@SushiHangoverに答えるため

Version: 3.4.0 
SHA1:  c12859dac8d43121b5a9ed866a0db8409f9df817 
URL:  https://dl.xamarin.com/objective-sharpie/ObjectiveSharpie-3.4.0.pkg 
+0

ありがとう:あなたの人生を容易にするため、最新のSharpieバージョンを使用していることを確認してください。 SharpieでXcodeのフレームワークを使用する理由がありますが、システムフレームワークを参照として追加する理由はありますか? –

+0

コンパイルするときにエラーが発生する:/ Users/Koen/Developer/poc_digid/CryptoTokenKitFramework/CryptoTokenKitFramework/BTOUCH:エラーBI1017:bgen:「CertificateRef」パラメータのSecurity.SecCertificateの署名を作成する方法がわからないCryptoTokenKitFramework.TKTokenKeychainCertificate.Constructor(BI1017)(CryptoTokenKitFramework) –

+0

次のコードでは、https://gist.github.com/anonymous/0d1aad180c111b726be1ec14dddd564e –

関連する問題