10

これが私の開発プロジェクトの構造です:

プロジェクトフォルダー
  | |
  +--アプリ
  | |
  +--MyLib
  | |
  +--ライブラリ
      | |
      +--LibA

MyLibは LibAに依存しています。MyLibを AAR としてパッケージ化して Maven リポジトリにリリースしましたが、別のプロジェクト ( TestProj ) にMyLibをリモート aar 依存関係として含めると、ビルド エラー ( LibAの依存関係を解決できません。 LibAはMyLibのリリースには含まれていません)。これはTestProjの app フォルダーにある build.gradel です。

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile ('xxx.xxxxxx:yyyyy:1.0-SNAPSHOT@aar'){
      transitive = true
  }
}

そして、ここにMyLibの build.gradle があります:

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  compile project(':Libraries:LibA')
}

AAR に既にパッケージ化されているLibAを使用してMyLibをリリースするにはどうすればよいですか?

4

1 に答える 1

8

自分で質問に答えてください。最後に、MyLib のbuild.gradle をように変更しました。

dependencies {
  compile fileTree(dir: 'libs', include: ['*.jar'])
  provided project(':Libraries:LibA')
}

そのため、LibAはMyLibのビルド プロセスでのみ使用され、TestProjはコンパイル時にLibA依存関係を要求しなくなります。これにより、実行時に NoClassDefFoundError が発生する可能性があることに注意してください。そのため、ライブラリを使用した人に、プロジェクトの build.gradle に LibA 自体を含めるように指示する必要があります。

最初はMyLibLibAをパッケージ化する方法を探していたのですが、難しそうです。

この質問を参照してください: Android Studio how to package single AAR from multiple library projects?

于 2014-11-27T13:32:36.623 に答える