现在我有一个库项目,比如说项目 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/