2017-10-25 12 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

이 링크는 맥 프로젝트의 프레임 워크를 결합 할 수 있다고 말한다 ./CryptoTokenKit.framework -sdk macosx10.13 -o ~/CryptoTokenKitBinding

위의 파일을 구현하고 프레임 워크를 사용하는 방법에 대한 정보는 인터넷에서 찾을 수 없습니다.

답변

2

솔루션 내에 Xamarin.Mac 바인딩 프로젝트를 만듭니다. 당신이 ApiDefinition을 삭제할 수 있습니다

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 

바인딩 프로젝트 템플릿 및 샤피의 출력 사이에 불일치가있다, 그래서 :

/System/Library/Frameworks/CryptoTokenKit.framework 

sharpie를 사용하여 바인딩하십시오 NativeReference

추가. cs를 추가하고 ApiDefinitions.cs를 추가하거나 템플릿을 덮어 씁니다.

mv CryptoTokenKitFramework/ApiDefinitions.cs CryptoTokenKitFramework/ApiDefinition.cs 

같은 속성의 수있을 것입니다 (버전 그들에 걸쳐 변경됩니다) : 다음으로

[Watch (4,0), TV (11,0), Mac (10,12), iOS (10,0)] 

는 iOS에서 개인 프레임 워크입니다, 시계, TV, 그래서 이러한 플랫폼을 제거. Mac 속성과 원래 버전을 남겨주세요 :

[Mac (10,11)] 

참고 : PlatformAttribute가되지 않지만 sharpie 여전히 사용하고 (? 이전 버전과 버전 호환성을 (가정)), 당신이 정말로 정리하려는 경우 Introduced을 사용할 수 있도록 빌드 출력 :

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

몇 가지 [Verify] 속성을 검토/수정해야합니다. 즉 TKSmartCardUserInteraction.CancelTKSmartCardSlot.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 버전을 사용하고 있는지 확인, 여러분의 인생을 더 쉽게 만드는. Xcode에서 Sharpie와 함께 프레임 워크를 사용하지만 시스템 프레임 워크를 참조로 추가하는 이유가 있습니까? –

+0

컴파일 할 때 오류가 발생합니다./Users/Koen/Developer/poc_digid/CryptoTokenKitFramework/CryptoTokenKitFramework/BTOUCH : 오류 BI1017 : bgen :'certRef '매개 변수의 Security.SecCertificate에 대한 서명을 만드는 방법을 모름 CryptoTokenKitFramework.TKTokenKeychainCertificate.Constructor (BI1017) (CryptoTokenKitFramework) –

+0

다음 코드에서 : https://gist.github.com/anonymous/0d1aad180c111b726be1ec14dddd564e –