如何发布另一个Android库项目依赖的AAR?

Fly*_*rse 9 android gradle maven aar

这是我的开发项目结构:

projectFolder
  |
  +--App
  |
  +--MyLib
  |
  +--Libraries
      |
      +--LibA

MyLib依赖于LibA,我将MyLib打包为AAR并将其发布到Maven 仓库,但当我将MyLib作为远程aar依赖项包含在另一个项目(TestProj)中时,我得到了构建错误(无法解析LibA的依赖关系,LibA不包含在MyLib的发布中),这是TestProj的 app文件夹中的build.gradel :

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

这是MyLib的build.gradle :

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

我如何能释放MyLib中力霸已经打包在AAR?

Fly*_*rse 5

自己回答问题。最后我改变了的build.gradleMyLib中来:

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

因此LibA将仅用于MyLib的构建过程中,TestProj将不再在编译时要求LibA依赖项。注意,这可能会在运行时导致NoClassDefFoundError,因此您必须告诉使用您的库的人在他们的项目的build.gradle中包括LibA自己。

最初,我在寻找一种用MyLib打包LibA的方法,但这似乎很困难

看到这个问题:Android Studio如何打包来自多个库项目的单个AAR?

  • 它的“提供”,而不是“提供”,但这显然太短了,无法进行编辑。 (2认同)