Начните работу с Firebase Crashlytics

В этом кратком руководстве описывается, как настроить Firebase Crashlytics в вашем приложении с помощью Firebase Crashlytics SDK, чтобы вы могли получать подробные отчеты о сбоях в консоли Firebase.

Для настройки Crashlytics требуются задачи как в консоли Firebase, так и в вашей IDE (например, добавление файла конфигурации Firebase и Crashlytics SDK). Чтобы завершить настройку, вам нужно будет принудительно выполнить тестовый сбой, чтобы отправить первый отчет о сбое в Firebase.

Прежде чем вы начнете

  1. Если вы еще этого не сделали, добавьте Firebase в свой проект Apple. Если у вас нет приложения Apple, вы можете загрузить образец приложения .

  2. Рекомендуется : чтобы автоматически получать журналы навигации и понимать действия пользователей, приведшие к сбою, нефатальному событию или событию ANR, вам необходимо включить Google Analytics в своем проекте Firebase.

    • Если в вашем существующем проекте Firebase не включен Google Analytics, вы можете включить Google Analytics на вкладке «Интеграции» вашего аккаунта. > Настройки проекта в консоли Firebase.

    • Если вы создаете новый проект Firebase, включите Google Analytics во время рабочего процесса создания проекта.

    Обратите внимание, что навигационные журналы доступны для всех платформ Apple, поддерживаемых Crashlytics, кроме watchOS.

Шаг 1. Добавьте Crashlytics SDK в свое приложение.

Используйте Swift Package Manager для установки зависимостей Firebase и управления ими.

  1. В Xcode, открыв проект приложения, выберите «Файл» > «Добавить пакеты» .
  2. При появлении запроса добавьте репозиторий Firebase SDK для платформ Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Выберите библиотеку Crashlytics.
  5. Чтобы воспользоваться преимуществами навигационных журналов , добавьте в свое приложение Firebase SDK для Google Analytics. Убедитесь, что Google Analytics включен в вашем проекте Firebase.
  6. Добавьте флаг -ObjC в раздел «Другие флаги компоновщика» настроек сборки вашей цели.
  7. (только для macOS) В Info.plist добавьте ключ NSApplicationCrashOnExceptions и установите для него YES .
  8. По завершении Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.

Далее настройте модуль Firebase:

  1. Импортируйте модуль Firebase в структуру вашего App или UIApplicationDelegate :

    Быстрый

    import Firebase

    Цель-C

    @import Firebase;
  2. Настройте общий экземпляр FirebaseApp , обычно в методе application(_:didFinishLaunchingWithOptions:) делегата вашего приложения:

    Быстрый

    // Use the Firebase library to configure APIs.
    FirebaseApp.configure()
    

    Цель-C

    // Use the Firebase library to configure APIs.
    [FIRApp configure];
    

Шаг 2. Настройте Xcode для автоматической загрузки файлов dSYM.

Для создания удобочитаемых отчетов о сбоях Crashlytics необходимы файлы символов отладки вашего проекта (dSYM). Следующие шаги описывают, как настроить Xcode для автоматического создания ваших dSYM, их обработки и загрузки файлов при каждой сборке приложения.

  1. Откройте рабочую область Xcode вашего проекта, затем выберите файл проекта в левом навигаторе.

  2. В списке ЦЕЛИ выберите основную цель сборки.

  3. Перейдите на вкладку «Настройки сборки» , затем выполните следующие шаги, чтобы Xcode создавал dSYM для ваших сборок.

    1. Нажмите «Все» , затем найдите debug information format .

    2. Установите формат отладочной информации DWARF with dSYM File для всех типов сборок.

  4. Перейдите на вкладку «Фазы сборки» , затем выполните следующие шаги, чтобы Xcode мог обработать ваши dSYM и загрузить файлы.

    1. Нажмите > «Новая фаза запуска сценария» .

      Убедитесь, что этот новый этап «Выполнение сценария» является последним этапом сборки вашего проекта; в противном случае Crashlytics не сможет правильно обрабатывать dSYM.

    2. Разверните новый раздел «Выполнить сценарий» .

    3. В поле сценария (расположенное под меткой «Shell ») добавьте следующий сценарий запуска.

      Этот скрипт обрабатывает файлы dSYM вашего проекта и загружает их в Crashlytics.

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. В разделе «Входные файлы» добавьте пути к расположению следующих файлов:

      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Info.plist
      $(TARGET_BUILD_DIR)/$(UNLOCALIZED_RESOURCES_FOLDER_PATH)/GoogleService-Info.plist
      $(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)

Для получения более подробной информации о файлах dSYM и Crashlytics (в том числе о том, как вручную загружать файлы dSYM), посетите раздел Получение деобфусцированных отчетов о сбоях .

Шаг 3. Принудительно завершите тестирование, чтобы завершить настройку.

Чтобы завершить настройку Crashlytics и просмотреть исходные данные на панели управления Crashlytics консоли Firebase, необходимо принудительно завершить тест.

  1. Добавьте в свое приложение код, который можно использовать для принудительного завершения теста.

    Вы можете использовать следующий код, чтобы добавить в приложение кнопку, нажатие которой вызывает сбой. Кнопка называется «Тестовый сбой».

    SwiftUI

    Button("Crash") {
      fatalError("Crash was triggered")
    }
    

    УИКит

    Быстрый

    import UIKit
    
    class ViewController: UIViewController {
      override func viewDidLoad() {
          super.viewDidLoad()
    
          // Do any additional setup after loading the view, typically from a nib.
    
          let button = UIButton(type: .roundedRect)
          button.frame = CGRect(x: 20, y: 50, width: 100, height: 30)
          button.setTitle("Test Crash", for: [])
          button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside)
          view.addSubview(button)
      }
    
      @IBAction func crashButtonTapped(_ sender: AnyObject) {
          let numbers = [0]
          let _ = numbers[1]
      }
    }
    

    Цель-C

    #import "ViewController.h"
    
    @implementation ViewController
    ‐ (void)viewDidLoad {
        [super viewDidLoad];
    
        // Do any additional setup after loading the view, typically from a nib.
    
        UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = CGRectMake(20, 50, 100, 30);
        [button setTitle:@"Test Crash" forState:UIControlStateNormal];
        [button addTarget:self action:@selector(crashButtonTapped:)
            forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:button];
    }
    
    ‐ (IBAction)crashButtonTapped:(id)sender {
        @[][1];
    }
    
    @end
    
  2. Создайте и запустите свое приложение в Xcode с отключенным отладчиком Xcode.

    1. Нажмите Build, а затем запустите текущую схему , чтобы создать приложение на тестовом устройстве или симуляторе.

    2. Подождите, пока ваше приложение запустится, затем нажмите . Остановить выполнение схемы или действия , чтобы закрыть первоначальный экземпляр вашего приложения. Этот первоначальный экземпляр включал отладчик, мешающий работе Crashlytics.

  3. Принудительно завершить тест, чтобы отправить первый отчет о сбое вашего приложения:

    1. Откройте приложение с главного экрана тестового устройства или симулятора.

    2. В своем приложении нажмите кнопку «Тестировать сбой», которую вы добавили с помощью приведенного выше кода.

    3. После сбоя вашего приложения запустите его еще раз из Xcode, чтобы ваше приложение могло отправить отчет о сбое в Firebase.

  4. Перейдите на панель управления Crashlytics консоли Firebase, чтобы увидеть сбой вашего теста.

    Если вы обновили консоль и по-прежнему не видите сбой теста через пять минут, включите ведение журнала отладки , чтобы узнать, отправляет ли ваше приложение отчеты о сбоях.


Вот и все! Crashlytics теперь отслеживает ваше приложение на предмет сбоев. Посетите панель управления Crashlytics , чтобы просмотреть и изучить все ваши отчеты и статистику.

Следующие шаги