ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 앱에 Firebase Crashlytics 추가(Swift)
    iOS/Swift 2022. 1. 27. 18:42

     

    안녕하세요!! 이번엔 Swift의 PHPickerViewController에서 이미지를 가져오는 방법에 대해서 정리했습니다.

    이번 글도 노션에서 옮겨와 말이 짧습니다!! 양해해주세용😽


     

    먼저 Crashlytics를 추가할 프로젝트의 대쉬보드로 들어가서 Crashlytics 사용설정을 눌러준다.

    사용설정을 누르면 이렇게 수신대기 모드로 들어가게 된다.

    프로젝트에 Firebase SDK를 설치해준 뒤, AppDelegate의 didFinishLaunchingWithOptions에서

    Firebase를 인스턴스화 시켜주어야 한다.

    FirebaseApp.configure()
    

    그리고 비정상 종료 보고서를 생성하려면 Crashlytics 프로젝트에 디버그 심볼(dSYM) 파일이 필요하다.

     

    프로젝트 → TARGETS → Build Settings에서 Build Options를 찾아간다

    만약 빌드옵션이 보이지 않는다면, 왼쪽 상단에서 All 카테고리로 바꿔주면 된다.

     

     

    빌드옵션에서 Debug Information Format의 모든 유형을 DWARF with dSYM File로 바꿔준다. 

    DWARF는 디버깅 심볼의 형식이다.

     

    그리고 Build Phases 탭으로 이동한 뒤, + 버튼을 누르고 Run Script Phase를 추가해준다.

    추가된 Run Script가 가장 마지막에 위치해있어야 Crashlytic가 제대로 작동한다.

     

    그리고 Run Script 섹션을 펼치고, Shell 필드 아래에 있는 스크립트 필드에 실행 스크립트를 추가한다.

    "${PODS_ROOT}/FirebaseCrashlytics/run"
    

    위 실행 스크립트는 dSYM 파일을 처리하고, Crashlytics에 파일을 업로드한다.

     

     

    그리고 Input Files 섹션에 다음 파일의 경로를 추가한다.

    ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
    // 프로젝트의 dSYM파일에 경로를 추가
    // Crashlytics에서 대용량 앱의 dSYM을 더 빠르게 처리할 수 있다.
    
    $(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)
    // Info.plist 파일에 경로를 추가
    // Crashlytics에서 앱 버전을 dSYM과 연결할 수 있다.
    

    이러면 설정은 완료됐다! 이제 테스트 코드를 작성해서 고의로 오류를 낸 뒤, Crashlytics가 제대로 작동하는지 확인하면 된다.

    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]
      }
    

    오류를 내는 Test Crash 버튼을 만든 뒤, 시뮬레이터 혹은 테스트 기기에서 앱을 실행한다.

     

    그리고 앱이 실행될 때 까지 기다린 뒤,

    여기서 정지버튼을 눌러 앱의 최초 인스턴스를 종료시켜야 한다.

    이 최초 인스턴스에는 Crashlytics를 방해하는 디버거가 포함되어 있기 때문이다.

     

    앱을 종료시킨 뒤 실행버튼을 누르지 않고, 테스트 기기나 시뮬레이터의 홈 화면에서 앱을 실행한다.

    그리고 Test Crash 버튼을 눌러서 강제로 비정상 종료를 시킨다.

     

    그리고 다시 xcode에서 앱을 실행시켜 비정상 종료 보고서를 Firebase에 보낼 수 있도록 해준다.

    몇분 정도 뒤 Firebase 콘솔의 Crashlytics 대쉬보드로 들어가보면

     

    이렇게 비정상 종료 로그를 확인해볼 수 있다!!!!!

    댓글

Designed by Tistory.