tools - install gradle android studio
¿Puede un AAR incluir dependencias transitivas? (1)
Entonces, ahora mismo tengo un proyecto de biblioteca, digo el proyecto Foo
que depende de una biblioteca como OkHttp
.
Ahora, el Foo
tiene un maven buildstep que genera un AAR y lo empuja a un lugar público.
Así que ahora digamos que tengo el proyecto B, lo llamaremos Bar
. Bar es una aplicación de Android, y Bar
depende de Foo
.
Bueno, tengo eso. Sin embargo, cuando realizo una llamada a una función public static
en Foo
desde Bar
que llama a OkHttp
, recibo este mensaje:
java.lang.NoClassDefFoundError: com.squareup.okhttp.OkUrlFactory
at com.foo.sdk.utils.OkHttpStack.<init>(OkHttpStack.java:15)
Entonces, ¿es posible? ¿O Bar
tendrá que depender manualmente de OkHttp
y de otras dependencias que tenga Foo
?
Por lo tanto, tardó un poco, pero encontré lo que estaba buscando. Simplemente resultó ser la forma en que estaba redactando mis búsquedas.
Esta respuesta menos vista fue exactamente lo que estaba buscando:
Las dependencias transitivas no se resuelven para la biblioteca aar usando gradle
Esencialmente, necesitaba agregar un
transitive = true
al build.gradle de Bar
ex:
compile (''com.foo:FOO:1.0.0@aar''){
transitive=true
}
De esta manera incluye todas mis bibliotecas transitivas.
Sin embargo, tenga en cuenta que esto puede causar conflictos entre dependencias (especialmente las locales) que pueden resolverse utilizando una etiqueta ''exclude''.