Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Эта функция доступна только в .NET 9+.
Распространенной проблемой при создании библиотек привязки Java для .NET на Android является непредоставление необходимых зависимостей Java. Процесс привязки игнорирует API, требующий отсутствующих зависимостей, поэтому это может привести к тому, что большие части требуемого API не привязаны.
В отличие от сборок .NET, библиотека Java не указывает ее зависимости в пакете. Сведения о зависимости хранятся во внешних файлах, называемых POM-файлами. Чтобы использовать эту информацию и обеспечить правильные зависимости, необходимо добавить дополнительный слой файлов в проект привязки.
Совет
Предпочтительный способ взаимодействия с этой системой — это использование <AndroidMavenLibrary> , которое автоматически скачивает все необходимые POM-файлы.
Например:
<AndroidMavenLibrary Include="com.squareup.okio:okio" Version="1.17.4" />
автоматически расширяется до:
<AndroidLibrary
Include="<MavenCacheDir>/Central/com.squareup.okio/okio/1.17.4/com.squareup.okio_okio.jar"
Manifest="<MavenCacheDir>/Central/com.squareup.okio/okio/1.17.4/com.squareup.okio_okio.pom"
JavaArtifact="com.squareup.okio:okio:1.17.4" />
<AndroidAdditionalJavaManifest
Include="<MavenCacheDir>/Central/com.squareup.okio/okio-parent/1.17.4/okio-parent-1.17.4.pom"
JavaArtifact="com.squareup.okio:okio-parent:1.17.4" />
etc.
Однако также можно вручную принять участие в проверке зависимостей Java с помощью элементов сборки, описанных здесь.
Спецификация
Чтобы вручную принять участие в проверке зависимостей Java, добавьте атрибуты Manifest и JavaArtifact в элемент <AndroidLibrary>.
<!-- JavaArtifact format is {GroupId}:{ArtifactId}:{Version} -->
<ItemGroup>
<AndroidLibrary
Include="my_binding_library.jar"
Manifest="my_binding_library.pom"
JavaArtifact="com.example:mybinding:1.0.0" />
</ItemGroup>
Создание проекта привязки теперь должно привести к ошибкам проверки, если my_binding_library.pom указаны зависимости, которые не выполнены.
Например:
error : Java dependency 'androidx.collection:collection' version '1.0.0' is not satisfied.
Видимость этих ошибок или их отсутствие должно указывать на то, что проверка зависимостей Java работает. Следуйте руководству по устранению зависимостей Java, чтобы исправить ошибки, связанные с отсутствием зависимостей.
Дополнительные файлы POM
Файлы POM иногда могут использовать некоторые необязательные функции, которые делают их более сложными, чем в приведенном выше примере.
То есть, POM-файл может зависеть от родительского POM-файла:
<parent>
<groupId>com.squareup.okio</groupId>
<artifactId>okio-parent</artifactId>
<version>1.17.4</version>
</parent>
Кроме того, POM-файл может импортировать сведения о зависимости из другого POM-файла:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.squareup.okio</groupId>
<artifactId>okio-bom</artifactId>
<version>3.0.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Сведения о зависимости не могут быть точно определены без доступа к этим дополнительным файлам POM и приводят к ошибке, например:
error : Unable to resolve POM for artifact 'com.squareup.okio:okio-parent:1.17.4'.
В этом случае необходимо указать POM-файл для com.squareup.okio:okio-parent:1.17.4:
<!-- JavaArtifact format is {GroupId}:{ArtifactId}:{Version} -->
<ItemGroup>
<AndroidAdditionalJavaManifest
Include="com.square.okio.okio-parent.1.17.4.pom"
JavaArtifact="com.squareup.okio:okio-parent:1.17.4" />
</ItemGroup>
Обратите внимание, что как POM-файлы "Parent" и "Import" могут сами иметь родительские и импортированные POM-файлы, этот шаг может потребоваться повторить, пока не удастся разрешить все POM-файлы.
Обратите внимание также, что при использовании <AndroidMavenLibrary> все это должно обрабатываться автоматически.
На этом этапе, если возникают ошибки зависимостей, следуйте руководству по устранению зависимостей Java , чтобы устранить отсутствующие ошибки зависимостей.