Pierwsze kroki z Firebase Crashlytics


Z tego przewodnika dowiesz się, jak skonfigurować Firebase Crashlytics w aplikacji za pomocą pakietu SDK Firebase Crashlytics, aby otrzymywać w Firebase konsoli szczegółowe raporty o awariach.

Konfiguracja Crashlytics wymaga wykonania zadań zarówno w Firebase konsoli, jak i w IDE (np. dodania pliku konfiguracyjnego Firebase i Crashlytics pakietu SDK). Aby dokończyć konfigurację, musisz wymusić testowe awarie, aby wysłać do Firebase pierwszy raport o awarii.

Zanim zaczniesz

  1. Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu Apple. Jeśli nie masz aplikacji Apple, możesz pobrać przykładową aplikację.

  2. Zalecane: aby automatycznie otrzymywać dzienniki ścieżki i poznawać działania użytkowników, które doprowadziły do awarii, błędu niekrytycznego lub zdarzenia 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 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 do zarządzania nimi możesz używać menedżera pakietów Swift.

  1. Po otwarciu projektu aplikacji wybierz w Xcode opcję File > Add Packages (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żki, dodaj też do aplikacji pakiet SDK Firebase dla Google Analytics. Upewnij się, że w projekcie Firebase Google Analytics jest włączona.
  6. Dodaj flagę -ObjC do sekcji Other Linker Flags (Inne flagi linkera) w ustawieniach kompilacji projektu.
  7. (tylko macOS)Info.plist dodaj klucz NSApplicationCrashOnExceptions i ustaw go na YES.
  8. Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać zależności w tle.

Następnie skonfiguruj moduł Firebase:

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

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  2. Skonfiguruj FirebaseApp udostępnione wystąpienie, zwykle w metodzie application(_:didFinishLaunchingWithOptions:) delegata 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 tak, aby automatycznie przesyłał pliki dSYM

Aby generować czytelne raporty o awariach, Crashlytics potrzebuje plików symboli debugowania (dSYM) projektu. Poniżej znajdziesz instrukcje konfigurowania Xcode, aby automatycznie generować pliki dSYM, przetwarzać je i przesyłać za każdym razem, gdy tworzysz aplikację.

  1. Otwórz obszar roboczy Xcode projektu, a następnie wybierz plik projektu w nawigatorze po lewej stronie.

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

  3. Kliknij kartę Ustawienia kompilacji, a następnie wykonaj te czynności, aby Xcode generował pliki dSYM dla Twoich kompilacji.

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

    2. Ustaw Format informacji o debugowaniu na DWARF with dSYM File dla wszystkich typów kompilacji.

  4. Kliknij kartę Build Phases (Fazy kompilacji), a następnie wykonaj te czynności, aby Xcode mógł przetworzyć pliki dSYM i je przesłać.

    1. Kliknij  > New Run Script Phase (Nowa faza skryptu).

      Upewnij się, że nowa faza Uruchom skrypt jest ostatnią fazą kompilacji projektu. W przeciwnym razie Crashlytics nie będzie w stanie prawidłowo przetworzyć plików dSYM.

    2. Rozwiń nową sekcję Uruchom skrypt.

    3. W polu skryptu (pod etykietą Shell) dodaj ten skrypt uruchamiania.

      Ten skrypt przetwarza pliki dSYM projektu i przesyła je do 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)
      Jeśli w ustawieniach kompilacji projektu masz ENABLE_USER_SCRIPT_SANDBOXING=YESENABLE_DEBUG_DYLIB=YES, uwzględnij te elementy:
      ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib

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

Krok 3. Wymuś awarię testową, aby dokończyć konfigurację

Aby dokończyć konfigurowanie Crashlytics i wyświetlić pierwsze dane na panelu Crashlytics w konsoli Firebase, musisz wymusić testowe awarie.

  1. Dodaj do aplikacji kod, którego możesz użyć, aby wymusić testowe awarie.

    Aby dodać do aplikacji przycisk, który po naciśnięciu spowoduje awarię, możesz użyć tego kodu. Przycisk ma etykietę „Test Crash” (Test awarii).

    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 z odłączonym debugerem Xcode.

    1. Kliknij Kompiluj, a potem uruchom bieżący schemat, aby skompilować aplikację na urządzeniu testowym lub symulatorze.

    2. Poczekaj, aż aplikacja zacznie działać, a potem kliknij Zatrzymaj uruchamianie schematu lub działania, aby zamknąć początkową instancję aplikacji. Ta początkowa 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” (Testuj awarię), który został dodany za pomocą powyższego kodu.

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

  4. Otwórz Crashlyticspanel konsoli Firebase, aby zobaczyć awarię testu.

    Jeśli po odświeżeniu konsoli nadal nie widzisz testowego awarii po 5 minutach, włącz rejestrowanie debugowania, aby sprawdzić, czy aplikacja wysyła raporty o awariach.


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

Dalsze kroki