Привязка Deezer iOS SDK (Objective-C) к приложению Xamarin (C#)

Я занимаюсь разработкой кроссплатформенного мобильного приложения с использованием Xamarin (с Xamarin Studio версии 6.0.2). Сначала я сосредоточусь на iOS. Я хочу внедрить Deezer SDK в моем приложении. Поскольку SDK поставляется с Objective-C, мне нужно привязать его к C#, и именно здесь у меня возникают проблемы.

Я использую инструмент Xamarin Objective Sharpie 3.3.0p, основанный на этом пошаговом руководстве, чтобы создать файлы ApiDefinition.cs и Structs.cs https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/walkthrough/.

Вот детали того, что я сделал:

1) Я скачал iOS SDK на сайте разработчиков Deezer

2) Я создал проект Binding Library для iOS на Xamarin

3) Я использовал файл библиотеки FAT "libDeezer.a" в качестве нативной ссылки.

4) Я запустил следующую командную строку:

sharpie bind -output ./DeezerAPI -namespace DeezerAPI -sdk iphoneos9.3 ./deezer-ios-sdk-v0/DeezerSDK/include/*.h

Обратите внимание, что я пробовал не только нацеливаться на *.h. На самом деле, в пошаговом руководстве сказано, что я должен выбрать заголовочный файл верхнего уровня. Поэтому я внимательно прочитал эти заголовочные файлы и не смог найти уникальный заголовочный файл верхнего уровня. На самом деле, мне пришло в голову, что существует 6 заголовочных файлов верхнего уровня, так как они не вызываются никакими другими заголовочными файлами.

  • Deezer + Compatibility.h
  • DZRGenericCancelable.h
  • DZRPlayableArray.h
  • DZRPlayer.h
  • DZRRequestManager.h
  • NSBundle + DZRBundle.h

Я пытался настроить таргетинг на каждый из этих файлов отдельно и вместе. Команда работала хорошо каждый раз и доставляла файлы ApiDefinition.cs и StructsAndEnums.cs.

5) Я скопировал и вставил содержимое этих файлов в соответствующие файлы проекта Binding и объединил оригинальное "использование" с созданными.

6) Я попытался построить проект, и вышла куча ошибок.

Вот ошибки, которые у меня есть:

  • Тип или пространство имен '$name' не найдено. Вам не хватает какой-либо ссылки на сборку? с $name as (BaseType, Abstract, Wrap, NullAllowed, StaticAttribute, HttpMethod, ResponseFormat, BufferManager)
  • Член уже определен. Переименуйте этот элемент или используйте различные типы параметров. (Я думаю, что sharpie только что назвал два метода одинаково, и мне просто нужно изменить имя одного из них)
  • Введите byte, byte, short, ushort, int, uint, long, ulong ожидаемый. (ApiDefinition использует nuint и nint, я исправил их, меняя их на ulong и long)

Вот проект Binding с файлами ApiDefinition.cs и Structs.cs, которые я нацелил на *.h:

https://github.com/aroy314/DeezerSDKBinding

Я был бы благодарен, если бы кто-нибудь мог дать мне подсказку о том, что не так и как сделать с работой проекта.

0 ответов

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