Zendesk Xamarin привязка для IPS и Android

Я просмотрел документацию по связыванию Xamarin для Zendesk SDK для IOS. Документация ведет нас через сценарий, где мы создаем файл.a и приступаем к связыванию. Библиотека Zendesk предоставляется в виде фреймворка, и хотя в документации Xamarin говорится, что фреймворки содержат файл.a, я до сих пор не смог найти файл.a в фреймворке Zendesk. Следовательно, я как бы заблокирован здесь. Здесь есть какие-нибудь указатели?

Ссылка на библиотеку Zendesk: https://github.com/zendesk/zendesk_sdk_ios Ссылка на документацию Xamarin: https://docs.microsoft.com/en-us/xamarin/ios/platform/binding-objective-c/walkthrough?tabs=vsmac

Я выполнил объективную команду шулера. Несмотря на то, что связывание выполнено, оно не сгенерировало файл apidefinition.cs и structsAndEnums.cs. Ниже приведен вывод, который я вижу в терминале.

C02VX2ZCHTD6: ~ naveen.ramachandrapp $ шулера связывает -output= файлы Zen -namespace= дзен -sdk iphoneos11.3 -framework /Users/naveen.ramachandrapp/Downloads/zendesk_sdk_ios-masterObjectiveC/ZendeskSDK/4.1/ZendeskProviderSDK.framework Синтаксических 1 заголовочных..,

Связывание... [запись] ApiDefinitions.cs [запись] StructsAndEnums.cs

Анализ привязки: автоматическая привязка завершена, но есть несколько API, которые были помечены атрибутами [Verify]. Несмотря на то, что вся привязка должна проверяться на предмет лучших методик проектирования API, более внимательно рассмотрим API со следующими подсказками атрибута Verify:

MethodToProperty (30 экземпляров): метод Objective-C был связан как свойство C# из-за соглашения, такого как отсутствие параметров и возвращение значения (возврат не void). Часто такие методы должны быть привязаны как свойства к более приятному API, но иногда могут возникать ложные срабатывания, и связывание должно быть методом.

StronglyTypedNSArray (25 экземпляров): собственный NSArray * был связан как NSObject []. Возможно, можно будет более строго набрать массив в привязке на основе ожиданий, установленных в документации API (например, комментарии в заголовочном файле) или путем проверки содержимого массива посредством тестирования. Например, NSArray *, содержащий только экземпляры NSNumber *, можно связать как NSNumber [] вместо NSObject [].

ConstantsInterfaceAssociation (2 экземпляра): не существует надежного способа определить, с каким интерфейсом Objective C может быть связано объявление внешней переменной. Их экземпляры связаны как свойства [Field] в частичном интерфейсе с близлежащим конкретным интерфейсом для создания более интуитивного API, возможно, полностью исключающего интерфейс "Constants".

PlatformInvoke (3 экземпляра): в общем случае привязки P/Invoke не такие правильные или полные, как привязки Objective-C (по крайней мере, в настоящее время). Возможно, вам придется исправить имя библиотеки (по умолчанию это __Internal) и типы возвращаемых / параметров вручную, чтобы соответствовать соглашениям о вызовах C для целевой платформы. Вы можете обнаружить, что даже не хотите показывать C API в своей привязке, но если вы это сделаете, вы, вероятно, также захотите переместить определение в более подходящий класс и предоставить более надежную оболочку с безопасным типом. Руководство по P/Invoke см. По http://www.mono-project.com/ /advanced/pinvoke/.

После того, как вы проверили атрибут Verify, вы должны удалить его из исходного кода привязки. Наличие атрибутов Verify намеренно вызывает сбои сборки.

Для получения дополнительной информации о подсказках атрибута Verify выше, обратитесь к документации Objective Sharpie, запустив 'sharpie docs' или посетив следующий URL:

http://xmn.io/sharpie-docs

1 ответ

Вы неправильно прочитали документацию. В нем четко перечислены 3 различных сценария:

Обычно в экосистеме iOS вы можете найти библиотеки в 3 вариантах:

В виде файла скомпилированной статической библиотеки с расширением.a вместе с его заголовком (заголовками) (файлы.h). Например, Google Analytics Library

В качестве предварительно скомпилированного фреймворка. Это просто папка со статической библиотекой, заголовками и иногда дополнительными ресурсами с расширением.framework. Например, библиотека AdMob от Google.

Как просто файлы исходного кода. Например, библиотека, содержащая только файлы.m и.h Objective C.

Таким образом, вы можете создавать библиотеки привязки, используя .a файл или предварительно скомпилированный .framework (ваш случай) или используя .h а также .m файлы. Не нужно искать .a файлы в .framework файл.

Вы можете использовать цель sharpie, чтобы помочь создать файл ApiDefinition.cs для вашей привязки следующим образом:

sharpie bind -framework ZendeskCoreSDK.framework -sdk iphoneos11.1

Здесь есть множество документации для Objective Sharpie: https://docs.microsoft.com/en-us/xamarin/cross-platform/macios/binding/objective-sharpie/

Другие вопросы по тегам