Ste*_*Kuo 160 java android gradle crashlytics build.gradle
Gradle transitive = true
到底做了什么?Gradle文档中不清楚.这是在上下文compile
中build.gradle
.在我的情况下,我依赖于Android的崩溃.
compile('com.crashlytics.sdk.android:crashlytics:2.2.2@aar') {
transitive = true;
}
Run Code Online (Sandbox Code Playgroud)
几个Gradle文档(此处和此处)暗示"传递"默认为true.然而,删除transitive = true
导致传递依赖性的结果(特别是KitGroup
).
class file for io.fabric.sdk.android.KitGroup not found
Run Code Online (Sandbox Code Playgroud)
文档说它默认为true,但实际行为似乎正好相反.
我正在运行Gradle 2.2.1.也许2.2和2.4之间的行为发生了变化?
Gab*_*tti 133
您使用的是@aar
符号.
这意味着您只想下载aar工件,而不是依赖项.
您可以查看这部分文档:
查看以下1.4.1.2. Artifact only notation
部分:
仅工件表示法创建模块依赖项,该依赖项仅下载具有指定扩展名的工件文件.忽略现有模块描述符.
@aar
如果要下载依赖项,请使用表示法,您应该添加transitive=true
.
我希望省略@aar它应该工作而不添加传递属性.
更一般的注意:transitive = false
在crashlytics
库上进行设置会使gradle忽略crashlytics
(=“ transient library”)所需的所有库,而不下载并链接它们。
您将不得不手动将所需的库添加到项目中,或者依赖于其他依赖项添加的其他临时库。
gradle的默认值为transitive = true
。
此处的示例和完整说明:http : //www.devsbedevin.net/android-understanding-gradle-dependencies-and-resolving-conflicts/
我的猜测是你手动引用的Crashlytics工件将依赖关系指定为不是传递(transitive=false
),这样你就不会被迫默认带来这些依赖关系.这就是为什么你会看到相反的行为.例如,一些开发者可能不想提供所有Google Play服务或Crashlytics可能使用的任何其他内容.
因此,通过删除它,Gradle不再引入依赖项,并且无法构建.如果需要,您可以手动指定该依赖项.
话虽这么说 - 我认为手头上更大的问题是你不应该直接引用Crashlytics工件 - 你应该使用Fabric,并因此拉入Crashlytics:https://dev.twitter.com/fabric/ 安卓/整合
Ste*_*Kuo -25
transitive
控制传递性。Gradle 通常默认为可传递的,除非不这样做。传递性和分类器存在错误,请参阅https://issues.gradle.org/browse/GRADLE-3188。
归档时间: |
|
查看次数: |
56241 次 |
最近记录: |