Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Den här funktionen är endast tillgänglig i .NET 9+.
Ett vanligt problem när du skapar Java-bindningsbibliotek för .NET för Android är inte att tillhandahålla nödvändiga Java-beroenden. Bindningsprocessen ignorerar API som kräver saknade beroenden, så detta kan leda till att stora delar av önskat API inte är bundet.
Till skillnad från .NET-sammansättningar anger ett Java-bibliotek inte dess beroenden i paketet. Beroendeinformationen lagras i externa filer som kallas POM-filer. För att kunna använda den här informationen för att säkerställa korrekta beroenden måste ytterligare ett lager av filer läggas till i ett bindningsprojekt.
Tips/Råd
Det bästa sättet att interagera med det här systemet är att använda <AndroidMavenLibrary> som automatiskt laddar ned eventuella POM-filer som behövs.
Som exempel:
<AndroidMavenLibrary Include="com.squareup.okio:okio" Version="1.17.4" />
expanderas automatiskt till:
<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.
Men det är också möjligt att manuellt välja Java-beroendeverifiering med hjälp av byggobjekten som dokumenteras här.
Specifikation
Om du vill välja Java-beroendeverifiering manuellt lägger du till attributen Manifest och JavaArtifact i ett <AndroidLibrary> objekt:
<!-- 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>
Att skapa bindningsprojektet nu bör resultera i verifieringsfel om my_binding_library.pom anger beroenden som inte uppfylls.
Som exempel:
error : Java dependency 'androidx.collection:collection' version '1.0.0' is not satisfied.
Om du ser dessa fel eller inga fel bör det indikera att Java-beroendeverifieringen fungerar. Följ guiden Lösa Java-beroenden för att åtgärda eventuella saknade beroendefel.
Ytterligare POM-filer
POM-filer kan ibland ha några valfria funktioner som används som gör dem mer komplicerade än exemplet ovan.
En POM-fil kan alltså vara beroende av en "överordnad" POM-fil:
<parent>
<groupId>com.squareup.okio</groupId>
<artifactId>okio-parent</artifactId>
<version>1.17.4</version>
</parent>
Dessutom kan en POM-fil "importera" beroendeinformation från en annan POM-fil:
<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>
Beroendeinformation kan inte fastställas korrekt utan att även ha åtkomst till dessa ytterligare POM-filer och resulterar i ett fel som:
error : Unable to resolve POM for artifact 'com.squareup.okio:okio-parent:1.17.4'.
I det här fallet måste vi ange POM-filen för 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>
Observera att eftersom "Parent"- och "Import"-POM:ar själva kan ha överordnade och importerade POM:ar kan det här steget behöva upprepas tills alla POM-filer kan lösas.
Observera också att om du använder <AndroidMavenLibrary>, bör allt hanteras automatiskt.
Om det finns beroendefel följer du guiden Lösa Java-beroenden för att åtgärda eventuella saknade beroendefel.