10

这是我的开发项目结构:

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

这是MyLib的 build.gradle :

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

我如何发布MyLib和已经打包在 AAR 中的LibA ?

4

1 回答 1

8

自己回答问题。最后我将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 如何从多个库项目中打包单个 AAR?

于 2014-11-27T13:32:36.623 回答