12

我编写了一个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 下载其依赖项?

提前致谢!

4

1 回答 1

12

aar文件不包含嵌套(或传递)依赖项,并且没有描述库使用的依赖项的 pom 文件

这意味着,如果您使用flatDirrepo导入 aar 文件,您还必须在项目中指定依赖项。

您应该使用maven 存储库(您必须在私有或公共 maven 存储库中发布库),您不会遇到同样的问题。
在这种情况下,gradle 使用包含依赖项列表的 pom 文件下载依赖项。

于 2016-04-07T11:35:38.780 回答