Создайте проект привязки 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
person
SushiHangover
schedule
25.10.2017