Firebase Crashlytics 시작하기


이 빠른 시작에서는 앱에서 Firebase Crashlytics를 설정하는 방법을 설명합니다. Firebase Crashlytics SDK로 통합하면 종합적인 비정상 종료 발생률과 보고서를Firebase 콘솔에서 확인할 수 있습니다.

Crashlytics를 설정하려면 Firebase 콘솔 및 IDE (예: Firebase 구성 파일 및 Crashlytics 합니다. 설정을 완료하려면 테스트 비정상 종료를 강제로 적용하여 첫 번째 비정상 종료 보고서를 Firebase로 전송해야 합니다.

시작하기 전에

  1. 아직 추가하지 않았다면 Unity 프로젝트에 Firebase를 추가합니다. Unity 프로젝트가 없는 경우 샘플 앱을 다운로드하면 됩니다.

  2. 권장: 자동으로 탐색경로 로그 비정상 종료, 심각하지 않은 문제, ANR 이벤트로 이어지는 사용자 작업을 이해하고 Firebase 프로젝트에서 Google Analytics를 사용 설정해야 합니다.

    • 기존 Firebase 프로젝트에 Google Analytics가 없는 경우 Google Analytics를 사용 설정하면 Integrations > 프로젝트 설정 Firebase 콘솔에서 확인할 수 있습니다.

    • 새 Firebase 프로젝트를 만드는 경우 Google Analytics를 사용 설정합니다. 프로젝트 생성 워크플로에서 작성할 수 있습니다

    </ph>

1단계: 앱에 Crashlytics SDK 추가

Firebase 프로젝트에 Unity 프로젝트를 등록할 때 이미 Firebase Unity SDK를 다운로드하고 패키지를 추가했을 수 있습니다. 다음 단계에 설명되어 있습니다.

  1. Firebase Unity SDK를 다운로드한 다음, 원하는 위치에 SDK의 압축을 풉니다. Firebase Unity SDK는 플랫폼별로 다르지 않습니다.

  2. Unity 프로젝트를 열고 Assets(애셋) > Import Package(패키지 가져오기) > Custom Package(커스텀 패키지)로 이동합니다.

  3. 압축을 푼 SDK에서 선택하여 Crashlytics SDK를 가져옵니다. (FirebaseCrashlytics.unitypackage).

    GCP의 탐색경로 로그 또한 앱에 Google Analytics용 Firebase SDK를 추가합니다. (FirebaseAnalytics.unitypackage) 그런 다음 Google 애널리틱스가 사용 설정됨 확인할 수 있습니다

  4. Unity 패키지 가져오기 창에서 가져오기를 클릭합니다.

2단계: Crashlytics 초기화

  1. 새 C# 스크립트를 만들어 장면의 GameObject에 추가합니다.

    1. 첫 번째 장면을 연 다음 이름이 CrashlyticsInitializer인 빈 GameObject를 만듭니다.

    2. 새 객체에 대해 검사기에서 구성요소 추가를 클릭합니다.

    3. CrashlyticsInit 스크립트를 선택하여 CrashlyticsInitializer 객체에 추가합니다.

  2. 스크립트의 Start 메서드에서 Crashlytics를 초기화합니다.

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    // Import Firebase and Crashlytics
    using Firebase;
    using Firebase.Crashlytics;
    
    public class CrashlyticsInit : MonoBehaviour {
        // Use this for initialization
        void Start () {
            // Initialize Firebase
            Firebase.FirebaseApp.CheckAndFixDependenciesAsync().ContinueWith(task => {
                var dependencyStatus = task.Result;
                if (dependencyStatus == Firebase.DependencyStatus.Available)
                {
                    // Create and hold a reference to your FirebaseApp,
                    // where app is a Firebase.FirebaseApp property of your application class.
                    // Crashlytics will use the DefaultInstance, as well;
                    // this ensures that Crashlytics is initialized.
                    Firebase.FirebaseApp app = Firebase.FirebaseApp.DefaultInstance;
    
                    // When this property is set to true, Crashlytics will report all
                    // uncaught exceptions as fatal events. This is the recommended behavior.
                    Crashlytics.ReportUncaughtExceptionsAsFatal = true;
    
                    // Set a flag here for indicating that your project is ready to use Firebase.
                }
                else
                {
                    UnityEngine.Debug.LogError(System.String.Format(
                      "Could not resolve all Firebase dependencies: {0}",dependencyStatus));
                    // Firebase Unity SDK is not safe to use here.
                }
            });
        }
    
      // Update is called once per frame
      void Update()
        // ...
    }

3단계: (Android만 해당) 기호 업로드 설정

이 단계는 IL2CPP를 사용하는 Android 앱에만 필요합니다.

  • Unity의 Mono 스크립팅 백엔드를 사용하는 Android 앱에는 이 단계가 필요하지 않습니다.

  • Apple 플랫폼 앱의 경우 기호를 업로드하도록 Firebase Unity 편집기 플러그인이 Xcode 프로젝트를 자동으로 구성하므로 이 단계가 필요하지 않습니다.

Crashlytics의 Unity SDK 8.6.1 이상에는 NDK 비정상 종료 보고가 자동으로 포함되어 있습니다. 이를 통해 Crashlytics가 자동으로 Unity를 보고할 수 있습니다. IL2CPP Android에서 비정상 종료됩니다. 그러나 네이티브 라이브러리의 기호화된 스택 트레이스를 보려면 Crashlytics 대시보드에서 충돌이 발생하면 다음 위치에 기호 정보를 업로드해야 합니다. Firebase CLI를 사용하여 빌드 시간

기호 업로드를 설정하려면 다음 안내를 따르세요. Firebase CLI를 설치합니다.

CLI를 이미 설치했다면 최신 버전으로 업데이트해야 합니다.

4단계: 프로젝트 빌드 및 기호 업로드

iOS+(Apple 플랫폼)

  1. Build Settings(빌드 설정) 대화상자에서 프로젝트를 Xcode 작업공간으로 내보냅니다.

  2. 앱을 빌드합니다.

    Apple 플랫폼의 경우 Firebase Unity 편집기 플러그인이 자동으로 Xcode 프로젝트를 구성하여 각 빌드의 Firebase 서버에 대한 Crashlytics 호환 기호 파일입니다.

Android

  1. 빌드 설정 대화상자에서 다음 중 하나를 실행합니다.

    • Android 스튜디오 프로젝트로 내보내 프로젝트를 빌드합니다.

    • Unity Editor에서 직접 APK를 빌드합니다.
      빌드하기 전에 빌드 설정 대화상자에서 CreateSYMBOL.zip 체크박스가 선택되어 있는지 확인합니다.

  2. 빌드가 완료되면 Crashlytics 호환 기호를 생성합니다. 다음 명령어를 실행하여 Firebase 서버에 업로드합니다. Firebase CLI 명령어:

    firebase crashlytics:symbols:upload --app=FIREBASE_APP_ID PATH/TO/SYMBOLS
    • FIREBASE_APP_ID: 패키지 이름이 아닌 Firebase Android 앱 ID
      Firebase Android 앱 ID 예시: 1:567383003300:android:17104a2ced0c9b9b

    • PATH/TO/SYMBOLS: CLI에서 생성된 기호 파일 경로

      • Android 스튜디오 프로젝트로 내보냄 - PATH/TO/SYMBOLSunityLibrary/symbols 디렉터리를 나타내며 Gradle 또는 Android 스튜디오를 통해 앱을 빌드한 후 내보낸 프로젝트 루트에 생성됩니다.

      • Unity 내에서 APK를 직접 빌드 - PATH/TO/SYMBOLS는 빌드가 완료될 때 프로젝트 루트 디렉터리에서 생성된 압축된 기호 파일의 경로입니다(예: myproject/myapp-1.0-v100.symbols.zip).

    다음을 사용하기 위한 고급 옵션을 확인합니다. 기호 파일 생성 및 업로드를 위한 Firebase CLI 명령어

    플래그 설명
    --generator=csym

    기본 Breakpad 생성기 대신 기존 cSYM 기호 파일 생성기를 사용합니다.

    사용하지 않는 것이 좋습니다. 기본 Breakpad 기호 파일 생성기를 사용하는 것이 좋습니다.

    --generator=breakpad

    Breakpad 기호 파일 생성기를 사용합니다.

    기호 파일 생성의 기본값은 Breakpad입니다. 빌드 구성에 symbolGenerator { csym() }를 추가했고 대신 Breakpad를 사용하도록 재정의하려는 경우에만 이 플래그를 사용합니다.

    --dry-run

    기호 파일을 생성하지만 업로드하지 않습니다.

    이 플래그는 전송된 파일의 콘텐츠를 검사하려는 경우에 유용합니다.

    --debug 디버깅 정보를 추가로 제공합니다.

5단계: 테스트 비정상 종료를 강제로 적용하여 설정 완료

Crashlytics 설정을 완료하고 다음에서 초기 데이터를 확인하려면 Firebase 콘솔의 Crashlytics 대시보드에서 테스트를 강제 실행해야 합니다. 비정상 종료됩니다.

  1. 기존 GameObject를 찾은 후 다음 스크립트에 추가합니다. 이 스크립트는 앱을 실행하고 몇 초 후에 테스트 비정상 종료를 일으킵니다.

    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 reports 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");
            }
        }
    }
  2. 앱을 빌드하고 빌드가 완료되면 기호 정보를 업로드합니다.

    • iOS+: Firebase Unity 편집기 플러그인이 기호 파일을 업로드하도록 Xcode 프로젝트를 자동으로 구성해 줍니다.

    • Android: IL2CPP를 사용하는 Android 앱의 경우 다음을 실행합니다. Firebase CLI crashlytics:symbols:upload 명령어를 사용하여 기호 파일.

  3. 앱을 실행합니다. 앱이 실행되면 기기 로그를 확인하고 CrashlyticsTester에서 예외가 트리거될 때까지 기다립니다.

    • iOS+: Xcode 하단 창에서 로그를 확인합니다.

    • Android: 터미널에서 adb logcat 명령어를 실행하여 로그를 확인합니다.

  4. Crashlytics 대시보드로 이동하여 Firebase 콘솔에서 테스트 비정상 종료를 확인하세요.

    Console을 새로고침하고 5분 후에도 테스트 비정상 종료가 표시되지 않으면 디버그 로깅을 사용 설정하여 앱에서 비정상 종료 보고서를 전송하는지 확인합니다.


이제 모든 작업이 완료되었습니다. 이제 Crashlytics에서 앱의 비정상 종료를 모니터링합니다. Crashlytics 대시보드로 이동하여 확인 및 조사 확인할 수 있습니다.

다음 단계

  • Google Play와 통합하여 Android 앱의 비정상 종료 보고서를 Google Play 트랙별로 필터링할 수 있습니다. Crashlytics 대시보드 이렇게 하면 특정 빌드에 대시보드를 더 집중할 수 있습니다.