【问题标题】:How to release an AAR with another android library project dependency?如何发布具有另一个 android 库项目依赖项的 AAR?
【发布时间】:2015-01-05 20:00:39
【问题描述】:

这是我的开发项目结构:

项目文件夹 | +--应用 | +--我的库 | +--图书馆 | +--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')
}

我怎样才能发布 MyLib 以及已经打包在 AAR 中的 LibA

【问题讨论】:

  • 遇到同样的问题。运气好吗?
  • @lostintranslation ,我发布一个答案,希望它有帮助。

标签: android maven gradle aar


【解决方案1】:

自己回答问题。最后我把MyLib中的build.gradle改成了:

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

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

一开始我在找LibAMyLib打包的方法,但是好像很难。

看到这个问题:Android Studio how to package single AAR from multiple library projects?

【讨论】:

  • MyLib 的 POM 应该将 LibA 声明为依赖项,这应该可以解决问题。
  • LibA是一个Library项目,它不在maven central上,如果其他人想使用MyLib,gradle如何自动解决依赖关系?
  • 它应该发布到一些公共或内部的 Maven 存储库。如果这是一个 OSS 项目,Bintray 免费提供个人 Maven 仓库。
  • 它是“提供”,而不是“提供”,但这显然太短而无法编辑。
  • 所以没有办法在你的库中附加一个 .aar 代码源也作为 .aar 发布?
猜你喜欢
  • 2016-07-10
  • 2014-07-27
  • 1970-01-01
  • 2015-11-11
  • 1970-01-01
  • 2014-05-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多