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
Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu Apple. Jeśli nie masz aplikacji Apple, możesz pobrać przykładową aplikację.
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
w konsoli > Ustawienia projektuFirebase.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.
- Po otwarciu projektu aplikacji wybierz w Xcode opcję File > Add Packages (Plik > Dodaj pakiety).
- Gdy pojawi się prośba, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
- Wybierz bibliotekę Crashlytics.
- 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.
- Dodaj flagę
-ObjC
do sekcji Other Linker Flags (Inne flagi linkera) w ustawieniach kompilacji projektu. - (tylko macOS) W
Info.plist
dodaj kluczNSApplicationCrashOnExceptions
i ustaw go naYES
. - Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać zależności w tle.
https://github.com/firebase/firebase-ios-sdk.git
Następnie skonfiguruj moduł Firebase:
Zaimportuj moduł Firebase w strukturze
App
lubUIApplicationDelegate
:Swift
import Firebase
Objective-C
@import Firebase;
Skonfiguruj
FirebaseApp
udostępnione wystąpienie, zwykle w metodzieapplication(_: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ę.
Otwórz obszar roboczy Xcode projektu, a następnie wybierz plik projektu w nawigatorze po lewej stronie.
Z listy CELE wybierz główny cel kompilacji.
Kliknij kartę Ustawienia kompilacji, a następnie wykonaj te czynności, aby Xcode generował pliki dSYM dla Twoich kompilacji.
Kliknij Wszystkie, a następnie wyszukaj
debug information format
.Ustaw Format informacji o debugowaniu na
DWARF with dSYM File
dla wszystkich typów kompilacji.
Kliknij kartę Build Phases (Fazy kompilacji), a następnie wykonaj te czynności, aby Xcode mógł przetworzyć pliki dSYM i je przesłać.
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.
Rozwiń nową sekcję Uruchom skrypt.
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"
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
Jeśli w ustawieniach kompilacji projektu masz$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
ENABLE_USER_SCRIPT_SANDBOXING=YES
iENABLE_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.
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
Utwórz i uruchom aplikację w Xcode z odłączonym debugerem Xcode.
Kliknij
Kompiluj, a potem uruchom bieżący schemat, aby skompilować aplikację na urządzeniu testowym lub symulatorze.Poczekaj, aż aplikacja zacznie działać, a potem kliknij Crashlytics.
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
Wymuś awarię testową, aby wysłać pierwszy raport o awarii aplikacji:
Otwórz aplikację na ekranie głównym urządzenia testowego lub symulatora.
W aplikacji kliknij przycisk „Test Crash” (Testuj awarię), który został dodany za pomocą powyższego kodu.
Po awarii aplikacji uruchom ją ponownie w Xcode, aby mogła wysłać raport o awarii do Firebase.
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
- Dostosuj konfigurację raportu o awariach, dodając raportowanie z możliwością rezygnacji, logi, klucze i śledzenie błędów niekrytycznych.