Testar sua implementação do Firebase Crashlytics

ios

android

unity [beta]

Forçar a ocorrência de um erro para testar sua implementação

ios

Você não precisa esperar que um erro aconteça para saber se o Crashlytics está funcionando. É possível pode usar o SDK para forçar uma falha, adicionando o seguinte código ao seu aplicativo:

Objective-C
#import "ViewController.h"
#import <Crashlytics/Crashlytics.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:@"Crash" forState:UIControlStateNormal];
    [button addTarget:self action:@selector(crashButtonTapped:)
        forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:button];
}

- (IBAction)crashButtonTapped:(id)sender {
    [[Crashlytics sharedInstance] crash];
}

@end
Swift
import UIKit
import Crashlytics

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("Crash", for: [])
        button.addTarget(self, action: #selector(self.crashButtonTapped(_:)), for: .touchUpInside)
        view.addSubview(button)
    }

    @IBAction func crashButtonTapped(_ sender: AnyObject) {
        Crashlytics.sharedInstance().crash()
    }
}

Ajustar as configurações de depuração do seu projeto

O Crashlytics não consegue capturar falhas se a versão anexar um depurador no lançamento. Ajuste as configurações da versão para alterar o formato de informações de depuração do projeto:

  1. Com seu projeto ainda selecionado no Navegador do Xcode, abra a guia Configurações da compilação.
  2. Clique em Todas na parte superior da guia para exibir todas as configurações de compilação.
  3. Procure por "Formato das informações de depuração".
  4. Defina a configuração do Formato das informações de depuração para DWARF com arquivo dSYM.

Testar

O snippet de código acima adiciona um botão que causa falha no app quando pressionado. Para que isso funcione, execute o aplicativo sem um depurador:

  1. Clique em play_arrow Criar e executar o esquema atual no Xcode para criar seu app em um dispositivo ou simulador.
  2. Clique em stop Parar de executar o esquema ou a ação no Xcode para fechar a instância inicial do app. Essa instância inicial inclui um depurador que interfere no Crashlytics.
  3. Abra seu app novamente no simulador ou no dispositivo.
  4. Toque em Falha para provocar uma falha no app.
  5. Abra seu app mais uma vez para permitir que a Crashlytics API reporte a falha, que aparecerá no Firebase console em até cinco minutos.

android

Você não precisa esperar que um erro aconteça para saber se o Crashlytics está funcionando. Adicione um botão à MainActivity do seu app para forçar a ocorrência de uma falha:

Java
Android

Button crashButton = new Button(this);
crashButton.setText("Crash!");
crashButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        Crashlytics.getInstance().crash(); // Force a crash
    }
});

addContentView(crashButton, new ViewGroup.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.WRAP_CONTENT));

Kotlin
Android

val crashButton = Button(this)
crashButton.text = "Crash!"
crashButton.setOnClickListener {
    Crashlytics.getInstance().crash() // Force a crash
}

addContentView(crashButton, ViewGroup.LayoutParams(
        ViewGroup.LayoutParams.MATCH_PARENT,
        ViewGroup.LayoutParams.WRAP_CONTENT))

Durante o teste, reabra seu app depois de pressionar o botão responsável por causar um erro no app para que o Crashlytics possa informar sobre o erro. O relatório deve aparecer no Console do Firebase em cinco minutos.

unity [beta]

Não é necessário esperar até que uma falha aconteça para saber se o Crashlytics está funcionando. É possível forçar uma exceção não fatal para testar o Crashlytics:

  1. Adicione um novo GameObject em branco a uma cena no seu jogo, e nomeie-o como CrashlyticsTester.

  2. Clique em Adicionar componente no objeto CrashlyticsTester e role até Novo script na parte inferior da lista de componentes.

  3. Nomeie o novo script como CrashlyticsTester também e adicione o seguinte conteúdo ao script:

using System;
using UnityEngine;

public class CrashlyticsTester : MonoBehaviour {

    int updatesBeforeException;

    // Use this for initialization
    void Start () {
      updatesBeforeException = 0;
    }

    // Update is called once per frame
    void Update()
    {
        // Call the exception-throwing method here so that it's run
        // every frame update
        throwExceptionEvery60Updates();
    }

    // A method that tests your Crashlytics implementation by throwing an
    // exception every 60 frame updates. You should see non-fatal errors in the
    // Firebase console a few minutes after running your app with this method.
    void throwExceptionEvery60Updates()
    {
        if (updatesBeforeException > 0)
        {
            updatesBeforeException--;
        }
        else
        {
            // Set the counter to 60 updates
            updatesBeforeException = 60;

            // Throw an exception to test your Crashlytics implementation
            throw new System.Exception("test exception please ignore");
        }
    }
}

Ativar a geração de registros de depuração do Crashlytics

Se a tentativa não causar falha, se a falha ocorrer antes do esperado, ou se você estiver enfrentando algum outro problema com o Crashlytics, ative a geração de registros de depuração para rastrear o problema.

ios

Crashlytics 3.11.1+

Para ativar a geração de registros de depuração no seu dispositivo de desenvolvimento, especifique o seguinte argumento de linha de comando no Xcode:

-FIRDebugEnabled
Versões anteriores
Objective-C
- (BOOL)application:(UIApplication *)application
      didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Initialize Firebase service.
    [FIRApp configure];
    [Fabric.sharedSDK setDebug:YES];
    return YES;
  }
Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions
    launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Initialize Firebase service.
    FirebaseApp.configure()
    Fabric.sharedSDK().debug = true
    return true
  }

android

Crashlytics 2.9.6 +

Para ativar a geração de registros de depuração no seu dispositivo de desenvolvimento, defina duas sinalizações adb shell antes de executar seu app:

  adb shell setprop log.tag.Fabric DEBUG
  adb shell setprop log.tag.CrashlyticsCore DEBUG
  

Para ver os registros de dispositivo, execute o comando a seguir:

adb logcat -s Fabric CrashlyticsCore

Para desativar o modo de depuração, defina a sinalização de volta para INFO.

  adb shell setprop log.tag.Fabric INFO
  adb shell setprop log.tag.CrashlyticsCore INFO
  
Versões anteriores

Para ativar o modo de depuração no Android, primeiro você precisa desativar a inicialização automática, adicionando uma linha ao AndroidManifest.xml:

<meta-data
    android:name="firebase_crashlytics_collection_enabled"
    android:value="false" />
  

Após isso, inicialize o Crashlytics manualmente com o depurador ativado:

Java
Android

final Fabric fabric = new Fabric.Builder(this)
        .kits(new Crashlytics())
        .debuggable(true)  // Enables Crashlytics debugger
        .build();
Fabric.with(fabric);

Kotlin
Android

val fabric = Fabric.Builder(this)
        .kits(Crashlytics())
        .debuggable(true) // Enables Crashlytics debugger
        .build()
Fabric.with(fabric)

unity [beta]

Para ativar o registro de depuração do Firebase no Unity, adicione o seguinte código à inicialização do seu app:

Firebase.FirebaseApp.LogLevel = Firebase.LogLevel.Debug;

Próximas etapas

  • Personalizar relatórios de erros: o Crashlytics começa a coletar relatórios de erros automaticamente assim que você adiciona o SDK. No entanto, é possível personalizar a configuração ao incluir relatórios, registros, chaves e rastreamento de erros não fatais.

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.