次の方法で共有


Java の依存関係の検証

この機能は、.NET 9 以降でのみ使用できます。

.NET for Android 用の Java バインド ライブラリを作成する場合の一般的な問題は、必要な Java 依存関係が提供されないことです。 バインド プロセスでは、不足している依存関係を必要とする API が無視されるため、目的の API の大部分がバインドされない可能性があります。

.NET アセンブリとは異なり、Java ライブラリはパッケージ内の依存関係を指定しません。 依存関係情報は、POM ファイルと呼ばれる外部ファイルに格納されます。 この情報を使用して正しい依存関係を確保するには、バインド プロジェクトにファイルの追加レイヤーを追加する必要があります。

ヒント

このシステムと対話する好ましい方法は、必要なPOMファイルを自動的にダウンロードする <AndroidMavenLibrary> を使用することです。

次に例を示します。

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

この場合は、 com.squareup.okio:okio-parent:1.17.4の POM ファイルを指定する必要があります。

<!-- 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 自体に親およびインポートされた POM を含めることができるので、すべての POM ファイルを解決できるようになるまで、この手順を繰り返す必要がある場合があります。

また、 <AndroidMavenLibrary> を使用する場合は、すべて自動的に処理されることに注意してください。

この時点で、依存関係エラーがある場合は、 Resolving Java Dependencies ガイドに従って、不足している依存関係エラーを修正してください。