Menguji implementasi Firebase Crashlytics Anda

ios

android

unity [beta]

Menimbulkan kerusakan sengaja untuk menguji implementasi

iOS

Anda tidak perlu menunggu error untuk mengetahui apakah Crashlytics berfungsi atau tidak. Anda dapat menggunakan SDK untuk menimbulkan error secara sengaja dengan menambahkan kode berikut ke aplikasi Anda:

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()
    }
}

Menyesuaikan setelan debug project Anda

Crashlytics tidak dapat menangkap error jika build Anda memasang debugger saat diluncurkan. Sesuaikan setelan build untuk mengubah format informasi debug project:

  1. Dengan masih memilih project di Xcode Navigator, buka tab Build Settings.
  2. Klik All di bagian atas tab untuk menampilkan semua setelan build.
  3. Cari "debug information format".
  4. Tetapkan setelan Debug Information Format ke DWARF with dSYM File.

Melakukan pengujian

Cuplikan kode di atas menambahkan tombol yang membuat aplikasi Anda error saat ditekan. Agar pengujian bisa bekerja, jalankan aplikasi tanpa debugger:

  1. Klik play_arrow Build and then run the current scheme di Xcode untuk membuat aplikasi di perangkat atau simulator.
  2. Klik stop Stop running the scheme or action di Xcode untuk menutup instance awal aplikasi Anda. Instance awal ini mencakup debugger yang mengganggu Crashlytics.
  3. Buka kembali aplikasi Anda dari simulator atau perangkat.
  4. Tekan Crash untuk membuat aplikasi menjadi error.
  5. Buka aplikasi Anda sekali lagi agar Crashlytics API melaporkan error. Laporan error Anda akan muncul di Firebase console dalam waktu 5 menit.

android

Anda tidak perlu menunggu error untuk mengetahui apakah Crashlytics berfungsi atau tidak. Anda dapat menambahkan tombol ke MainActivity aplikasi untuk menimbulkan error secara sengaja:

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))

Saat melakukan pengujian, buka kembali aplikasi setelah menekan tombol yang akan menimbulkan error untuk memastikan Crashlytics berkesempatan melaporkan error tersebut. Laporan akan muncul di Firebase console dalam waktu lima menit.

unity [beta]

Anda tidak perlu menunggu error untuk mengetahui apakah Crashlytics berfungsi atau tidak. Anda dapat memaksakan pengecualian tidak fatal untuk menguji Crashlytics:

  1. Tambahkan GameObject kosong baru ke adegan dalam game Anda, lalu namai dengan CrashlyticsTester.

  2. Klik Tambahkan Komponen di objek CrashlyticsTester, lalu scroll ke Skrip Baru di bagian bawah daftar komponen.

  3. Namai skrip baru ini dengan CrashlyticsTester juga, lalu tambahkan konten berikut ke skrip:

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");
        }
    }
}

Mengaktifkan logging debug Crashlytics

Jika error yang disengaja tidak berhasil, error terjadi sebelum Anda menekan tombol, atau Anda mengalami masalah lain dengan Crashlytics, Anda dapat mengaktifkan logging debug Crashlytics untuk melacak masalahnya.

ios

Crashlytics 3.11.1+

Untuk mengaktifkan logging debug di perangkat pengembangan Anda, gunakan argumen baris perintah berikut di Xcode:

-FIRDebugEnabled
Versi Sebelumnya
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 +

Untuk mengaktifkan logging debug pada perangkat pengembangan Anda, setel dua tanda adb shell sebelum menjalankan aplikasi Anda:

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

Lihat log di log perangkat dengan menjalankan:

adb logcat -s Fabric CrashlyticsCore

Untuk menonaktifkan mode debug, setel kembali tanda ke INFO.

  adb shell setprop log.tag.Fabric INFO
  adb shell setprop log.tag.CrashlyticsCore INFO
  
Versi Sebelumnya

Untuk mengaktifkan mode debug di Android, Anda harus menonaktifkan inisialisasi otomatis terlebih dahulu dengan menambahkan baris perintah ke AndroidManifest.xml:

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

Kemudian, Anda dapat menginisialisasi Crashlytics secara manual dengan debugger yang diaktifkan:

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]

Untuk mengaktifkan logging Debug untuk Firebase di Unity, tambahkan kode berikut ke inisialisasi aplikasi Anda:

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

Langkah berikutnya

  • Menyesuaikan laporan kerusakan—Crashlytics otomatis mulai mengumpulkan laporan kerusakan begitu Anda menambahkan SDK. Namun, Anda juga dapat menyesuaikan penyiapan dengan menambahkan pelaporan keikutsertaan, log, kunci, dan bahkan pelacakan error tidak fatal.

Kirim masukan tentang...

Butuh bantuan? Kunjungi halaman dukungan kami.