Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
Esta funcionalidade está disponível apenas em .NET 9+.
Um problema comum ao criar bibliotecas de ligação Java para .NET em Android é não fornecer as dependências Java necessárias. O processo de vinculação ignora a API que exige dependências em falta, o que pode resultar em grandes porções da API desejada não serem vinculadas.
Ao contrário dos assemblies .NET, uma biblioteca Java não especifica as suas dependências no pacote. A informação de dependência é armazenada em ficheiros externos chamados ficheiros POM. Para consumir esta informação e garantir dependências corretas, deve ser adicionada uma camada adicional de ficheiros a um projeto de ligação.
Sugestão
A forma preferida de interagir com este sistema é usar <AndroidMavenLibrary> o que descarregue automaticamente quaisquer ficheiros POM necessários.
Por exemplo:
<AndroidMavenLibrary Include="com.squareup.okio:okio" Version="1.17.4" />
É automaticamente expandido para:
<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.
No entanto, também é possível optar manualmente pela verificação de dependências em Java usando os itens de compilação aqui documentados.
Especificação
Para optar manualmente pela verificação de dependência em Java, adicione os atributos Manifest e JavaArtifact a um item <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>
Construir o projeto de ligação agora deverá resultar em erros de verificação se my_binding_library.pom especificar dependências que não são cumpridas.
Por exemplo:
error : Java dependency 'androidx.collection:collection' version '1.0.0' is not satisfied.
Ver estes(s) erro(s) ou ausência de erros deve indicar que a verificação de dependência em Java está a funcionar. Siga o guia Resolving Java Dependencies para corrigir quaisquer erros de dependência em falta.
Ficheiros POM adicionais
Os ficheiros POM podem, por vezes, ter algumas funcionalidades opcionais em uso que os tornam mais complicados do que o exemplo acima.
Ou seja, um ficheiro POM pode depender de um ficheiro POM "pai":
<parent>
<groupId>com.squareup.okio</groupId>
<artifactId>okio-parent</artifactId>
<version>1.17.4</version>
</parent>
Além disso, um ficheiro POM pode "importar" informação de dependência de outro ficheiro 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>
A informação de dependência não pode ser determinada com precisão sem também ter acesso a estes ficheiros POM adicionais, o que resultará num erro como:
error : Unable to resolve POM for artifact 'com.squareup.okio:okio-parent:1.17.4'.
Neste caso, precisamos de fornecer o ficheiro POM para 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>
Note que, como os POMs "Pai" e "Importar" podem ter POMs pais e importados, este passo pode ter de ser repetido até que todos os ficheiros POM possam ser resolvidos.
Note também que, ao usar <AndroidMavenLibrary> , tudo deve ser tratado automaticamente.
Neste ponto, se existirem erros de dependência, siga o guia Resolving Java Dependencies para corrigir quaisquer erros de dependência em falta.