我创建了一个 Android 库(称为 MyLib),它依赖于 maven repo 上可用的其他库(如 gson、retrofit 等)。
MyLib
|
|-- Retrofit
|-- Gson
|-- ...
MyLib 被打包为
aar
文件。目标是发布一个 aar 库,该库可以包含在 Android 应用程序(称为 MyApp)中,而无需再次指定 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,我必须为 MyApp 使用以下 build.gradle(如果我没有将改造和 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 文件?
提前谢谢
最佳答案
发布 aar
时到 maven 存储库(本地或远程)并使用 compile (...@aar)
包含它传递依赖被关闭。
启用 aar
的传递依赖关系图书馆:
compile ('com.mylib:mylib:1.0.0@aar'){
transitive=true
}
您可以在此处阅读有关此内容的更多信息:
Can an AAR include transitive dependencies?
这适用于
aar
发布到远程或本地 Maven 存储库的库,在您的情况下,听起来该库甚至不会发布到本地 Maven 存储库。我找不到任何关于它是否适用于你的情况的确切信息,但你应该试一试。
关于dependencies - 如何在 aar 库中指定依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30749728/