Pierwsze kroki z Firebase Crashlytics

Z tego krótkiego wprowadzenia dowiesz się, jak skonfigurować Firebase Crashlytics w swojej aplikacji za pomocą pakietu SDK Firebase Crashlytics, aby otrzymywać kompleksowe raporty o awariach w konsoli Firebase.

Aby skonfigurować Crashlytics, musisz wykonać zadania zarówno w konsoli Firebase, jak i w IDE (np. dodanie pliku konfiguracji Firebase i pakietu SDK Crashlytics). Aby dokończyć konfigurację, musisz wymusić awarię testową, aby wysłać pierwszy raport o tej awarii do Firebase.

Zanim zaczniesz

  1. Dodaj Firebase do swojego projektu Apple, jeśli jeszcze go nie masz. Jeśli nie masz aplikacji Apple, możesz pobrać przykładową aplikację.

  2. Zalecane: aby automatycznie pobierać dzienniki menu nawigacyjnego, które pozwalają analizować działania użytkowników, które prowadzą do awarii, błędów niekrytycznych lub błędów ANR, musisz włączyć Google Analytics w swoim projekcie Firebase.

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

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

    Pamiętaj, że dzienniki menu nawigacyjnego są dostępne na wszystkich platformach Apple obsługiwanych przez Crashlytics z wyjątkiem watchOS.

Krok 1. Dodaj do aplikacji pakiet SDK Crashlytics

Do instalowania zależności Firebase i zarządzania nimi używaj menedżera pakietów Swift.

  1. Po otwarciu projektu aplikacji w Xcode przejdź do File > Add Packages (Plik > Dodaj pakiety).
  2. Gdy pojawi się prośba, dodaj repozytorium pakietu SDK platformy Apple dla platform Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wybierz bibliotekę Crashlytics.
  5. Aby korzystać z logów menu nawigacyjnego, dodaj do aplikacji pakiet SDK Firebase dla Google Analytics. Upewnij się, że w projekcie Firebase włączono Google Analytics.
  6. Dodaj flagę -ObjC do sekcji Inne flagi łączące w ustawieniach kompilacji celu.
  7. (Tylko macOS) W Info.plist dodaj klucz NSApplicationCrashOnExceptions i ustaw go na YES.
  8. Gdy skończysz, Xcode zacznie automatycznie rozpoznawać i pobierać zależności w tle.

Następnie skonfiguruj moduł Firebase:

  1. Zaimportuj moduł Firebase do struktury App lub UIApplicationDelegate:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  2. Skonfiguruj instancję udostępnioną FirebaseApp, 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, aby automatycznie przesyłać pliki dSYM

Aby generować czytelne raporty o awariach, Crashlytics potrzebuje plików symboli debugowania (dSYM) Twojego projektu. Poniższe kroki opisują, jak skonfigurować Xcode w celu automatycznego tworzenia plików dSYM, przetwarzania ich i przesyłania za każdym razem, gdy tworzysz aplikację.

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

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

  3. Kliknij kartę Ustawienia kompilacji, a następnie wykonaj opisane poniżej czynności, aby Xcode generowało 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ę Etapy kompilacji i wykonaj poniższe czynności, aby Xcode mógł przetworzyć pliki dSYM i je przesłać.

    1. Kliknij > Etap nowego skryptu uruchamiania.

      Upewnij się, że nowa faza uruchamiania skryptu jest ostatnią fazą kompilacji Twojego 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 następujący uruchomiony skrypt.

      Ten skrypt przetwarza pliki dSYM Twojego 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)

Więcej informacji o plikach dSYM i Crashlytics (w tym o ręcznym przesyłaniu takich plików) znajdziesz w artykule Pobieranie zaciemnionych raportów o awariach.

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

Aby dokończyć konfigurowanie Crashlytics i wyświetlić dane początkowe w panelu Crashlytics w konsoli Firebase, musisz wymusić awarię testową.

  1. Dodaj do aplikacji kod, którego możesz użyć, aby wymusić awarię testową.

    Za pomocą tego kodu możesz dodać do aplikacji przycisk, który po naciśnięciu powoduje awarię. Przycisk ma etykietę „Testowa awaria”.

    Interfejs SwiftUI

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

    Interfejs 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. Skompiluj i uruchom aplikację w Xcode z odłączonym debugerem Xcode.

    1. Kliknij Skompiluj, a następnie uruchom bieżący schemat, aby utworzyć aplikację na urządzeniu testowym lub symulatorze.

    2. Poczekaj, aż aplikacja będzie działać, a potem kliknij Zatrzymaj uruchamianie schematu lub działania, aby zamknąć początkową instancję aplikacji. Ta instancja początkowa obejmował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 „Testuj awarię” dodany za pomocą powyższego kodu.

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

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

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


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

Dalsze kroki