У меня есть исправление, сохраняющее зависимости Crashlytics от модуля приложения, но оно очень хакерское.
Из того, что я могу сказать, плагин io.fabric существует в основном для генерации идентификатора сборки дляcrashlytics, что важно для платформы Fabric, но не используется для Firebase.Это, я полагаю, рудиментарная функциональность, которая в конечном итоге будет удалена, когда Crashlytics завершит миграцию на Firebase, но в то же время это совершенно необходимо просто потому, что Crashlytics проверяет его и вылетает из приложения, если его там нет.
Я просто создал бесполезный фиктивный идентификатор сборки и удалил все упоминания о плагине ui.fabric из моих модулей, и это работает!Мой код компилируется и сообщает о сбоях в консоль Firebase, как и раньше, и я могу без проблем обновиться до плагина Android Gradle v3.3.0 +.
Я предпринял следующие конкретные шаги:
Добавьте это в файл main / res / values.xml в модуле, который использует аварийные сбои:
<string name="com.crashlytics.android.build_id" translatable="false">RANDOM_UUID</string>
И удалите все случаи использования подключаемого модуля io.fabric, кака также зависимость classpath от подключаемого модуля Gradle (поскольку вы его больше не используете).
Обратите внимание, что, как я уже сказал, это очень хакерский.Я бы посоветовал тщательно протестировать это, если вы воспользуетесь этим подходом для своего проекта.Может существовать некоторая функциональность, которая все еще использует идентификатор сборки, и это может привести к ее поломке.
РЕДАКТИРОВАТЬ: после дальнейшего изучения я считаю, что это предотвратит загрузку файла сопоставления из-за сбоев, что означает, что у вас будетвручную деобфусцировать следы стека.По крайней мере, это еще вариант, но, похоже, он имеет недостатки.Также стоит отметить, что вы также можете просто использовать:
<string name="com.crashlytics.RequireBuildId">false</string>
вместо предоставления фиктивного ID сборки.