So, right now I have a Library project, say project Foo
that depends on a library like OkHttp
.
Now, the Foo
has a maven buildstep that generates an AAR and pushes it up to a public place.
So now lets say I have project B, we'll call it Bar
. Bar is an Android application, and Bar
depends on Foo
.
Well, I have that. However, when I make a call to a public static
function in Foo
from Bar
that calls OkHttp
, I get this message:
java.lang.NoClassDefFoundError: com.squareup.okhttp.OkUrlFactory
at com.foo.sdk.utils.OkHttpStack.<init>(OkHttpStack.java:15)
So, is such a thing possible? Or will Bar
need to manually depend on OkHttp
as well as any other dependencies Foo
has?
So, it took a little while but I found what I was looking for. It just happened to be the way I was wording my searches.
This lesser-seen answer was exactly what I was looking for:
Transitive dependencies not resolved for aar library using gradle
Essentially, I needed to add a
transitive = true
to the build.gradle of Bar
ex:
compile ('com.foo:FOO:1.0.0@aar'){
transitive=true
}
This way it includes all of my transitive libraries.
Note, however, that this may actually cause conflicts between dependencies (especially local ones) which can be resolved using an 'exclude' tag.
来源:https://stackoverflow.com/questions/25698160/can-an-aar-include-transitive-dependencies