Pierwsze kroki z Firebase Crashlytics


Ten krótki przewodnik zawiera instrukcje konfigurowania w aplikacji pakietu SDK Firebase Crashlytics, aby otrzymywać w konsoli Firebase kompleksowe raporty o awariach.Firebase Crashlytics

Konfigurowanie Crashlytics wymaga wykonania zadań zarówno w konsoli Firebase, jak i w Twoim IDE (np. dodawania pliku konfiguracyjnego Firebase i pakietu SDK Crashlytics). Aby zakończyć konfigurację, musisz wymusić awarię testową, aby wysłać do Firebase pierwszy raport o awarii.

Zanim zaczniesz

  1. Dodaj Firebase do swojego projektu Apple, chyba że masz to już za sobą. Jeśli nie masz aplikacji Apple, możesz pobrać przykładową aplikację.

  2. Zalecane: aby automatycznie otrzymywać logi ścieżki, które pomogą Ci zrozumieć działania użytkowników prowadzące do awarii, niekrytycznych błędów lub zdarzeń ANR, musisz włączyć Google Analytics w projekcie Firebase.

    • Jeśli w dotychczasowym projekcie Firebase nie masz włączonej usługi Google Analytics, możesz ją włączyć na karcie Integracje w sekcji  > Ustawienia projektu w konsoli Firebase.

    • Jeśli tworzysz nowy projekt Firebase, włącz Google Analytics w trakcie procesu tworzenia projektu.

    Pamiętaj, że logi ścieżki do celu są dostępne na wszystkich platformach Apple obsługiwanych przez Crashlytics, z wyjątkiem watchOS.

Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics

Do instalacji zależności Firebase i zarządzania nimi możesz używać menedżera pakietów Swift.

  1. Po otwarciu projektu aplikacji w Xcode wybierz Plik > Dodaj pakiety.
  2. Gdy pojawi się prośba, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wybierz bibliotekę Crashlytics.
  5. Aby korzystać z logów ścieżek, dodaj do aplikacji pakiet SDK Firebase dla Google Analytics. Pamiętaj, aby w projekcie Firebase włączyć Google Analytics.
  6. Dodaj flagę -ObjC w sekcji Inne flagi linkera w ustawieniach kompilacji docelowej.
  7. (tylko w macOS)Info.plist dodaj klucz NSApplicationCrashOnExceptions i ustaw go na YES.
  8. Gdy to zrobisz, Xcode automatycznie zacznie wyszukiwać i pobierać zależności w tle.

Następnie skonfiguruj moduł Firebase:

  1. Zaimportuj moduł Firebase w strukturze App lub w funkcji UIApplicationDelegate:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  2. Skonfiguruj udostępnione wystąpienie FirebaseApp, zwykle w metodzie application(_:didFinishLaunchingWithOptions:) delegowanego obiektu aplikacji:

    Swift

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

    Objective-C

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

Krok 2. Skonfiguruj Xcode, aby automatycznie przesyłać pliki dSYM

Aby generować czytelne dla człowieka raporty o awariach, Crashlytics potrzebuje plików symboli debugowania (dSYM) projektu. W tych instrukcjach dowiesz się, jak skonfigurować Xcode, aby automatycznie generować pliki dSYM, przetwarzać je i przesyłać za każdym razem, gdy kompilujesz aplikację.

  1. Otwórz obszar roboczy Xcode projektu i wybierz jego plik w lewym nawigatorze.

  2. Z listy CELE wybierz główny cel kompilacji.

  3. Kliknij kartę Ustawienia kompilacji, a następnie wykonaj poniższe czynności, aby Xcode tworzył pliki dSYM dla kompilacji.

    1. Kliknij Wszystkie, a następnie wyszukaj debug information format.

    2. Ustaw opcję Format informacji debugowania na DWARF with dSYM File we wszystkich typach wersji.

  4. Kliknij kartę Etapy kompilacji, a potem wykonaj te czynności, aby Xcode mógł przetworzyć pliki dSYM i je przesłać.

    1. Kliknij > Nowa faza wykonywania skryptu.

      Upewnij się, że nowy etap Uruchom skrypt jest ostatnim etapem kompilacji projektu. W przeciwnym razie Crashlytics nie będzie mógł prawidłowo przetwarzać plików dSYM.

    2. Rozwiń nową sekcję Uruchom skrypt.

    3. W polu skryptu (znajdującym się pod etykietą Powłoka) dodaj ten skrypt do wykonania.

      Ten skrypt przetwarza pliki dSYM projektu i przesyła je do folderu Crashlytics.

      "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
    4. W sekcji Pliki wejściowe dodaj ścieżki do lokalizacji tych plików:

      ${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)

Szczegółowe informacje o plikach dSYM i Crashlytics (w tym o tym, jak ręcznie przesyłać takie pliki) znajdziesz w artykule Uzyskiwanie raportów o awariach z usuniętym zaciemnieniem.

Krok 3. Wymuś testowy błąd krytyczny, aby zakończyć konfigurację

Aby dokończyć konfigurowanie Crashlytics i zobaczyć pierwsze dane na panelu Crashlytics w konsoli Firebase, musisz wymusić testowy błąd krytyczny.

  1. Dodaj do aplikacji kod, który pozwoli Ci wymusić testowy błąd.

    Za pomocą poniższego kodu możesz dodać do aplikacji przycisk, który po naciśnięciu powoduje awarię. Przycisk ma etykietę „Testowy błąd”.

    SwiftUI

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

    UIKit

    Swift

    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
  2. Utwórz i uruchom aplikację w Xcode, gdy debuger Xcode jest odłączony.

    1. Aby utworzyć aplikację na urządzeniu testowym lub symulatorze, kliknij Utwórz, a następnie uruchom bieżący schemat.

    2. Poczekaj, aż aplikacja zostanie uruchomiona, a następnie kliknij Zatrzymaj uruchamianie schematu lub działania, aby zamknąć początkową instancję aplikacji. Początkowa instancja zawiera debuger, który zakłóca działanie Crashlytics.

  3. Wymuś awarię testową, aby wysłać pierwszy raport o awarii aplikacji:

    1. Otwórz aplikację na ekranie głównym urządzenia testowego lub symulatora.

    2. W aplikacji kliknij przycisk „Test Crash”, który został dodany za pomocą kodu powyżej.

    3. Gdy aplikacja ulegnie awarii, uruchom ją ponownie w Xcode, aby mogła wysłać raport o awarii do Firebase.

  4. Aby zobaczyć awarię testową, otwórz panel Crashlytics w konsoli Firebase.

    Jeśli po 5 minutach od odświeżenia konsoli nadal nie widzisz testowego błędu, włącz debugowanie, aby sprawdzić, czy aplikacja wysyła raporty o błędach.


To wszystko. Crashlytics monitoruje teraz Twoją aplikację pod kątem awarii. Otwórz panel Crashlytics, aby wyświetlić wszystkie raporty i statystyki oraz je analizować.

Dalsze kroki