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 dokończyć konfigurację, musisz wymusić testowy błąd, aby wysłać pierwszy raport o błędzie do Firebase.

Zanim zaczniesz

  1. Dodaj Firebase do projektu Apple. Jeśli nie masz aplikacji Apple, możesz pobrać próbną 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.Google Analytics

    • 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 do 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 wygenerować czytelne dla człowieka raporty o wypadkach, 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, a potem w przewodniku po lewej stronie wybierz plik projektu.

  2. Z listy TARGETS (Cele) wybierz główny cel kompilacji.

  3. Kliknij kartę Ustawienia kompilacji, a potem wykonaj te czynności, aby Xcode wygenerował 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 przesłać je.

    1. Kliknij > Nowa faza uruchamiania 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)

Więcej informacji o plikach dSYM i Crashlytics (w tym o tym, jak ręcznie przesyłać pliki dSYM) znajdziesz w artykule Otrzymywanie raportów o awariach po usunięciu zaciemnienia kodu.

Krok 3. Wymuś testowe zablokowanie, aby zakończyć konfigurowanie

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 się uruchomi, a potem kliknij Zatrzymaj wykonywanie schematu lub, aby zamknąć pierwszą instancję aplikacji. Ta pierwsza instancja zawierała 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ć testowy błąd krytyczny, 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