2014-09-06 173 views
45

所以,现在我有一个图书馆项目,说项目Foo,取决于像OkHttp图书馆。现在AAR可以包含传递依赖吗?

,该Foo具有生成的AAR,并将其推到一个公共场所行家buildstep。

所以现在可以说我有项目B,我们把它叫做Bar。 Bar是Android应用程序,Bar取决于Foo

嗯,我有。然而,当我做从Bar调用OkHttpFoo一个public static函数的调用,我得到这个消息:

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

那么,这样的事情可能吗?或者Bar需要手动依赖OkHttp以及其他任何依赖关系Foo有?

回答

40

所以,它花了一段时间,但我发现我在找什么。这恰好是我用我的方式进行搜索的方式。

这见过较小的回答正是我一直在寻找的是:从本质上讲

Transitive dependencies not resolved for aar library using gradle

,我需要一个

transitive = true 

添加到酒吧

的的build.gradle

ex:

compile ('com.foo:FOO:[email protected]'){ 
     transitive=true 
} 

这样它包括我所有的传递库。

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

+2

我遵循这种方法没有太大的成功。因此先前解释的方法,我的设置应该如下: '编译(“com.my:library:[email protected]”){ 传递=真 }'但是当我导入最终库我的项目中,传递库缺失。我不知道如何继续,有什么想法? – 2016-11-16 08:49:20

+13

@MichaelKnight如果使用flatDir将aar包含为本地文件,则表示aar不包含传递依赖关系,您应该手动包含它们。但是,如果你从maven repo获取aar,那么库描述了它正在使用的依赖关系(在pom文件中),并且gradle可以为你自动获取它们。 – NazarK 2016-11-23 12:36:52

+0

@MichaelKnight不适合我 – 2017-09-07 14:12:03