【发布时间】:2018-08-15 14:27:46
【问题描述】:
我在 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
}
现在在我们的根 gradle appname/build.gradle
buildscript {
ext.fabric_gradle = '2.9.4@aar'
repositories {
...
}
dependencies {
...
}
}
构建OK您可以继续工作。但是什么?应该是完全一样的……
第三次尝试
我不知道为什么,但是在我们的第一次尝试中,你只是 CANT 在 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
}
构建OK。魔法。
或者只是以正常的方式去做,不要试图做聪明的事情......作为这个长期调查中的第一块代码,它也完全可以正常工作:
compile('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
transitive = true;
}
【问题讨论】:
-
来自 Fabric 的 Mike。感谢您分享这个,我以前没有看到这是一个问题,但我也感谢您分享您的答案。您可能希望将其发布为下面的答案。
-
我究竟应该发布什么作为答案?
-
第三次尝试?
标签: android crashlytics crashlytics-android crashlytics-beta