Google은 흑인 공동체를 위한 인종적 평등을 추구하기 위해 노력하고 있습니다. 자세히 알아보기

Firebase Crashlytics 시작하기

이 빠른 시작에서는 Firebase Crashlytics SDK를 사용해 앱에 Firebase Crashlytics를 설정하여 Firebase Console에서 포괄적인 비정상 종료 보고서를 확인하는 방법을 설명합니다.

Crashlytics를 설정하려면 Firebase Console과 IDE 모두에서 작업을 수행해야 합니다(예: Firebase 구성 파일 및 Crashlytics SDK 추가). 설정을 완료하려면 테스트 비정상 종료를 강제로 적용하여 첫 번째 비정상 종료 보고서를 Firebase로 전송해야 합니다.

시작하기 전에

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

  2. 권장: 비정상 종료가 발생하지 않은 사용자, 탐색경로 로그, 신속 알림과 같은 기능을 사용하려면 Firebase 프로젝트에서 Google 애널리틱스를 사용 설정해야 합니다.

    • 기존 Firebase 프로젝트에 Google 애널리틱스를 사용 설정하지 않은 경우 Firebase Console의 > 프로젝트 설정통합에서 Google 애널리틱스를 사용 설정할 수 있습니다.

    • 새 Firebase 프로젝트를 만드는 경우 프로젝트 생성 워크플로 중에 Google 애널리틱스를 사용 설정합니다.

1단계: Firebase Console에서 Crashlytics 사용 설정

  1. Firebase Console의 Crashlytics 대시보드로 이동합니다.

  2. 페이지 상단의 Crashlytics 옆에 있는 드롭다운에서 앱이 선택되어 있는지 확인합니다.

  3. Crashlytics 사용 설정을 클릭합니다.

2단계: 앱에 Firebase Crashlytics SDK 추가

  1. Firebase Unity SDK를 다운로드한 다음, 원하는 위치에 SDK의 압축을 풉니다.

    Firebase Unity SDK는 플랫폼별로 제공되지 않습니다.

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

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

    다른 지원되는 Firebase 제품도 가져올 수 있습니다.

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

3단계: 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
    using Firebase;
    
    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;
    
                    // 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()
        // ...
    }

4단계: 프로젝트 실행

  1. iOS 또는 Android로 프로젝트를 내보냅니다.

  2. 내보내기가 완료되면 내보낸 프로젝트를 아래 내보내기 구성 예시와 비교하여 프로젝트가 올바르게 내보내졌는지 확인합니다.

    프로젝트를 비교한 후 파일이 누락된 것 같으면 Unity 편집기를 연 다음 Google Play 서비스 리졸버를 실행합니다(아래 안내 참조).

    iOS

    Android

내보내기 후 파일이 누락된 경우 리졸버 실행(필요한 경우)

Google Play 서비스 리졸버는 Unity 프로젝트에 앱을 iOS 또는 Android로 내보내기 위한 적절한 종속 항목이 있는지 확인합니다. 리졸버에 대한 자세한 내용은 Unity Jar Resolver의 README를 참조하세요.

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

Crashlytics 설정을 완료하고 Firebase Console의 Crashlytics 대시보드에 초기 데이터를 표시하려면 테스트 비정상 종료를 강제로 적용해야 합니다.

  1. 계층 구조 창에서 새 객체를 만듭니다.

    1. 마우스 오른쪽 버튼을 클릭하고 Create Empty(빈 객체 만들기)를 선택하여 게임의 장면에 새로운 빈 GameObject를 추가합니다.

    2. 새 객체 이름을 CrashlyticsTester로 지정합니다.

    3. 계속하기 전에 CrashlyticsTester 객체가 선택되었는지 확인합니다.

  2. Inspector(검사기) 탭에서 앱을 실행하고 몇 초 후에 테스트 비정상 종료를 일으키는 새 스크립트를 추가합니다.

    1. Add Component(구성요소 추가)를 클릭합니다.

    2. 구성요소 목록 하단에 있는 New Script(새 스크립트)를 선택합니다.

    3. 새 스크립트 이름도 CrashlyticsTester로 지정한 후 다음 콘텐츠를 스크립트에 추가합니다.

      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");
              }
          }
      }
      
  3. 앱을 빌드하고 실행합니다.

    1. File(파일) > Build Settings(빌드 설정)로 이동한 다음 플랫폼 목록에서 Android 또는 iOS를 선택합니다.

    2. iOS 또는 Android용 앱에 대해 Build and Run(빌드 및 실행)을 클릭합니다.

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

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

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

  5. 기기 로그에 예외가 표시되면 앱을 다시 시작하여 비정상 종료 보고서를 Firebase에 전송할 수 있도록 합니다.

  6. Firebase Console의 Crashlytics 대시보드로 이동하여 테스트 비정상 종료를 확인합니다.

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


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

다음 단계