Wprowadzenie do Crashlytics na platformy Apple

Wybierz platformę: iOS+ Android Android NDK Flutter Unity


Z tego przewodnika dowiesz się, jak zacząć korzystać z Firebase Crashlytics w aplikacji na platformy Apple (np. w aplikacji na iOS).

Po skonfigurowaniu pakietu SDK Firebase Crashlytics w aplikacji możesz otrzymywać w konsoli Firebase szczegółowe raporty o awariach. Dzięki Crashlytics na platformy Apple otrzymujesz raporty o awariach i błędach niekrytycznych.

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

Zanim zaczniesz

  1. Jeśli jeszcze tego nie zrobisz, 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 nawigacyjnej które pomogą Ci zrozumieć działania użytkowników prowadzące do awarii lub zdarzenia niekrytycznego musisz włączyć Google Analytics w projekcie w Firebase.

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

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

    Pamiętaj, że dzienniki elementu 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 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 dzienników ścieżki, dodaj też do aplikacji pakiet SDK Firebase dla Google Analytics. Upewnij się, że usługa Google Analytics jest włączona w projekcie w Firebase.
  6. Dodaj flagę -ObjC do sekcji Other Linker Flags (Inne flagi linkera) w ustawieniach kompilacji celu.
  7. (tylko macOS) W pliku Info.plist dodaj klucz NSApplicationCrashOnExceptions i ustaw jego wartość na YES.
  8. Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać Twoje 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 współdzieloną instancję 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 tak, aby automatycznie przesyłał pliki dSYM

Aby generować czytelne raporty o awariach, Crashlytics potrzebuje plików symboli debugowania (dSYM) projektu. Poniższe kroki opisują, jak skonfigurować 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 lewym panelu nawigacyjnym.

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

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

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

    2. Ustaw Debug Information Format (Format informacji debugowania) na DWARF with dSYM File (DWARF z plikiem dSYM) dla wszystkich typów kompilacji.

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

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

      Upewnij się, że ta nowa faza Run Script jest ostatnią fazą kompilacji projektu. W przeciwnym razie Crashlytics nie będzie mógł prawidłowo przetwarzać plików dSYM.

    2. Rozwiń nową sekcję Run Script (Skrypt uruchamiający).

    3. W polu skryptu (znajdującym się pod etykietą Shell) dodaj ten skrypt uruchamiający.

      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 Input Files (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=YES i ENABLE_DEBUG_DYLIB=YES, dodaj te ścieżki:
      ${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 ręcznym przesyłaniu plików dSYM) znajdziesz w artykule Uzyskiwanie raportów o awariach bez zaciemniania kodu.

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

Aby zakończyć konfigurowanie Crashlytics i zobaczyć wstępne dane w Crashlytics panelu Firebase konsoli, musisz wymusić awarię testową.

  1. Dodaj do aplikacji kod, którego możesz użyć do wymuszenia awarii testowej.

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

    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.crashBut_tonTapped(:)), for: .touchUpInside)
          view.addSubview(button)
      }
    
      @IBAction func crashBut_tonTapped( sender: AnyObject) {
          let numbers = [0]
          let _ = numbers[1]
      }
    }

    Objective-C

    #import "ViewController.h"
    
    @implementation ViewC‐ontroller
     (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 add‐Subview:button];
    }
    
     (IBAction)crashButtonTapped:(id)sender {
        @[][1];
    }
    
    @end
  2. Skompiluj i uruchom aplikację w Xcode z odłączonym debugerem Xcode.

    1. Aby skompilować aplikację na urządzeniu testowym lub w symulatorze, kliknij Build and then run the current scheme (Skompiluj, a następnie uruchom bieżący schemat).

    2. Poczekaj, aż aplikacja się uruchomi, a następnie kliknij Stop running the scheme or action, 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 naciśnij przycisk „Test Crash” (Awaria testowa), który został dodany za pomocą powyższego kodu.

    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 odświeżeniu konsoli nadal nie widzisz awarii testowej po 5 minutach, włącz rejestrowanie debugowania aby sprawdzić, czy aplikacja wysyła raporty o awariach.


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

Dalsze kroki