Dependencias transitivas para la biblioteca aar local

Estamos haciendo una biblioteca, básicamente para nuestro API, que haríamos 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 ponemos 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, lo que es una mierda. Debe ser tomado de la biblioteca, ¿no?

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

¿Cómo hacer el trabajo transitive = true ?

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

Esto significa que, si está importando un archivo aar usando un flatDir , debe especificar las dependencias también en su proyecto.

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

Debe utilizar un repositorio maven (tiene que publicar la biblioteca en un repo privado o público de maven), no tendrá el mismo problema.
En este caso, gradle descarga las dependencias usando el archivo pom que contiene la lista de dependencias.

  • Gradle error: La versión mínima de Gradle admitida es 3.3. La versión actual es 3.2
  • No se pudo encontrar com.google.android.gms: play-services: 7.3.0
  • ¿Cómo tener dos sabores de construcción heredar de un sabor de raíz en Android Studio?
  • App: processDebugResources - IllegalArgumentException (sin mensaje de error)
  • No se pudo aplicar el complemento Android Gradle plugin 3.0.0-alpha5 no debe aplicarse al proyecto
  • Cómo resolver java.util.zip.ZipException entrada duplicada: com / google / gson / annotations / Expose.class?
  • Deshabilitar permisos de dependencia
  • La sincronización de Gradle falló: No se pudo actualizar el complemento de Android a la versión '2.0.0'
  • Manifiesto Herramientas de fusión: reemplazar no tiene ningún efecto
  • Butterknife 8.4.0 - Plugin con el id 'android-apt' no encontrado
  • La ruta local no existe Android Studio 1.0
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.