Поделиться через


Распространение библиотек привязок

После привязки библиотеки Java к использованию в .NET для Android существует несколько способов его использования:

  • Справочник по проекту. Если проект привязки и проект приложения находятся в одном файле решения, использование, <ProjectReference> как правило, является самым простым способом использования привязки.

  • Пакет NuGet — пакет NuGet идеально подходит для общедоступной публикации или для внутренней распределенной среды разработки с внутренним сервером NuGet.

  • Справочник по файлам. Используемое приложение может напрямую добавить <Reference> в привязку, если ни проект привязки .dll , ни сервер NuGet недоступен.

Управление параметрами привязки и упаковки

Проект библиотеки привязок имеет два варианта управления, если <AndroidLibrary> он привязан и получает распространение:

  • Привязка (truefalse/) — по умолчаниюtrue, то есть для указанных <AndroidLibrary>управляемых привязок создаются. Значение параметра false означает, что библиотека Java будет включена в выходные данные, но не будет иметь управляемых привязок. Это полезно, если библиотека необходимая зависимость другой библиотеки Java, но она не будет вызываться из C#.
<!-- Java library will have C# bindings and be included in the output -->
<AndroidLibrary Include="okhttp-4.12.0.jar" />

<!-- Java library will not have C# bindings but will still be included in the output -->
<AndroidLibrary Include="okio-3.9.0.jar" Bind="false" />
  • Пакет (true/false) — значение trueпо умолчанию, что означает, что указанный <AndroidLibrary> параметр будет включен в выходные данные (например, пакет NuGet). Значение параметра false означает, что библиотека Java не будет включена в выходные данные. Это редкий сценарий, если зависимость уже предоставляется с помощью альтернативных средств.
<!-- Java library will have C# bindings and be included in the output -->
<AndroidLibrary Include="okhttp-4.12.0.jar" />

<!-- Java library will have C# bindings but will *not* be included in the output -->
<AndroidLibrary Include="okio-3.9.0.jar" Pack="false" />

ProjectReference

Если проект привязки и проект приложения находятся в одном файле решения, использование <ProjectReference> обычно является самым простым способом использования привязки:

<ProjectReference Include="mybindinglib.csproj" />

Система сборки будет отвечать за добавление управляемых привязок, а также всех .jar/.aar файлов в проект приложения.

Пакет NuGet

Как свойство, унаследованное от проектов пакета SDK для .NET, любая библиотека привязок может быть тривиально упаковано в распространяемый пакет NuGet с помощью команды Pack в Visual Studio или из командной строки:

dotnet pack

Библиотека привязок, а также библиотека Java будет включена в пакет NuGet:

Содержимое пакета NuGet

Используйте атрибут, описанный Pack выше, чтобы управлять нужными библиотеками Java в пакете NuGet.

Пакеты NuGet можно настроить с помощью стандартных элементов .NET MSBuild.

Справочник по файлам

Если ни из указанных выше параметров не существует, привязка .dll может ссылаться непосредственно с элементом <Reference> . Обратите внимание, что все библиотеки Java, которые являются частью выходных данных проекта привязки, должны находиться в том же каталоге , что и привязка .dll.

Если вы перемещаете или копируете только привязку .dll в другое расположение и не перемещаете и не копируете файлы .jar/.dll , которые они не будут в конечном итоге в приложении, и привязка завершится ошибкой во время выполнения.

Внимание

В классической версии Xamarin.Android, используя действие элемента, например EmbeddedJar , поместите .jar файл внутри и .dll потребуется только один файл. Поддержка этого была удалена в .NET для Android, так как это значительно увеличило время сборки приложения для сканирования и извлечения внедренных файлов библиотеки Java. Все необходимые .jar/.dll файлы должны находиться в том же каталоге, что и привязка..dll