AAR可以包含传递依赖吗?

Vic*_*cVu 61 android gradle maven android-studio android-gradle-plugin

所以,现在我有一个图书馆项目,说项目public static取决于像这样的图书馆public static.

现在,它public static有一个maven buildstep,可以生成AAR并将其推送到公共场所.

所以现在让我说我有项目B,我们会称之为public static.Bar是一个Android应用程序,public static依赖于public static.

好吧,我有.但是,当我从该调用中调用public static函数时,我收到以下消息:public staticpublic staticpublic static

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

那么,这样的事情可能吗?或者public static需要手动依赖public static以及任何其他依赖项public static

Vic*_*cVu 55

所以,花了一点时间,但我发现了我在寻找的东西.它恰好是我搜索我的搜索方式.

这个较少见的答案正是我所寻找的:

使用gradle未解析aar库的传递依赖性

基本上,我需要添加一个

transitive = true
Run Code Online (Sandbox Code Playgroud)

到bar的build.gradle

例如:

compile ('com.foo:FOO:1.0.0@aar'){
       transitive=true
}
Run Code Online (Sandbox Code Playgroud)

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

但请注意,这实际上可能会导致依赖关系(尤其是本地问题)之间的冲突,这可以使用'exclude'标记来解决.

  • @MichaelKnight如果使用flatDir将aar包含为本地文件,则表示aar不包含传递依赖项,您应手动包含它们.但是,如果您从maven repo获取aar,那么library会描述它正在使用的依赖项(在pom文件中),gradle可以自动为您获取它们. (20认同)
  • 我正在遵循这种方法而没有取得多大成功.根据之前解释的方法,我的设置应该如下:`compile('com.my:library:2.0.1-SNAPSHOT@aar') {transitive = true}`但是当我在项目中导入最终库时,传递的lib缺失了.我不知道如何继续,任何想法? (2认同)