android - AAR 可以包含传递依赖吗?

标签 android maven gradle android-studio android-gradle-plugin

现在我有一个库项目,比如说项目 Foo,它依赖于像 OkHttp 这样的库。

现在,Foo 有一个 Maven 构建步骤,可以生成 AAR 并将其推送到公共(public)场所。

现在假设我有项目 B,我们将其命名为 Bar。 Bar 是一个 Android 应用,Bar 依赖于 Foo。

嗯,我有。但是,当我从 Bar 调用 OkHttp 的 Foo 中的 public static 函数时,我收到以下消息:

java.lang.NoClassDefFoundError: com.squareup.okhttp.OkUrlFactory
            at com.foo.sdk.utils.OkHttpStack.<init>(OkHttpStack.java:15)

这样的事情可能吗?或者 Bar 是否需要手动依赖 OkHttp 以及 Foo 的任何其他依赖项?

最佳答案

花了一点时间,但我找到了我想要的东西。这恰好是我对搜索的措辞。

这个鲜为人知的答案正是我想要的:

Transitive dependencies not resolved for aar library using gradle

请注意,首先,如果 aar 库托管在 maven 存储库中,则依赖项仅与 aar 库相关联,因为 pom 文件不包含在 aar 中。

基本上,我需要添加一个

transitive = true

...到Bar的build.gradle

例子:

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

这样它就包含了我所有的传递库。

但是请注意,这实际上可能会导致依赖项(尤其是本地的)之间的冲突,可以使用 exclude 标签解决。

关于android - AAR 可以包含传递依赖吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25698160/

相关文章:

java - 如何使用 Java 类从资源 mipmap 获取图像

maven - 如何配置 Typesafe Activator *先验* 以使用现有的本地 Maven 存储库?

java - Gradle 6 : get the list of implementation dependencies programmatically

android - 循环内的命令行

java - 用于复制 url-webview 的按钮

android - 列出 phonegap 构建目录中的文件

android - Cordova 在显示启动画面期间隐藏状态栏

java - DataTorrent/Apache Apex 与 sbt

java - 如何创建在 Visual Studio Code 中工作的 Java/Maven 项目?

android - 应用程序不断停止 react 原生 map 并 react 原生火力基地