Ответ 1
Связывающие библиотеки всегда имеют свои собственные Caveats, но я собираюсь сделать некоторые обобщения, чтобы помочь вам упорядочиться.
-
Проверьте задействованные зависимости и, если какая-либо из них уже есть в Nuget, используйте их. Такие вещи, как библиотеки поддержки Android, API Google Play, IBM SDK и т.д. Большинство из них уже имеют привязки и находятся в Nuget.
-
Не забудьте сравнить номера версий зависимостей с номерами в Nuget. Возможно, ваша .aar библиотека на самом деле более свежая, чем Binding on Nuget.
-
Отдельные большие библиотеки. Найдите остальные зависимости, которых нет в Nuget, и которые относительно велики, а затем создайте отдельные проекты библиотек привязки Android для каждого из них. Обычно API-интерфейсы связывания распадаются с большими библиотеками в качестве зависимостей, поэтому гораздо проще (и более чистым IMO) создавать для них отдельные проекты, а затем добавлять ссылки на проекты в конечную библиотеку.
-
Отделите свои
jars
отaars
. Обычно ваши файлы.aar
- это большие файлы, которые в любом случае получают свои собственные привязки и попадают в # 3, но зависимостиjar
должны использоватьReferenceJar
Build Actions. -
Играйте со своим
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.