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

时间:2014-11-09 12:29:26

标签: android maven gradle aar

这是我的开发项目结构:

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

MyLib 依赖于LibA,我已将 MyLib 打包为AAR并将其发布到Maven仓库,但当我将 MyLib 包含在内时另一个项目( TestProj )作为远程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

1 个答案:

答案 0 :(得分:4)

自己回答这个问题。最后我将 MyLib 中的 build.gradle 更改为:

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

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

起初,我一直在寻找一种用 MyLib 打包 LibA 的方法,但这看起来很困难。

请参阅此问题:Android Studio how to package single AAR from multiple library projects?