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
Dodaj Firebase do projektu Apple. Jeśli nie masz aplikacji Apple, możesz pobrać próbną aplikację.
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
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 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.
- Po otwarciu projektu aplikacji w Xcode wybierz 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żek, dodaj do aplikacji pakiet SDK Firebase dla Google Analytics. Pamiętaj, aby w projekcie Firebase włączyć Google Analytics.
- Dodaj flagę
-ObjC
do sekcji Inne flagi linkera w ustawieniach kompilacji docelowej. - (dotyczy tylko systemu macOS) W pliku
Info.plist
dodaj kluczNSApplicationCrashOnExceptions
i ustaw go naYES
. - Gdy to zrobisz, Xcode automatycznie zacznie 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
lub w funkcjiUIApplicationDelegate
:import Firebase
@import Firebase;
Skonfiguruj udostępnione wystąpienie
FirebaseApp
, zwykle w metodzieapplication(_:didFinishLaunchingWithOptions:)
delegowanego obiektu aplikacji:// Use the Firebase library to configure APIs. FirebaseApp.configure()
// 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ę.
Otwórz obszar roboczy Xcode projektu, a potem w przewodniku po lewej stronie wybierz plik projektu.
Z listy TARGETS wybierz główny cel kompilacji.
Kliknij kartę Ustawienia kompilacji, a potem wykonaj te czynności, aby Xcode wygenerował pliki dSYM dla kompilacji.
Kliknij Wszystkie, a następnie wyszukaj
debug information format
.Ustaw opcję Format informacji debugowania na
DWARF with dSYM File
we wszystkich typach wersji.
Kliknij kartę Etapy kompilacji, a potem wykonaj te czynności, aby Xcode mógł przetworzyć pliki dSYM i przesłać je.
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.
Rozwiń nową sekcję Uruchom skrypt.
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"
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
, dodaj te informacje:${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${PRODUCT_NAME}.debug.dylib
Dlaczego potrzebne są lokalizacje tych plików
Xcode szuka tych plików wejściowych w określonych lokalizacjach, aby sprawdzić, czy pliki kompilacji są dostępne dla skryptu do wykonania. Jeśli włączona jest bezpieczna piaskownica skryptu użytkownika, Xcode zezwala tylko skryptowi do wykonania na dostęp do plików określonych w plikach wejściowych.
- Podanie lokalizacji plików dSYM projektu umożliwia Crashlytics przetworzenie tych plików.
- Podanie lokalizacji wygenerowanego pliku
GoogleService-Info.plist
aplikacji umożliwia usłudze Crashlytics powiązanie plików dSYM z Twoją aplikacją Firebase. - Podanie lokalizacji pliku wykonywalnego aplikacji umożliwia skryptowi zapobieganie wielokrotnemu przesyłaniu tego samego pliku dSYM. Pamiętaj, że nie przesyłasz plików binarnych aplikacji.
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ś testowy błąd krytyczny, 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.
Dodaj do aplikacji kod, który pozwoli wymusić awarię testową.
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”.
Button("Crash") { fatalError("Crash was triggered") }
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] } }
#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, gdy debuger Xcode jest odłączony.
Aby utworzyć aplikację na urządzeniu testowym lub symulatorze, kliknij
Utwórz, a następnie uruchom bieżący schemat.Poczekaj, aż aplikacja się uruchomi, a potem kliknij Crashlytics.
Zatrzymaj wykonywanie schematu lub, aby zamknąć pierwszą instancję aplikacji. Ta pierwsza 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”, który został dodany za pomocą kodu powyżej.
Gdy aplikacja ulegnie awarii, uruchom ją ponownie w Xcode, aby mogła wysłać raport o awarii do Firebase.
Aby zobaczyć testowy błąd krytyczny, otwórz panel Crashlytics 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świetlać i analizować wszystkie raporty i statystyki.
Dalsze kroki
- Dostosuj konfigurację raportowania awarii, dodając opcjonalne raportowanie, logi, klucze i śledzenie błędów niekrytycznych.