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

标签 dependencies android-gradle-plugin pom.xml aar

我创建了一个 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/

相关文章:

dependencies - libstdc++6-armhf-cross 出现未满足的依赖项错误。如何解决?

java - 使用 gradle 创建 jar,导入类时无法看到同一包中的其他类

Android gradle 构建 : running assembleDebug makes release tasks of project dependencies being called

xml - pom文件中缺少包装标签

java - 父子引用的 Maven 依赖问题

maven - 需要 pom.xml 命名空间吗?

C++:依赖跟踪工具(逆向工程)

PHP 库中的 Javascript 依赖项

java - 分析Java项目中的JAR依赖

android - 现在无法访问dex任务,如何升级到1.5.0?