如何在aar库中指定依赖项?

时间:2015-06-10 07:24:16

标签: dependencies android-gradle pom.xml aar

我创建了一个Android库(名为 MyLib ),它依赖于maven repo上可用的其他库(如 gson 改装等。 )。

MyLib
 |
 |-- Retrofit
 |-- Gson
 |-- ...

MyLib打包到aar文件。

目标是发布一个可以包含在Android应用程序(称为 MyApp )中的aar库,而不会第二次指定 MyLib 使用的依赖项。

MyApp
 |
 |-- MyLib
 |    |-- Retrofit
 |    |-- gson
 |    |-- ...

这是 MyLib build.gradle 文件

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.google.code.gson:gson:2.3.1'
}

现在,如果我想构建并运行 MyApp 而没有依赖性问题,我必须使用以下build.gradle来实现 MyApp (如果我没有指定< em> retrofit 和 gson 作为deps,因为deps不可用而抛出运行时异常。)

dependencies {
    compile('MyLib@aar')

    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.google.code.gson:gson:2.3.1'
}

我不想在 MyApp 中指定 MyLib 中使用的依赖项,我应该如何编写build.gradle文件?

Thansk提前

1 个答案:

答案 0 :(得分:3)

aar发布到maven存储库(本地或远程)并使用compile (...@aar)包含传递依赖关系时,会将其关闭。

aar库启用传递依赖项:

compile ('com.mylib:mylib:1.0.0@aar'){
       transitive=true
}

您可以在此处详细了解:

Can an AAR include transitive dependencies?

这适用于发布到远程或本地maven存储库的aar库。在您的情况下,听起来这个库甚至不会发布到本地maven存储库。我找不到任何关于它是否适用于您的情况的确切信息,但您应该试一试。