我在 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{}
块 iam 中的每个库版本都使用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
independencies{}
改变我们的车道,所以我们没有ext{}
版本
implementation("com.crashlytics.sdk.android:crashlytics:$rootProject.ext.crashlytics") {
transitive = true
}
现在在我们的根 gradleappname/build.gradle
buildscript {
ext.fabric_gradle = '2.9.4@aar'
repositories {
...
}
dependencies {
...
}
}
构建OK就可以继续工作了。但是什么?应该是完全一样的...
第三次尝试
我不知道为什么,但在我们的第一次尝试中,你只是不能在块名称crashlytics变量中使用它,除了crashlytics之外的所有其他内容,例如crashlytics_version,所以让我们先尝试进入工作状态。appname/app/build.gradle
ext{}
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;
}