Gradle:下载包含的 aar 库的依赖项
Posted
技术标签:
【中文标题】Gradle:下载包含的 aar 库的依赖项【英文标题】:Gradle: download Dependencies of included aar-library 【发布时间】:2016-07-28 04:48:48 【问题描述】:我编写了一个库项目cameraBarcodeScanner
,它内置在一个 aar 文件中。该库在其 build.gradle 中定义了以下依赖项:
dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.0'
compile 'com.google.zxing:core:3.2.1'
compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
我正在像这样的测试应用程序中使用该库:
dependencies
compile(name: 'cameraBarcodeScanner-release', ext: 'aar')
Gradle 找到应用程序并能够构建它。但是,在运行时,android 无法找到位于zxing-android-embedded
中的类。在我看来,gradle 没有下载库项目的依赖项。
我也试过:
dependencies
compile(name: 'cameraBarcodeScanner-release', ext: 'aar')
transitive = true
但这也无济于事。我是否必须以某种方式公开库的依赖项?您将如何使用库并让 gradle 下载其依赖项?
提前致谢!
【问题讨论】:
【参考方案1】:aar 文件不包含嵌套(或transitive)依赖项,并且没有描述库使用的依赖项的 pom 文件。
这意味着,如果您使用 flatDir
repo 导入 aar 文件您还必须在项目中指定依赖项。
您应该使用 maven 存储库(您必须在私有或公共 maven 存储库中发布库),您不会遇到同样的问题。 在这种情况下,gradle 使用 pom 文件下载依赖项,该文件将包含依赖项列表。
【讨论】:
感谢您的回答。我会尝试将其上传到我们公司的仓库。 只是想给您反馈,您的回答解决了问题。在对库的 build.gradle 进行一些摆弄以使 gradle 用所有需要的依赖项填充 pom.xml 并将结果上传到我们的仓库后,它成功了! 是的,在我通过flatDir
添加 aar 后,只有将所有库依赖添加到应用模块依赖后,我才能使用它启动应用
有没有办法包含依赖项?
@battlepope 我不认为你想这样做 - 如果你需要 aar,那么你需要 aar。如果您有任何想要与其他人共享的资源文件,Jar 不能替换 aar。例如,您的库中有一个带有 xml 的自定义控件要共享。在那个 aar 是唯一的解决方案。如果 aar 需要任何依赖项,那么这就是通过手动添加在上面保持开放或部分回答的问题。但是,aar 不等于 jar。以上是关于Gradle:下载包含的 aar 库的依赖项的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 AAR 形式集成 leakcanary-android 服务
如何发布带有远程依赖项 (gradle) 的 Android 库 (aar)?