我正在开发一个与智能卡交互的应用程序。为此,我想使用Mac上的标准CryptoTokenKit框架(位于/System/Library/Frameworks/CryptoTokenKit.framework).
这个链接表明可以在Mac项目中绑定框架:https://developer.xamarin.com/guides/cross-platform/macios/native-references/
我已经使用以下切分命令创建了一个ApiDefinition.cs文件和一个StrucsAndEnums.cs文件: sharpie bind -framework ./CryptoTokenKit.framework -sdk macosx10.13 -o ~/CryptoTokenKitBinding
我在互联网上找不到任何关于如何实现上述文件并开始使用框架的信息。
发布于 2017-10-26 00:31:24
在解决方案中创建一个Xamarin.Mac绑定项目。
将NativeReference添加到:
/System/Library/Frameworks/CryptoTokenKit.framework使用sharpie绑定它
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绑定项目模板和ApiDefinitions.cs的输出之间存在不匹配,因此您可以删除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)]将有一些[Verify]属性需要检查/更正。也就是说,TKSmartCardUserInteraction.Cancel和TKSmartCardSlot.MakeSmartCard都应该是方法,而不是属性。
示例/生成:
// -(TKSmartCard * _Nullable)makeSmartCard;
[NullAllowed, Export ("makeSmartCard")]
[Verify (MethodToProperty)]
TKSmartCard MakeSmartCard { get; }已更正:
// -(TKSmartCard * _Nullable)makeSmartCard;
[NullAllowed, Export("makeSmartCard")]
TKSmartCard MakeSmartCard();修复其余的[Verify]属性和编译器错误,有一堆糟糕的方法签名、指针、返回类型等。它们是生成的,需要更正。
注意:为了让您的工作更轻松,请确保您使用的是最新的Sharpie版本:
Version: 3.4.0
SHA1: c12859dac8d43121b5a9ed866a0db8409f9df817
URL: https://dl.xamarin.com/objective-sharpie/ObjectiveSharpie-3.4.0.pkghttps://stackoverflow.com/questions/46934202
复制相似问题