Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Сообщество Android предлагает много библиотек Java, которые можно использовать в приложении. Эти библиотеки Java часто упаковываются в .JAR (Java Archive) или .AAR (Android Archive) формат, но вы можете упаковать .JAR/.AAR в библиотеку привязок Java, чтобы его функциональность была доступна для приложений .NET для Android. Целью библиотеки привязок Java является обеспечение доступности API из JAR/AAR файлов для C# кода через автоматически созданные обёртки кода.
Совет
.NET 9 предоставляет поддержку автоматической загрузки и привязки библиотеки Java из репозитория Maven. Чтобы упростить этот сценарий, см. документацию по привязке Java-библиотеки из Maven.
Пошаговое руководство
В этом пошаговом руководстве мы собираемся привязать версию 3.1.0 CircleImageView, библиотеку, отображающую изображение на круговом холсте.
Из репозитория Maven скачайте circleimageview-3.1.0.aar локально для привязки.
Создание библиотеки привязок
Для начала создайте проект библиотеки привязок. Это можно сделать с помощью шаблона проекта "Библиотека привязки Java для Android", доступного в Visual Studio или с помощью командной dotnet строки:
dotnet new android-bindinglib
circleimageview-3.1.0.aar Скопируйте файл в каталог проекта.
Как и проекты стиля SDK .NET, проекты привязки .NET для Android автоматически включают любые .JAR/.AAR файлы в каталоге проекта как файл типа AndroidLibrary, поэтому дополнительная конфигурация не требуется.
Теперь создайте проект с помощью команды сборки Visual Studio или из командной строки:
dotnet build
Теперь эта библиотека Java привязана и готова к использованию проектом приложения .NET для Android или опубликована в NuGet для общедоступного потребления.
Дополнительные параметры
Пропуск управляемых привязок
По умолчанию привязки C# будут созданы для любого .JAR/.AAR, помещенного в проект. Однако привязки C# могут быть сложными для создания и не требуются, если вы не планируете вызывать API Java из C#.
Это особенно касается того, что библиотека Java является просто зависимостью другой библиотеки Java и не требуется вызывать непосредственно из C#. В этом случае Bind="false" атрибут можно использовать только для включения зависимости Java, но не привязки.
<ItemGroup>
<AndroidLibrary Update="circleimageview-3.1.0.aar" Bind="false" />
</ItemGroup>
Обратите внимание, что при использовании автоматических импортов необходимо использовать Update, чтобы изменить автоматически импортированный файл, вместо добавления дополнительной копии с помощью Include.
Зависимости Java
Библиотека Java может зависеть от других библиотек Java, которые необходимо упаковать с приложением, чтобы приложение работало. Эта информация традиционно предоставляется в .POM файле, и вы несете ответственность за то, чтобы все необходимые зависимости правильно ссылались, как правило, через пакет NuGet или путем объединения нужных .JAR/.AAR файлов в ваш проект.
В .NET 9 добавлена функция проверки зависимостей Java. Предоставив .POM-файл, инструмент связывания может помочь гарантировать, что выполнены все необходимые зависимости Java.
Чтобы включить верификацию зависимостей Java в нашем пошаговом руководстве, убедитесь, что вы используете .NET 9+ и ваша целевая платформа проекта - это net9.0-android или выше.
Скачайте из репозитория Mavencircleimageview-3.1.0.pom на локальный диск и поместите его в папку вашего проекта. Обратите внимание, что .POM-файлы не будут обнаружены автоматически, так как они должны быть связаны с правильными .JAR/.AAR.
Обновите автоматически импортированный AndroidLibrary, чтобы указать расположение файла .POM с помощью атрибута Manifest. Кроме того, укажите JavaArtifact и JavaVersion в библиотеке Java.
<!-- JavaArtifact format is {GroupId}:{ArtifactId} -->
<ItemGroup>
<AndroidLibrary
Update="circleimageview-3.1.0.aar"
Manifest="circleimageview-3.1.0.pom"
JavaArtifact="de.hdodenhof:circleimageview"
JavaVersion="3.1.0" />
</ItemGroup>
Эта библиотека проста и не имеет зависимостей от Java, но если бы такие зависимости были и они не были выполнены, выдавалась бы такая ошибка.
error XA4241: Java dependency 'androidx.collection:collection:1.0.0' is not satisfied.
error XA4242: Java dependency 'org.jetbrains.kotlin:kotlin-stdlib:1.9.0' is not satisfied. Microsoft maintains the NuGet package 'Xamarin.Kotlin.StdLib' that could fulfill this dependency.
Дополнительные сведения о настройке проверки зависимостей Java и способах удовлетворения зависимостей можно найти в документации.
Следующие шаги
Настройка привязок с метаданными. Библиотека Java, используемая в пошаговом руководстве, является тривиальной, и средство привязки смогло полностью преобразовать её в API C#. К сожалению, это часто не так, и часто возникают ошибки компиляции. Эти ошибки должны быть исправлены с помощью метаданных вручную, чтобы указать инструмент привязки, как устранить различия между языками Java и C#.
Изменение пространств имен — типы в пошаговом руководстве в конечном итоге в пространстве
DE.Hdodenhof.Circleimageviewимен .NET. Имена пакетов Java, как правило, более многословные, чем пространства имен .NET, и возможно было бы более целесообразно их изменить, напримерCircleImageViewLibraryс помощьюAndroidNamespaceReplacement:
<ItemGroup>
<AndroidNamespaceReplacement Include='DE.Hdodenhof.Circleimageview' Replacement='CircleImageViewLibrary' />
</ItemGroup>