Загрузка файла сопоставления Firebase crashlytics не работает

#android #firebase #gradle #crashlytics

#Android #firebase #gradle #crashlytics

Вопрос:

Я добавил в свой проект библиотеку firebase crashlytics и плагин crashlytics gradle

 classpath("com.google.firebase:firebase-crashlytics-gradle:2.3.0")
...
plugins {
   ...
   id("com.google.firebase.crashlytics")
   ...
}
...
implementation("com.google.firebase:firebase-crashlytics:17.2.1")
implementation("com.google.firebase:firebase-analytics:17.5.0")
  

Я явно установил mappingFileUploadEnabled для своих типов сборки релиза с

 getByName("release").apply {
   firebaseCrashlytics.mappingFileUploadEnabled = true
}
  

Но файл сопоставления, к сожалению, не загружен. Я проверяю это в консоли firebase crashlytics — на мои тестовые сбои указывает stacktrace Unknown Source:55 .
Вот что я нашел в журналах gradle:

[ОТЛАДКА] [com.google.включена загрузка файла сопоставления firebase.crashlytics: false; идентификатор: 00000000000000000000000000000000

Похоже, мой mappingFileUploadEnabled флаг не имеет никакого эффекта.
Нужно ли мне сделать что-то еще, чтобы загрузка файла сопоставления работала?

Я также не вижу firebaseUpload*ReleaseProguardMapping задач в своем проекте. Не уверен, что он должен быть создан.

Обновить

Я попытался создать пустой проект Android с нуля и добавил firebase-crashlytics его туда. Кажется, это работает, и я вижу uploadCrashlyticsMappingFile задачи, созданные для всех типов сборки. Итак, на данный момент похоже firebase-crashlytics , что плагин gradle работает некорректно для моего проекта и не создает задачи, которые он должен создавать. У кого-нибудь есть идея, почему?

Комментарии:

1. Как вы проверили это на консоли Firebase?

2. Я не проверял, загружен ли файл сопоставления (вероятно, это невозможно сделать). Вместо этого я проверил, были ли деобфускированы отправленные мной сбои. Предполагая, что сбои деобфускированы, тогда файл сопоставления был загружен правильно

Ответ №1:

Сегодня я узнал, что если вы применяете firebase-crashlytics плагин gradle декларативно, используя plugins {} блок, задачи загрузки файла сопоставления не создаются. Чтобы заставить его работать, мне пришлось применить плагин в обязательном порядке, используя устаревшую apply(..) функцию. Это то, что у меня есть в проекте сейчас:

 apply(plugin = "com.google.firebase.crashlytics")

plugins {
    //other plugins
}
  

После внесения этого изменения загрузка файла сопоставления работает нормально.

Обновить

Я понял, что если я перемещу crashlytics плагин в нижнюю часть своего plugins раздела, у меня будет тот же эффект. Теперь это выглядит так:

 plugins {
    //all other plugins
    id("com.google.firebase.crashlytics")
}