Dependencias transitivas para la biblioteca local aar

Estamos creando una biblioteca, básicamente para nuestra API, que haría la vida más fácil para nuestros desarrolladores externos.

Así que creamos un nuevo proyecto de biblioteca y colocamos Retrofit y algunas otras bibliotecas como dependencias.

dependencies { compile 'com.android.support:appcompat-v7:23.3.0' compile 'com.google.code.gson:gson:2.6.2' compile 'com.squareup.retrofit2:retrofit:2.0.1' compile 'com.squareup.retrofit2:converter-gson:2.0.1' compile 'com.squareup.okhttp3:okhttp:3.2.0' } 

Ahora cuando lo construimos, produce aar archivo aar .

Pero ahora, cuando colocamos el archivo aar en el directorio libs y lo configuramos como dependencia, todavía tenemos que poner la misma dependencia en el archivo build.gradle del usuario, que apesta. Debería tomarse de la biblioteca, ¿verdad?

 repositories { flatDir { dirs 'libs' } } dependencies { compile(name: 'ourlibrary', ext: 'aar') { transitive = true; } } 

¿Cómo hacer transitive = true trabajo?

El archivo aar no contiene las dependencias anidadas (o transitivas ) y no tiene un archivo pom que describe las dependencias usadas por la biblioteca.

Significa que, si está importando un archivo aar utilizando un repository flatDir , debe especificar las dependencias también en su proyecto.

En su caso, agregar transitive=true no resuelve su problema por el motivo descrito anteriormente.

Debes usar un repository maven (tienes que publicar la biblioteca en un repository maven público o privado), no tendrás el mismo problema.
En este caso, gradle descarga las dependencias usando el archivo pom que contendrá la lista de dependencias.