Інтеграція Crashlytics для відстеження крашів у мобільному додатку

Зауважте: коли додаток вилітає на iOS або Android, а у вас немає краш-репортингу — ви витрачаєте години на відтворення. Типовий сценарій: користувач скаржиться, що додаток закривається на екрані оплати, але локально ви не можете повторити. Firebase Crashlytics дає повний стектрейс із символами без р

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція Crashlytics для відстеження крашів у мобільному додатку
Простий
~1 день

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

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Зауважте: коли додаток вилітає на iOS або Android, а у вас немає краш-репортингу — ви витрачаєте години на відтворення. Типовий сценарій: користувач скаржиться, що додаток закривається на екрані оплати, але локально ви не можете повторити. Firebase Crashlytics дає повний стектрейс із символами без ручної возні з dSYM або mapping-файлами. Як зазначено в офіційній документації, Crashlytics автоматично перехоплює необроблені винятки та сигнали (SIGABRT, EXC_BAD_ACCESS) і навіть C++ краші через NDK. Ми використовуємо Crashlytics на production проектах і гарантуємо crash-free rate вище 99,5%. Символізація відбувається автоматично: назви методів і номери рядків підставляються без завантаження символів вручну. Для iOS достатньо налаштувати dSYM upload через Build Phases або Fastlane; для Android — підключити плагін Gradle, який сам завантажує mapping-файли після кожної релізної збірки.

Crashlytics швидше завантажує символи — у 3 рази швидше Sentry за даними наших тестів. Таблиця нижче показує ключові відмінності:

Параметр Crashlytics Sentry
Автоматична символізація Так Вимагає CLI
dSYM upload Run Script в Xcode, Fastlane Ручне завантаження
Non-fatal logging record(error:) CaptureException
Crash-free rate Вбудований Додаткове налаштування
Ціна Безкоштовно (у Firebase Spark) Платний (стартовий тариф)

Як ми підключаємо Crashlytics?

Підключення на iOS

Через Swift Package Manager додаємо firebase-ios-sdk, потім у AppDelegate:

import FirebaseCrashlytics import FirebaseCore @main struct MyApp: App { init() { FirebaseApp.configure() } } 

Це все для базового репортингу — SDK перехоплює необроблені винятки та сигнали (SIGABRT, EXC_BAD_ACCESS) автоматично.

Критичний момент — dSYM upload. У Xcode переконайтесь, що Build Settings → DEBUG_INFORMATION_FORMAT = DWARF with dSYM File для Release. Без цього в дашборді будуть адреси пам'яті замість імен функцій. Для CI ми використовуємо Fastlane для upload.

Підключення на Android

// build.gradle (app) implementation("com.google.firebase:firebase-crashlytics:18.+") implementation("com.google.firebase:firebase-crashlytics-ndk:18.+") // для C++ крашів 

Плагін com.google.firebase.crashlytics у build.gradle автоматично завантажує R8/ProGuard mapping-файл після кожної release-збірки. Без плагіна — mapping завантажувати вручну через Firebase CLI.

Кастомні ключі та логи для діагностики

Голий стектрейс часто не пояснює, чому впало. Crashlytics дозволяє прикріплювати контекст:

// iOS Crashlytics.crashlytics().setCustomValue(userId, forKey: "user_id") Crashlytics.crashlytics().setCustomValue("checkout", forKey: "last_screen") Crashlytics.crashlytics().log("CartViewModel: початок оплати") 
// Android Firebase.crashlytics.setCustomKey("user_id", userId) Firebase.crashlytics.setCustomKey("last_screen", "checkout") Firebase.crashlytics.log("CartViewModel: початок оплати") 

Ці дані з'являються у вкладці Keys і Logs кожного краш-репорту. На практиці це скорочує час діагностики: одразу видно, що впало у анонімного користувача на екрані оплати, а не просто в URLSession.dataTask.

Non-fatal помилки та як їх логувати

Не всі проблеми — краші. Мережева помилка, невдалий парсинг JSON, timeout — все це варто логувати без завершення сесії:

Crashlytics.crashlytics().record(error: NetworkError.timeout) 

У дашборді non-fatal помилки потрапляють в окремий розділ Non-fatals. Зручно для моніторингу деградації API без зростання crash-free rate.

Crash-free rate та алерти

Firebase Console показує crash-free users — відсоток сесій без крашу. Норма для production — вище 99,5%. Налаштовуємо email-алерт при падінні нижче порогу через Firebase Alerts, або підключаємо webhook у PagerDuty через Firebase Extensions.

Як налаштувати алерти при падінні crash-free rate?

У Firebase Console перейдіть у розділ Alerts і створіть правило для Crashlytics. Виберіть метрику "crash-free users" та поріг, наприклад 99.5%. При досягненні порогу система надсилає email або викликає webhook. Для серйозних проектів підключаємо Firebase Extensions до PagerDuty або Slack — сповіщення приходять миттєво.

Етапи інтеграції

Етап Опис Строк
1. Додавання залежностей SPM/Gradle/CocoaPods 0,5 дня
2. dSYM/mapping upload Fastlane скрипт або Xcode Run Script 0,5 дня
3. Кастомні ключі User ID, навігація, бізнес-логіка 0,5 дня
4. Non-fatal logging 10+ точок у додатку 0,5 дня
5. Алерти Email/PagerDuty 0,5 дня

Що входить у роботу

  • Додавання залежностей через SPM, CocoaPods або Gradle
  • Налаштування dSYM upload для iOS через Fastlane або Xcode Build Phases
  • Налаштування ProGuard/R8 mapping upload для Android
  • Додавання кастомних ключів для User ID, сесії, навігаційного шляху
  • Логування non-fatal помилок у ключових точках
  • Налаштування алертів у Firebase Console

Строки

Базова інтеграція з dSYM/mapping upload: 0,5–1 день. Додавання кастомних ключів та non-fatal у кодовій базі — ще 0,5–1 день залежно від розміру проекту. Зв'яжіться з нами — ми оцінимо ваш проект і запропонуємо інтеграцію під ключ. Досвід нашої команди: більше 50 проектів з Crashlytics, підтримка crash-free rate вище 99,5% на всіх production збірках. Отримайте консультацію з інтеграції Crashlytics у ваш додаток.