Вопрос:

Как создать связывание Xamarin для AAR со многими зависимостями?

android xamarin xamarin.android

1563 просмотра

3 ответа

57190 Репутация автора

Я пытаюсь сгенерировать библиотеку Xamarin Binding для Android com.adobe.creativesdk.image

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

Наверняка должен быть более простой способ сделать это. Мне сказали, что я могу создать пакет AAR, который включает в себя все ссылки, используя Android Studio, но я не уверен в том, как заставить его работать. Некоторые из ссылок также являются AAR.

Не могли бы вы указать правильный путь, чтобы эта привязка работала?

Автор: Claudio Redi Источник Размещён: 04.05.2016 05:56

Ответы (3)


1 плюс

178 Репутация автора

У меня была та же проблема, и я, наконец, решил ее, просто добавив зависимости. Многие из них могут быть добавлены с помощью пакетов NuGet (щелкните правой кнопкой мыши на обязательном проекте и выберите Добавить пакеты Nuget ...), наиболее распространенные из них, такие как сервисы воспроизведения, gson okhttp3 и т. Д., Можно найти здесь. Если у вас, как и у меня, есть еще несколько необычных зависимостей, вам может потребоваться добавить их в качестве самих обязательных проектов.

Я читал, что вы можете добавить зависимость aar / jar непосредственно в связывающий проект и установить действие сборки для referenceJar или embeddedReferenceJar, но это не сработало для меня. Я относительно новичок в xamarin, так что я не уверен, что это просто не тот способ, которым он предназначен для использования, или это потому, что они не могут быть автоматически связаны из-за ошибки выполнения (получил некоторые ошибки и предупреждения, которые мне нужно было исправить в метафайле, когда позже я добавил зависимость jar / aar в свой собственный проект bindings).

Несмотря на это, я заставил его работать, добавив в решение новый проект bindings, в котором я добавил зависимость jar / aar, а затем построил его и добавил необходимые строки / узлы в метафайл, чтобы он компилировался. Затем я просто добавил проект «зависимость-привязка» в качестве ссылки в моем реальном проекте привязки.

Это больше похоже на обходной путь, чем на реальное решение, но, по крайней мере, я заставил его работать, так что, надеюсь, это поможет вам.

Автор: Joachim Haglund Размещён: 06.07.2016 01:40

5 плюса

1383 Репутация автора

Связывающие библиотеки всегда имеют свои собственные Caveats, но я собираюсь сделать некоторые обобщения, чтобы помочь вам упорядочиться.

  1. Проверьте задействованные зависимости и, если какая-либо из них уже есть в Nuget, используйте их. Такие вещи, как библиотеки поддержки Android, API Google Play, IBM SDK и т. Д. Большинство из них уже имеют привязки и находятся в Nuget.

  2. Не забудьте сравнить номера версий зависимостей с номерами в Nuget. Возможно, ваша .aar библиотека на самом деле более свежая, чем Binding on Nuget.

  3. Отдельные большие библиотеки. Найдите остальные зависимости, которых нет в Nuget, и которые относительно велики, а затем создайте отдельные проекты библиотек привязки Android для каждого из них. Обычно API-интерфейсы связывания распадаются с большими библиотеками в качестве зависимостей, поэтому гораздо проще (и более чистым IMO) создавать для них отдельные проекты, а затем добавлять ссылки на проекты в конечную библиотеку.

  4. Отделите ваш jarsот aars. Обычно ваши .aarфайлы являются большими, которые в любом случае получают свои собственные привязки и попадают в # 3, но jarзависимости должны использовать ReferenceJarBuild Actions.

  5. Играй со своим MetaData.xml. Это может занять много времени, но API Binding не идеальны. Используйте MetaDataи другие файлы, чтобы очистить его по своему вкусу.

Некоторые другие вещи, которые могут помочь:

  • https://marketplace.visualstudio.com/items?itemName=EgorBogatov.XamarinGradleBindings (плагин VS для создания библиотек связывания из зависимостей gradle. Несовершенный, но отличный инструмент для начала работы. Не забудьте переместить файлы .jarи .aarфайлы в свою Jarsпапку так как это добавляет их в корень проекта по какой-то причине)
  • https://developer.xamarin.com/guides/android/advanced_topics/binding-a-java-library/customizing-bindings/java-bindings-metadata/ (понимание некоторых хороших способов обновления вашего MetaData.xmlфайла)
  • Я бы также посмотрел вокруг GitHub для некоторых существующих проектов Bindings для библиотек Android аналогичного размера, таких как сервисы AWS или другие библиотеки Apache.
Автор: SuavePirate Размещён: 06.12.2016 02:19

0 плюса

1275 Репутация автора

Обращайтесь к любому, кому нужно создать оболочку вокруг jar-зависимости aar / jar, чтобы она хорошо работала с C #. Лучше всего ссылаться на зависимость aar через dll привязки, чем пытаться добавить ее в одну и ту же привязку, xamarin не может использовать более одного aar на привязку. Напишите обертку в ее собственном aar / binding и сделайте так, чтобы связывание / dll обертки ссылалось на зависимость также как связывание / dll. Кроме того - вы лучше используете файл aar, чем jar, в наши дни jar кажется устаревшим.

Автор: Pellet Размещён: 13.06.2019 05:42
Вопросы из категории :
32x32