Інтеграція 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 день. Вартість розраховується індивідуально.