【问题标题】:Packaging Android AAR that has dependencies打包具有依赖项的 Android AAR
【发布时间】:2015-01-11 17:34:42
【问题描述】:
我想将我的库打包为 aar。
该库有几个依赖项(通用图像加载器、ORMLite、guava...)
它还依赖于我编写的另一个库(称为“库 B”)。
我有两个问题:
- 使用我的库的每个人是否都需要根据库的依赖项(通用图像加载器、ORMLite、guava...)添加依赖项
- 我是否需要为“库 B”创建单独的 aar,并让我的 lib 的用户对其有单独的依赖项?
【问题讨论】:
标签:
android
android-gradle-plugin
aar
【解决方案1】:
会用我的库的每个人都需要根据库的依赖(通用图片加载器、ORMLite、guava...)添加依赖吗
如果您将 AAR 作为具有适当元数据的存储库中的工件(例如,Maven 样式的 POM 文件)分发,则不会。元数据将指向您的依赖项,构建系统(例如 Gradle)将拉入依赖项。
我是否需要为“库 B”创建单独的 aar
是的,否则没有人可以访问它,除非您将其删除并将其代码折叠到您的第一个库中。
并让我的 lib 的用户对其有单独的依赖项?
有关设置依赖项,请参见上文。
【解决方案2】:
您不需要这样做,您只需执行以下操作:
如果你 aar libray 有三十个依赖项:
您应该让其他人以这种方式使用您的 aar 库:
例如:
compile('com.android:com.android.download:1.3')
或
compile('com.android:com.android.download:1.3@aar'){
transitive = true
}
如果您的 aar 库没有 30 个依赖项:
compile('com.android:com.android.download:1.3@aar')
一句话:@aar 与默认的传递库冲突