我创建了一个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提前
答案 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存储库。我找不到任何关于它是否适用于您的情况的确切信息,但您应该试一试。