¿Qué hace transitive = true en Gradle exactamente hacer (wrt crashlytics)?

¿Qué hace Gradle transitive = true hacer exactamente? No está claro en la documentación de Gradle . Esto es en el contexto de compile dentro de build.gradle . En mi caso estoy dependiendo de los crashlíticos de Android.

 compile('com.crashlytics.sdk.android:crashlytics:2.2.2@aar') { transitive = true; } 

Varios documentos de Gradle ( aquí y aquí ) implican que "transitivo" por defecto es true. Sin embargo, eliminando transitive = true resultados transitive = true en las dependencias transitivas no se traen (en particular KitGroup ).

 class file for io.fabric.sdk.android.KitGroup not found 

Los documentos dicen que el valor predeterminado es verdadero, pero el comportamiento real parece ser lo contrario.

Estoy corriendo Gradle 2.2.1. Tal vez el comportamiento cambió entre 2,2 y 2,4?

Editar : Dependencias transitivas relacionadas no resueltas para la biblioteca aar usando gradle

Está utilizando la notación @aar .
Esto significa que desea descargar sólo el artefacto aar, y no hay dependencias.
Puede consultar esta parte de la documentación :
Compruebe la 1.4.1.2. Artifact only notation Sección de 1.4.1.2. Artifact only notation :

Una notación de artefacto sólo crea una dependencia de módulo que descarga sólo el archivo de artefacto con la extensión especificada. Los descriptores de módulo existentes se ignoran .

Utilizando la notación @aar si desea descargar las dependencias, debe agregar transitive=true .

Esperaría que omitiendo @ aar debería funcionar sin agregar el atributo transitivo.

Mi suposición es que el artefacto de Crashlytics al que se está refiriendo manualmente especifica las dependencias como no transitivas ( transitive=false ) para que no se vea obligado a poner esas dependencias de forma predeterminada. Es por eso que estás viendo el comportamiento contrario. Por ejemplo, es posible que algunos desarrolladores no quieran aprovechar todos los servicios de Google Play o cualquier otra cosa que Crashlytics pueda utilizar si está presente.

Por lo tanto, mediante la eliminación de que, Gradle ya no trae en la dependencia, y no se puede construir. Puede especificar esa dependencia manualmente si es necesario.

Dicho esto – Creo que el tema más importante a mano es que usted no debe referenciar el artefacto Crashlytics directamente – usted debe utilizar el tejido, y tirando en Crashlytics como resultado: https://dev.twitter.com/fabric/ Android / integración

Establece si esta dependencia debe resolverse incluyendo o excluyendo sus dependencias transitivas. Los artefactos que pertenecen a esta dependencia podrían tener dependencias de otros artefactos. Estos últimos se llaman dependencias transitivas.

Gradle sigue dependencias transitivas por defecto. Si desea apagarlo para una biblioteca en particular, utilice el indicador transitivo.

Cambiar el valor del indicador transitivo a false evita la descarga de dependencias transitivas, por lo que tendrá que agregar lo que se requiera usted mismo. Si sólo desea un módulo jar, sin ninguna dependencia adicional, puede especificar que también.

En una nota más general: Configurar transitive = false en la biblioteca de crashlytics hace que gradle ignore todas las bibliotecas requeridas por crashlytics (= "librerías transitorias") y no las descargue y las crashlytics .

Tendría que agregar manualmente las bibliotecas necesarias a su proyecto o confiar en otras bibliotecas transitorias agregadas por otras dependencias.

El valor predeterminado para gradle es transitive = true .

Ejemplos y explicación completa aquí: http://www.devsbedevin.com/android-understanding-gradle-dependencies-and-resolving-conflicts/

Controles transitivos transitividad. Gradle por defecto normalmente a transitivo, excepto cuando no lo hace. Hay un error con transitividad y clasificadores, consulte https://issues.gradle.org/browse/GRADLE-3188 .

  • Google Cloud Messaging: Valor de carga útil siempre cadena
  • Android M Permisos: onRequestPermissionsResult () no se llama
  • Android: error al cargar la biblioteca
  • Android: Cómo sumar todas las columnas de una base de datos SQLite y devolver 1 variable única
  • Posible BUG en Android Clase ImageDownloader: sHardBitmapCache NO estática cuando debería ser?
  • Android Realm que almacena int y String
  • GC_FOR_ALLOC es más "serio" al investigar el uso de la memoria?
  • Android: falla la compilación de ANT con google-play-services-lib: "resuelve a una ruta sin archivo project.properties para el proyecto"
  • Cómo convertir matriz de bytes de una imagen a una cadena codificada en base64 que representa un jpg
  • Cómo Java Binding para Dbus para ejecutarse en Android
  • Problema del adaptador simple, texto + imagen en hilandero. Java, Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.