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.