| 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
Jeśli jeszcze tego nie zrobisz, dodaj Firebase do projektu Apple. Jeśli nie masz aplikacji Apple, możesz pobrać przykładową aplikację.
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 AnalyticsJeś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.
- 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 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.
- Dodaj flagę
-ObjCdo sekcji Other Linker Flags (Inne flagi linkera) w ustawieniach kompilacji celu. - (tylko macOS) W pliku
Info.plistdodaj kluczNSApplicationCrashOnExceptionsi ustaw jego wartość naYES. - Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać Twoje zależności w tle.
https://github.com/firebase/firebase-ios-sdk.git
Następnie skonfiguruj moduł Firebase:
Zaimportuj moduł Firebase w strukturze
ApplubUIApplicationDelegate:Swift
import Firebase
Objective-C
@import Firebase;
Skonfiguruj współdzieloną instancję
FirebaseApp, 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ższe kroki opisują, jak skonfigurować 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 lewym panelu nawigacyjnym.
Z listy TARGETS (CELE) wybierz główny cel kompilacji.
Kliknij kartę Build Settings (Ustawienia kompilacji), a następnie wykonaj te czynności, aby Xcode generował pliki dSYM dla Twoich kompilacji.
Kliknij All (Wszystkie), a następnie wyszukaj
debug information format.Ustaw Debug Information Format (Format informacji debugowania) na
DWARF with dSYM File(DWARF z plikiem dSYM) dla wszystkich typów kompilacji.
Kliknij kartę Build Phases (Fazy kompilacji), a następnie wykonaj te czynności, aby Xcode mógł przetwarzać pliki dSYM i je przesyłać.
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.
Rozwiń nową sekcję Run Script (Skrypt uruchamiający).
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"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
Jeśli w ustawieniach kompilacji projektu masz$(TARGET_BUILD_DIR)/$(EXECUTABLE_PATH)
ENABLE_USER_SCRIPT_SANDBOXING=YESiENABLE_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ą.
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
Skompiluj i uruchom aplikację w Xcode z odłączonym debugerem Xcode.
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).
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.
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 naciśnij przycisk „Test Crash” (Awaria testowa), który został dodany za pomocą powyższego kodu.
Gdy aplikacja ulegnie awarii, uruchom ją ponownie w Xcode, aby mogła wysłać raport o awarii do Firebase.
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
Dostosuj konfigurację raportów o awariach dodając raportowanie za zgodą użytkownika, dzienniki, klucze i śledzenie błędów niekrytycznych.
Eksportuj dane do BigQuery lub Cloud Logging aby korzystać z zaawansowanych analiz i funkcji, takich jak wysyłanie zapytań o dane, tworzenie niestandardowych paneli i konfigurowanie niestandardowych alertów.