Gradle中的transitive = true究竟是做什么的(关于crashlytics)?
 Gradle transitive = true什么? 从Gradle文档中不清楚。 这是在build.gradle中compile的上下文中。 在我的情况下,我依靠Android的crashlytics。 
 compile('com.crashlytics.sdk.android:crashlytics:2.2.2@aar') { transitive = true; } 
 几个Gradle文档( 这里和这里 )暗示“传递”默认为true。 然而,消除transitive = true依赖不KitGroup (特别是KitGroup )中的transitive = true结果。 
 class file for io.fabric.sdk.android.KitGroup not found 
文件说它默认为真,但实际行为似乎是相反的。
我正在运行Gradle 2.2.1。 也许行为在2.2和2.4之间变化了?
编辑 :相关传递依赖没有解决使用gradle aar库
 你正在使用@aar符号。 
 这意味着你只需要下载aar神器,而不需要依赖。 
 你可以检查这部分的文档 : 
 检查1.4.1.2. Artifact only notation  1.4.1.2. Artifact only notation部分: 
只有工件符号才会创build一个模块依赖关系,只下载具有指定扩展名的工件文件。 现有的模块描述符被忽略 。
 如果你想下载依赖关系,使用@aar符号,你应该添加transitive=true 。 
我希望省略@aar它应该工作,而不添加传递属性。
 我的猜测是,你所引用的Crashlytics工件手动指定依赖不是传递的( transitive=false ),所以你不必强迫这些依赖进入默认状态。 这就是为什么你看到相反的行为。 例如,一些开发人员可能不想吸引所有的Google Play服务或Crashlytics可能使用的任何其他服务。 
所以,通过删除它,Gradle不再牵扯到依赖关系,并且无法构build。 如果需要,可以手动指定依赖项。
话虽如此,我认为眼前的更大的问题是,你不应该直接引用Crashlytics神器 – 你应该使用Fabric,并且结果引入Crashlytics: https ://dev.twitter.com/fabric/ 安卓/整合
设置是否应该解决这个依赖关系,包括或排除它的传递依赖关系。 属于这个依赖的工件可能会依赖于其他的工件。 后者被称为传递依赖。
Gradle默认遵循传递依赖关系。 如果您想closures某个特定的库,请使用传递标志。
将传递标志的值更改为false可防止传递依赖项的下载,因此您必须添加自己所需的任何内容。 如果你只想要一个模块jar,没有任何额外的依赖,你也可以指定。
 更为一般的说明:在crashlytics库上设置transitive = false会导致gradle忽略crashlytics (=“transient libraries”)所需的所有库,而不会下载并链接它们。 
您将不得不手动将所需的库添加到您的项目中,或者依赖于其他依赖项添加的其他临时库。
  gradle的默认值是transitive = true 。 
示例和完整的解释在这里: http : //www.devsbedevin.com/android-understanding-gradle-dependencies-and-resolving-conflicts/
  transitive控制传递性。  Gradle通常默认为传递,除非不传递。 传递性和分类器存在一个错误,请参阅https://issues.gradle.org/browse/GRADLE-3188 。