Java-függőség ellenőrzése

Megjegyzés:

Ez a funkció csak a .NET 9+-ban érhető el.

Az androidos .NET-hez készült Java-kötéskódtárak létrehozásakor gyakori probléma, hogy nem biztosítják a szükséges Java-függőségeket. A kötési folyamat figyelmen kívül hagyja a hiányzó függőségeket igénylő API-t, így a kívánt API nagy részét nem köti össze.

A .NET-szerelvényekkel ellentétben a Java-kódtárak nem határozzák meg a csomag függőségeit. A függőségi adatokat a rendszer POM-fájloknak nevezett külső fájlokban tárolja. Ahhoz, hogy ezeket az információkat felhasználhassa a megfelelő függőségek biztosítása érdekében, egy további fájlréteget kell hozzáadni egy kötésprojekthez.

Jótanács

A rendszerrel való interakció előnyben részesített módja a <AndroidMavenLibrary> használata, amely automatikusan letölti a szükséges POM-fájlokat.

Például:

<AndroidMavenLibrary Include="com.squareup.okio:okio" Version="1.17.4" />

automatikusan ki lesz bontva a következőre:

<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.

Az itt dokumentált buildelemek használatával azonban manuálisan is engedélyezheti a Java-függőségek ellenőrzését.

Specification

Ha manuálisan szeretne részt venni a Java-függőség ellenőrzésében, adja hozzá a Manifest és JavaArtifact attribútumokat egy <AndroidLibrary> elemhez:

<!-- 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>

A kötési projekt létrehozásakor ellenőrzési hibákat kell eredményeznie, ha my_binding_library.pom olyan függőségeket határoz meg, amelyek nem teljesülnek.

Például:

error : Java dependency 'androidx.collection:collection' version '1.0.0' is not satisfied.

Ha ezeket a hibákat látja, vagy nem jelenik meg hiba, az azt jelzi, hogy a Java-függőség ellenőrzése működik. A hiányzó függőségi hibák kijavításához kövesse a Java-függőségek feloldása című útmutatót.

További POM-fájlok

A POM-fájlok néha olyan opcionális funkciókkal is rendelkezhetnek, amelyek bonyolultabbá teszik őket, mint a fenti példa.

Vagyis egy POM-fájl a "szülő" POM-fájltól függhet:

<parent>
  <groupId>com.squareup.okio</groupId>
  <artifactId>okio-parent</artifactId>
  <version>1.17.4</version>
</parent>

Emellett egy POM-fájl "importálhatja" a függőségi adatokat egy másik POM-fájlból:

<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 függőségi adatok nem határozhatók meg pontosan anélkül, hogy hozzá kellene férniük ezekhez a további POM-fájlokhoz, és a következőhöz hasonló hibát eredményeznek:

error : Unable to resolve POM for artifact 'com.squareup.okio:okio-parent:1.17.4'.

Ebben az esetben meg kell adnunk a POM-fájlt a következőhöz 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>

Vegye figyelembe, hogy mivel a "Szülő" és az "Import" POM-nak lehetnek szülő- és importált POM-fájljai, ezt a lépést meg kell ismételni, amíg az összes POM-fájl feloldható.

Vegye figyelembe azt is, hogy ha ezt használja <AndroidMavenLibrary> , az összeset automatikusan kell kezelni.

Ezen a ponton, ha függőségi hibák lépnek fel, kövesse a Java-függőségek feloldása útmutatót a hiányzó függőségi hibák kijavításához.