¿Puede un AAR incluir dependencias transitivas?

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.(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’.