我正在制作与智能卡交互的应用程序。 为此,我想使用CryptoTokenKit框架,它是Mac上的标准框架(位于/System/Library/Frameworks/CryptoTokenKit.framework)。
此链接表示可以在Mac项目中绑定框架: https://developer.xamarin.com/guides/cross-platform/macios/native-references/
我使用以下sharpie命令创建了ApiDefinition.cs文件和StrucsAndEnums.cs文件: sharpie bind -framework ./CryptoTokenKit.framework -sdk macosx10.13 -o~ / CryptoTokenKitBinding
我在互联网上找不到任何关于如何实现上述文件并开始使用框架的信息。
答案 0 :(得分:4)
在解决方案中创建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
绑定项目模板和sharpie输出之间不匹配,因此您可以删除ApiDefinition.cs并添加ApiDefinitions.cs或只覆盖创建的模板:
mv CryptoTokenKitFramework/ApiDefinitions.cs CryptoTokenKitFramework/ApiDefinition.cs
会有很多属性,(版本会随之改变):
[Watch (4,0), TV (11,0), Mac (10,12), iOS (10,0)]
由于这些是iOS,Watch,TV上的 私有 框架,因此剥离这些平台。保留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.pkg