我在gradle的 crashlytics / fabric 设置中发现了一点小故障,这花了我2个小时的生命。
首先,我做了他们在本指南中所说的一切: https://fabric.io/kits/android/crashlytics/install
这是一切引起的代码:
第一次尝试
dependencies {
...
compile('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
transitive = true;
}
}
dependencies{}
块中的每个库版本都使用ext{}
中的appname/app/build.gradle
块,因此在我们的情况下
ext {
crashlytics = '2.9.4@aar'
}
所以最终,这将是唯一的更改implementation
,我认为应该这样做,因为它将在2018年底过时。implementations
确实会改变任何行为。
implementation("com.crashlytics.sdk.android:crashlytics:$crashlytics"){
transitive = true
}
但是,如果您尝试构建它,您将得到:
No such property: betaDistributionApkFilePath for class: java.lang.String
哇。我不知道为什么..但让我们调查一下。我们将尝试其他设置,因此请忘记您在上面看到的所有内容。
第二次尝试
在appname/app/build.gradle
中的dependencies{}
中将通道更改为此,因此我们没有ext{}
的版本
implementation("com.crashlytics.sdk.android:crashlytics:$rootProject.ext.crashlytics") {
transitive = true
}
,现在在根目录appname/build.gradle
buildscript {
ext.fabric_gradle = '2.9.4@aar'
repositories {
...
}
dependencies {
...
}
}
构建确定,您可以继续工作。但是呢它应该完全相同...
第三次尝试
我不知道为什么,但是在我们的第一次尝试中,您只需在appname/app/build.gradle
ext{}
块名称 crashlytics 变量中 CANT 除了 crashlytics (例如 crashlytics_version )之外,因此让我们首先尝试进入工作状态。
ext {
crashlytics_version = '2.9.4@aar'
}
implementation("com.crashlytics.sdk.android:crashlytics:$crashlytics_version"){
transitive = true
}
生成是确定。魔术。
或者只是以常规方式进行操作,不要尝试制作聪明的东西...。作为这段漫长研究中的第一段代码,它也完全可以正常工作:
compile('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
transitive = true;
}
答案 0 :(得分:3)
您只需在appname/app/build.gradle
ext{}
块中不能,将变量 crashlytics 命名为变量 crashlytics >例如 crashlytics_version 这样:
ext {
crashlytics_version = '2.9.4@aar'
}
implementation("com.crashlytics.sdk.android:crashlytics:$crashlytics_version"){
transitive = true
}
生成是确定。
或以常规方式进行操作:
compile('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
transitive = true;
}