Neste guia de início rápido, descrevemos como configurar o Firebase Crashlytics no seu app com o SDK do Firebase Crashlytics para que você receba relatórios de erros abrangentes no Console do Firebase.
A configuração do Crashlytics exige tarefas no Console do Firebase e no ambiente de desenvolvimento integrado, como adicionar um arquivo de configuração do Firebase e o SDK do Crashlytics. Para concluir a configuração, você precisará forçar uma falha de teste para enviar seu primeiro relatório de erros ao Firebase.
Antes de começar
Adicione o Firebase ao seu projeto da Apple caso ainda não tenha feito isso. Se você não tiver um app da Apple, faça o download de um aplicativo de exemplo.
Recomendado: para gerar automaticamente registros de navegação estrutural e entender as ações do usuário que levam a uma falha, um evento não fatal ou um ANR, você precisa para ativar o Google Analytics no seu projeto do Firebase.
Caso seu projeto do Firebase não tenha o Google Analytics ativado, faça a ativação na guia Integrações das suas
no Console do Firebase. > Configurações do projeto Se estiver criando um novo projeto do Firebase, ative o Google Analytics durante o fluxo de trabalho de criação do projeto.
Os registros de navegação estrutural estão disponíveis para todas as plataformas da Apple compatíveis com o Crashlytics, exceto o watchOS.
Etapa 1: adicionar o SDK do Crashlytics ao seu app
Use o Swift Package Manager para instalar e gerenciar as dependências do Firebase.
- No Xcode, com seu projeto do app aberto, navegue até File > Add Packages.
- Quando solicitado, adicione o repositório do SDK do Firebase para as plataformas Apple:
- Escolha a biblioteca do Crashlytics.
- Para usar os registros de navegação estrutural, adicione também o SDK do Firebase para Google Analytics ao seu app. Verifique se o Google Analytics está ativado no seu projeto do Firebase.
- Adicione a flag
-ObjC
à seção Outras flags do vinculador nas configurações de build do destino. - (Apenas macOS) Em
Info.plist
, adicione a chaveNSApplicationCrashOnExceptions
e a defina comoYES
. - Quando terminar, o Xcode vai começar a resolver e fazer o download das dependências em segundo plano automaticamente.
https://github.com/firebase/firebase-ios-sdk.git
Em seguida, configure o módulo do Firebase:
Importe o módulo do Firebase no struct
App
ou emUIApplicationDelegate
:Swift
import Firebase
Objective-C
@import Firebase;
Configure uma instância compartilhada
FirebaseApp
, normalmente no métodoapplication(_:didFinishLaunchingWithOptions:)
do delegado do seu app:Swift
// Use the Firebase library to configure APIs. FirebaseApp.configure()
Objective-C
// Use the Firebase library to configure APIs. [FIRApp configure];
Etapa 2: configurar o Xcode para fazer upload de arquivos dSYM automaticamente
Para gerar relatórios de erros legíveis, o Crashlytics precisa dos arquivos do símbolo de depuração do seu projeto (dSYM, na sigla em inglês). Veja nas etapas a seguir como configurar o Xcode para produzir automaticamente os dSYMs, processá-los e fazer upload dos arquivos sempre que você compilar seu app.
Abra o espaço de trabalho do Xcode e selecione o arquivo do projeto no navegador à esquerda.
Na lista TARGETS, selecione o destino de criação principal.
Clique na guia Build Settings e conclua as etapas a seguir para que o Xcode gere dSYMs para seus builds.
Clique em All e pesquise por
debug information format
.Defina Debug Information Format como
DWARF with dSYM File
para todos os tipos de build.
Clique na guia Build Phases e conclua as etapas a seguir para que o Xcode possa processar seus dSYMs e fazer upload dos arquivos.
Clique em
> New Run Script Phase.Verifique se essa nova fase Run Script é a última fase do build do seu projeto. Caso contrário, o Crashlytics não poderá processar dSYMs corretamente.
Expanda a nova seção Run Script.
No campo do script (localizado no rótulo Shell), adicione o script de execução a seguir.
Este script processa os arquivos dSYM do seu projeto e faz upload deles para o Crashlytics.
"${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run"
Na seção Input Files, adicione os caminhos para os locais dos arquivos a seguir:
${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)
Para informações mais detalhadas sobre os arquivos dSYM e o Crashlytics (incluindo como fazer upload manual de arquivos dSYM), acesse Receber relatórios de erros desofuscados.
Etapa 3: forçar uma falha de teste para concluir a configuração
Para concluir a configuração do Crashlytics e ver os dados iniciais no painel do Console do Firebase, é necessário forçar uma falha de teste.
Adicione um código ao app que possa ser usado para forçar uma falha no teste.
É possível usar o código a seguir para adicionar um botão ao seu app que, quando pressionado, causa uma falha. O botão é chamado de "Testar falha".
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
Crie e execute o app no Xcode com o depurador do Xcode desconectado.
Clique em
Build and then run the current scheme para criar seu app em um dispositivo de teste ou simulador.Aguarde até que o app esteja em execução e clique em
Stop running the scheme or action para fechar a instância inicial do app. Essa instância inicial incluía o depurador que interfere no Crashlytics.
Force a falha de teste para enviar o primeiro relatório de erros do app:
Abra o app na tela inicial do dispositivo de teste ou do simulador.
No app, pressione o botão "Testar falha" que você adicionou usando o código acima.
Depois que o app falhar, execute-o novamente no Xcode para que ele possa enviar o relatório de falhas ao Firebase.
Acesse o painel do Crashlytics no Console do Firebase para ver a falha do teste.
Se você atualizou o console e ainda não consegue ver a falha de teste após cinco minutos, ative a geração de registros de depuração para ver se o app está enviando relatórios de falha.
Pronto. O Crashlytics está monitorando seu app em busca de falhas. Acesse o painel do Crashlytics para ver e analisar todos os relatórios e estatísticas.
Próximas etapas
- Para personalizar a configuração do relatório de erros, adicione relatórios de ativação, registros, chaves e rastreamento de erros não fatais.