Интеграция Firebase Crashlytics в мобильное приложение

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Интеграция Firebase Crashlytics в мобильное приложение
Простой
~1 день
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Интеграция Firebase Crashlytics в мобильное приложение

Краш на холодном старте у 0.3% пользователей. В логах устройства — EXC_BAD_ACCESS без стека. Без Crashlytics это означает часы поиска: воспроизвести не выходит, устройство не то, версия iOS другая. Crashlytics собирает symbolicated стектрейс, версию OS, устройство, предыдущие действия пользователя и доставляет это в консоль в течение минут после краша.

Подключение SDK

iOS через Swift Package Manager: добавляем FirebaseCrashlytics из репозитория firebase-ios-sdk. Инициализация происходит автоматически при FirebaseApp.configure() в AppDelegate или через @main + FirebaseOptions.

Обязательный шаг, который часто пропускают: загрузка dSYM. Без символьных файлов Crashlytics показывает адреса памяти вместо имён функций. Для автоматической загрузки добавляем run script в Build Phases:

"${PODS_ROOT}/FirebaseCrashlytics/run"
# или через SPM:
"${BUILD_DIR%Build/*}SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"

На Android SDK подключается через Gradle plugin: id 'com.google.firebase.crashlytics' в app/build.gradle. ProGuard/R8 mapping загружается автоматически при сборке release-варианта если настроен firebaseCrashlytics { mappingFileUploadEnabled = true }.

Кастомные ключи и логи

Автоматический краш-репорт — это базовый минимум. Реальная ценность — контекст вокруг краша:

// iOS
Crashlytics.crashlytics().setCustomValue(userID, forKey: "user_id")
Crashlytics.crashlytics().setCustomValue("checkout", forKey: "last_screen")
Crashlytics.crashlytics().log("CartViewModel: начало оформления заказа, items=\(cart.count)")

// Нефатальная ошибка — попадает в Crashlytics без краша приложения
Crashlytics.crashlytics().record(error: NetworkError.timeout)
// Android
Firebase.crashlytics.setCustomKey("user_id", userId)
Firebase.crashlytics.setCustomKey("last_screen", "checkout")
Firebase.crashlytics.log("CartViewModel: оформление заказа, items=${cart.size}")

Firebase.crashlytics.recordException(NetworkTimeoutException("checkout API"))

recordException / record(error:) — мощный инструмент для отслеживания ошибок, которые не роняют приложение, но влияют на UX: истёкший токен, пустой ответ API, сломанный deeplink.

ANR и non-fatal на Android

На Android Crashlytics автоматически перехватывает ANR (Application Not Responding) с версии SDK 18.3+. Если приложение зависает на >5 секунд — в консоли появится ANR-отчёт с состоянием thread dump. Это отдельная категория от крашей, часто связанная с блокировкой main thread синхронными операциями с диском или сетью.

Crashlytics + Alerts

В консоли Firebase настраиваем velocity alerts: если новая версия набирает crash-free rate ниже порога (обычно 99.5%) в течение часа после релиза — приходит email/Slack-уведомление. Позволяет поймать регрессию до того, как она накроет всю аудиторию.

Типичная ошибка при интеграции

dSYM не загружаются для bitcode-сборок (актуально для старых iOS-проектов). Apple перекомпилирует bitcode на своих серверах, и финальные символы отличаются от локальных. Решение: в Firebase Console → Project Settings → App → «Upload dSYMs» загружаем архив вручную, либо настраиваем fastlane с плагином firebase_app_distribution и upload_symbols_to_crashlytics.

Что входит в работу

  • Подключение SDK (SPM / CocoaPods на iOS, Gradle на Android)
  • Настройка автозагрузки dSYM / mapping файлов
  • Кастомные ключи для контекста: user_id, экран, состояние сессии
  • recordException для нефатальных ошибок в ключевых потоках
  • Velocity alert в консоли

Сроки

Полная интеграция с кастомными ключами и нефатальными ошибками: 1 день. Стоимость рассчитывается индивидуально.