В этом кратком руководстве описывается, как настроить Firebase Crashlytics в вашем приложении с помощью Firebase Crashlytics SDK, чтобы вы могли получать подробные отчеты о сбоях в консоли Firebase .
Для настройки Crashlytics необходимо выполнить ряд действий как в консоли Firebase , так и в вашей IDE (например, добавить файл конфигурации Firebase и Crashlytics SDK). Для завершения настройки необходимо принудительно вызвать тестовый сбой, чтобы отправить первый отчёт о сбое в Firebase.
Прежде чем начать
Добавьте Firebase в свой проект Apple, если вы ещё этого не сделали. Если у вас нет приложения Apple, вы можете скачать пример приложения .
Рекомендуется : для автоматического получения журналов хлебных крошек для понимания действий пользователя, приводящих к сбою, нефатальному событию или событию ANR, вам необходимо включить Google Analytics в вашем проекте Firebase.
Если в вашем существующем проекте Firebase не включен Google Analytics , вы можете включить Google Analytics на вкладке «Интеграции» вашего проекта.
> Настройки проекта в консоли Firebase . Если вы создаете новый проект Firebase, включите Google Analytics во время процесса создания проекта.
Обратите внимание, что журналы навигации доступны для всех платформ Apple, поддерживаемых Crashlytics за исключением watchOS.
Шаг 1 : Добавьте Crashlytics SDK в свое приложение
Используйте Swift Package Manager для установки и управления зависимостями Firebase.
- В Xcode откройте проект приложения и перейдите в Файл > Добавить пакеты .
- При появлении запроса добавьте репозиторий Firebase Apple Platforms SDK:
- Выберите библиотеку Crashlytics .
- Чтобы воспользоваться журналами навигации , добавьте в приложение Firebase SDK для Google Analytics . Убедитесь, что Google Analytics включен в вашем проекте Firebase.
- Добавьте флаг
-ObjCв раздел «Другие флаги компоновщика» настроек сборки вашей целевой системы. - (только для macOS) В файле
Info.plistдобавьте ключNSApplicationCrashOnExceptionsи задайте для него значениеYES. - После завершения Xcode автоматически начнет разрешать и загружать ваши зависимости в фоновом режиме.
https://github.com/firebase/firebase-ios-sdk.git
Далее настраиваем модуль Firebase:
Импортируйте модуль Firebase в структуру
AppилиUIApplicationDelegate:Быстрый
import Firebase
Objective-C
@import Firebase;
Настройте общий экземпляр
FirebaseApp, обычно в методе делегата вашего приложения applicationapplication(_:didFinishLaunchingWithOptions:):Быстрый
// Use the Firebase library to configure APIs. FirebaseApp.configure()
Objective-C
// Use the Firebase library to configure APIs. [FIRApp configure];
Шаг 2 : Настройте Xcode для автоматической загрузки файлов dSYM
Для создания удобочитаемых отчётов о сбоях Crashlytics требуются файлы отладочных символов (dSYM) вашего проекта. Ниже описано, как настроить Xcode для автоматического создания dSYM-файлов, их обработки и загрузки при каждой сборке приложения.
Откройте рабочее пространство Xcode вашего проекта, затем выберите файл проекта в левом навигаторе.
В списке ЦЕЛИ выберите основную цель сборки.
Откройте вкладку «Параметры сборки» , затем выполните следующие шаги, чтобы Xcode создавал файлы dSYM для ваших сборок.
Нажмите Все , затем выполните поиск по
debug information format.Установите формат отладочной информации на
DWARF with dSYM Fileдля всех типов сборок.
Откройте вкладку «Фазы сборки» , затем выполните следующие шаги, чтобы Xcode мог обработать ваши dSYM-файлы и загрузить файлы.
Нажмите > «Новая фаза сценария выполнения» .
Убедитесь, что эта новая фаза запуска скрипта является последней фазой сборки вашего проекта; в противном случае Crashlytics не сможет правильно обрабатывать dSYM-файлы.
Разверните новый раздел «Выполнить сценарий» .
В поле скрипта (расположенном под меткой Shell ) добавьте следующий скрипт запуска.
Этот скрипт обрабатывает файлы dSYM вашего проекта и загружает их в Crashlytics .
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"В разделе «Входные файлы» добавьте пути к расположению следующих файлов:
${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)
ENABLE_USER_SCRIPT_SANDBOXING=YESиENABLE_DEBUG_DYLIB=YES, то включите следующее:${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib
Более подробную информацию о файлах dSYM и Crashlytics (включая информацию о том, как вручную загружать файлы dSYM), см. на странице Получение деобфусцированных отчетов о сбоях .
Step 3 : Force a test crash to finish setup
To finish setting up Crashlytics and see initial data in the Crashlytics dashboard of the Firebase console, you need to force a test crash.
Add code to your app that you can use to force a test crash.
You can use the following code to add a button to your app that, when pressed, causes a crash. The button is labeled "Test Crash".
SwiftUI
Button("Crash") { fatalError("Crash was triggered") }
UIKit
Быстрый
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] } }
Objective-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
Build and run your app in Xcode with the Xcode debugger disconnected.
Click Build and then run the current scheme to build your app on a test device or simulator.
Wait until your app is running, then click Stop running the scheme or action to close the initial instance of your app. This initial instance included the debugger that interferes with Crashlytics .
Force the test crash in order to send your app's first crash report:
Open your app from the home screen of your test device or simulator.
In your app, press the "Test Crash" button that you added using the code above.
After your app crashes, run it again from Xcode so that your app can send the crash report to Firebase.
Go to the Crashlytics dashboard of the Firebase console to see your test crash.
If you've refreshed the console and you're still not seeing the test crash after five minutes, enable debug logging to see if your app is sending crash reports.
And that's it! Crashlytics is now monitoring your app for crashes. Visit the Crashlytics dashboard to view and investigate all your reports and statistics.
Следующие шаги
- Customize your crash report setup by adding opt-in reporting, logs, keys, and tracking of non-fatal errors.