Este guia de início rápido descreve como configurar o Firebase Crashlytics no seu aplicativo com o SDK do Firebase Crashlytics para que você possa obter relatórios de falhas abrangentes no Console do Firebase.
A configuração do Crashlytics requer tarefas no console do Firebase e no seu IDE (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 falha ao Firebase.
Antes de você começar
Adicione o Firebase ao seu projeto Apple, caso ainda não o tenha feito. Se você não tiver um aplicativo da Apple, poderá baixar um aplicativo de amostra .
Recomendado : para obter automaticamente registros de localização atual para entender as ações do usuário que levam a um evento de falha, não fatal ou ANR, você precisa ativar o Google Analytics em seu projeto do Firebase.
Se o seu projeto existente do Firebase não tiver o Google Analytics ativado, você poderá ativar o Google Analytics na guia Integrações do seu
Se você estiver criando um novo projeto do Firebase, ative o Google Analytics durante o fluxo de trabalho de criação do projeto.
Observe que os logs de navegação estão disponíveis para todas as plataformas Apple suportadas pelo Crashlytics, exceto watchOS.
Etapa 1 : adicione o SDK do Crashlytics ao seu aplicativo
No Xcode, com o projeto do seu aplicativo aberto, navegue até File > Add Packages . Quando solicitado, adicione o repositório SDK das plataformas Apple do Firebase: - Escolha a biblioteca Crashlytics.
- Para aproveitar os registros de localização atual , adicione também o SDK do Firebase para Google Analytics ao seu aplicativo. Certifique-se de que o Google Analytics esteja ativado em seu projeto Firebase.
- Adicione o sinalizador
-ObjC
à seção Outros sinalizadores de vinculador das configurações de compilação do seu destino. - (somente macOS) Em seu
Info.plist
, adicione a chaveNSApplicationCrashOnExceptions
e defina-a comoYES
. - Quando terminar, o Xcode começará automaticamente a resolver e baixar suas dependências em segundo plano.
https://github.com/firebase/firebase-ios-sdk.git
Importe o módulo Firebase em sua App
struct ouUIApplicationDelegate
:import Firebase @import Firebase; Configure uma instância compartilhada FirebaseApp
, normalmente no métodoapplication(_:didFinishLaunchingWithOptions:)
do delegado do seu aplicativo:// Use the Firebase library to configure APIs.
FirebaseApp.configure()// Use the Firebase library to configure APIs.
[FIRApp configure];
Etapa 2 : configurar o Xcode para fazer upload automático de arquivos dSYM
Abra o espaço de trabalho Xcode do seu projeto e selecione o arquivo do projeto no navegador esquerdo. Na lista TARGETS , selecione seu destino de construção principal. Clique na guia Configurações de compilação e conclua as etapas a seguir para que o Xcode produza dSYMs para suas compilações. Clique em Todos e procure debug information format
.Defina o formato de informações de depuração como DWARF with dSYM File
para todos os seus tipos de compilação.
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 > Nova fase de execução de script .Certifique-se de que esta nova fase Run Script seja a última fase de construção do seu projeto; caso contrário, o Crashlytics não poderá processar dSYMs adequadamente. Expanda a nova seção Executar Script . No campo script (localizado sob o rótulo Shell ), adicione o script de execução a seguir. Este script processa os arquivos dSYM do seu projeto e carrega os arquivos no Crashlytics. "${BUILD_DIR%/Build/*}/SourcePackages/checkouts/firebase-ios-sdk/Crashlytics/run" Na seção Arquivos de entrada , adicione os caminhos para os locais dos seguintes arquivos: ${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) Entenda por que as localizações desses arquivos são necessárias O Xcode procura esses arquivos de entrada nos locais especificados para garantir que os arquivos de construção estejam disponíveis para o script de execução. Além disso, se o User Script Sandboxing estiver ativado, o Xcode permitirá apenas que o script de execução acesse os arquivos especificados em Input Files . Fornecer a localização dos arquivos dSYM do seu projeto permite que o Crashlytics processe dSYMs. Fornecer a localização do arquivo GoogleService-Info.plist
criado pelo seu aplicativo permite que o Crashlytics associe os dSYMs ao seu aplicativo Firebase.Fornecer a localização do executável do seu aplicativo permite que o script de execução evite uploads duplicados do mesmo dSYM. Observe que os binários do aplicativo não são carregados .
Etapa 3 : forçar uma falha de teste para concluir a configuração
Adicione código ao seu aplicativo que você pode usar para forçar uma falha de teste. Você pode usar o código a seguir para adicionar um botão ao seu aplicativo que, quando pressionado, causa uma falha. O botão é denominado "Test Crash". 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];
}
@endCrie e execute seu aplicativo no Xcode com o depurador Xcode desconectado. Clique em Build e execute o esquema atual para criar seu aplicativo em um dispositivo de teste ou simulador.Aguarde até que seu aplicativo esteja em execução e clique em Parar de executar o esquema ou ação para fechar a instância inicial do seu aplicativo. Esta instância inicial incluía o depurador que interfere no Crashlytics.
Force a falha do teste para enviar o primeiro relatório de falha do seu aplicativo: Abra seu aplicativo na tela inicial do seu dispositivo de teste ou simulador. No seu aplicativo, pressione o botão "Test Crash" que você adicionou usando o código acima. Depois que seu aplicativo travar, execute-o novamente no Xcode para que seu aplicativo possa enviar o relatório de falha ao Firebase.
Acesse o painel do Crashlytics do console do Firebase para ver a falha do teste. Se você atualizou o console e ainda não vê a falha do teste após cinco minutos, habilite o registro de depuração para ver se seu aplicativo está enviando relatórios de falha.
Próximos passos
Personalize a configuração do seu relatório de falhas adicionando relatórios opcionais, registros, chaves e rastreamento de erros não fatais.