Я обнаружил небольшой сбой в настройке crashlytics/fabric в Gradle, который занял 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 {
...
}
}
Сборка ОК, вы можете продолжать работу. Но что? Он должен быть полностью одинаковым...
Третья попытка
Я не знаю почему, но в нашей первой попытке вы просто 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
}
Сборка ОК. Магия.
или просто делайте это как обычно и не пытайтесь делать умные вещи... В качестве первого блока кода в этом длинном расследовании, который также отлично работает:
compile('com.crashlytics.sdk.android:crashlytics:2.9.4@aar') {
transitive = true;
}