Распространение библиотек привязок
После привязки библиотеки Java к использованию в .NET для Android существует несколько способов его использования:
Справочник по проекту. Если проект привязки и проект приложения находятся в одном файле решения, использование,
<ProjectReference>
как правило, является самым простым способом использования привязки.Пакет NuGet — пакет NuGet идеально подходит для общедоступной публикации или для внутренней распределенной среды разработки с внутренним сервером NuGet.
Справочник по файлам. Используемое приложение может напрямую добавить
<Reference>
в привязку, если ни проект привязки.dll
, ни сервер NuGet недоступен.
Управление параметрами привязки и упаковки
Проект библиотеки привязок имеет два варианта управления, если <AndroidLibrary>
он привязан и получает распространение:
- Привязка (
true
false
/) — по умолчанию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:
Используйте атрибут, описанный Pack
выше, чтобы управлять нужными библиотеками Java в пакете NuGet.
Пакеты NuGet можно настроить с помощью стандартных элементов .NET MSBuild.
Справочник по файлам
Если ни из указанных выше параметров не существует, привязка .dll
может ссылаться непосредственно с элементом <Reference>
. Обратите внимание, что все библиотеки Java, которые являются частью выходных данных проекта привязки, должны находиться в том же каталоге , что и привязка .dll
.
Если вы перемещаете или копируете только привязку .dll
в другое расположение и не перемещаете и не копируете файлы .jar
/.dll
, которые они не будут в конечном итоге в приложении, и привязка завершится ошибкой во время выполнения.
Внимание
В классической версии Xamarin.Android, используя действие элемента, например EmbeddedJar
, поместите .jar
файл внутри и .dll
потребуется только один файл. Поддержка этого была удалена в .NET для Android, так как это значительно увеличило время сборки приложения для сканирования и извлечения внедренных файлов библиотеки Java. Все необходимые .jar
/.dll
файлы должны находиться в том же каталоге, что и привязка..dll