[iOS / Swift] Xcode에 Firebase Crashlytics 적용하기 (with. Podfile)

suyeon·2024년 8월 11일

iOS

목록 보기
4/7

현재 진행 중인 프로젝트 Pochak에 Firebase Crashlytics를 적용하려 한다. 배포가 됐기 때문에 애플 개발자 계정에서 분석을 통해 크래시를 볼 수 있지만, 자세한 이유는 볼 수 없기 때문에 꼭 넣어야겠다고 생각했다!

Firebase와 프로젝트 연동

이건 이미 했다고 치고...!

1. GoogleService-info.plist

파이어베이스 가입하면서 받은 plist를 프로젝트에 넣어줍니다. 이 파일은 공개되지 않는게 좋기 때문에 추가한 뒤 .gitignore에 파일을 추가해서 깃에 올라가지 않게 해줬다. 파일은 팀 노션에 추가해둬서 팀원들이 각자 본인 로컬에서 올려놓을 수 있도록 했다! (배포할 때 어케 해야하지? ㅎ)

2. Pod 추가

처음 연동할 당시에는 잘 모르고 Podfile에 Anaylitics만 추가해뒀었다. Podfile을 사용한다면, Podfile에 Crashlytics도 추가해준다.

target 'pochak' do
  # Comment the next line if you don't want to use dynamic frameworks
  use_frameworks!
  
  ..생략..
  
  # firebase
  pod 'FirebaseAnalytics'
  pod 'FirebaseCrashlytics'  # 추가한 부분

  # Pods for pochak

  ..생략..
  
end

Podfile 수정 후 pod install --repo-update 로 추가된 부분에 대한 의존성을 불러올 수 있다. (이미 podfile이 존재하는 경우만)

3. Firebase Configure

AppDelegate에서 Firebase 를 실행해준다. (처음 Firebase 연동하는 경우)

import FirebaseCore

@main
class AppDelegate: UIResponder, UIApplicationDelegate {
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        
        // 앱이 시작될 때 Firebase 연동
        FirebaseApp.configure()
    }

4. dSYM 파일 자동 업로드를 위한 프로젝트 설정

dSYM이란 debug symbol file의 약자로, 해당 앱의 디버그 기호, 정보를 저장한다. 크래시가 발견했을 때 이 파일을 파이어베이스로 보내주기 위해 설정을 변경해야 한다.

  1. 좌측의 내비게이터에서 프로젝트 파일 선택

  2. TARGETS에서 기본 빌드 대상 선택(프로젝트명으로만 된 빌드)

  3. Build Settings 선택 → All → Build Options 메뉴의 'debug information format'

  4. 아래처럼 DWARF with dSYM File로 설정

  5. 그 다음, Build Settings 옆에 있는 Build Phases로 이동

  6. + 버튼 → 'New Run Script Phase' 클릭 → 'Run Script' 생성됨

펼친 다음에 다음과 같이 적기

Shell에는

"${PODS_ROOT}/FirebaseCrashlytics/run"

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

Input Files에는 (한 줄씩)

${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${TARGET_NAME}
$(SRCROOT)/$(BUILT_PRODUCTS_DIR)/$(INFOPLIST_PATH)

첫번째 줄은 프로젝트의 dSYM파일에 경로를 추가하고 Crashlytics에서 대용량 앱의 dSYM을 더 빠르게 처리할 수 있게 해주는 역할을 한다고 한다.
두번째 줄을 통해 Info.plist 파일에 경로를 추가하고, Crashlytics에서 앱 버전을 dSYM과 연결할 수 있다고 한다.
(뭐.. 좋은게 좋은거니까 ㅎ)

5. 디버깅 로깅 설정

제일 상단 바에서 Product > Scheme > Edit Scheme 선택

Run > Arguments > 'Arguments Passed On Launch'에 '-FIRDebugEnabled' 를 추가해준다.

이는 Firebase Debug 모드를 활성화하는 설정이라는데.. 언제 쓸지는 잘 모르겠다. 일단 추가해두면 나중에 필요한 때가 오지 않을까? ㅎㅎ

6. 테스트

강제로 크래시를 내서 잘 작동하는지 테스트해 볼 수 있다.
Firebase Crashlytics 시작하기
위 링크에서 Firebase 공식 페이지에서 제공하는 강제 크래시 내는 코드를 작성해도 되고, 이미 있는 코드에서 크래시를 내도 된다.

나 같은 경우는 앱이 실행되고 처음 나오는 탭이 컬렉션뷰인데, 셀을 클릭했을 때 크래시가 나도록 didSelectItemAt에서 fatalError()를 첫번째 줄에 써주었다.

❗️여기서 중요❗️

강제 크래시 내는 코드를 작성하고, Xcode를 실행해서 크래시를 낸 후, 다시 시뮬레이터에서 앱을 실행시켜서(Xcode 실행 아님!!) 크래시 내는 동작을 해준다. 그 다음, 다시 Xcode를 실행시켜야 dSYM 파일이 Crashlytics로 업로드된다!!!!! (업로드 되는 데에 시간이 좀 걸림)

이걸 몰라서.. 아니 크래시 냈는데 왜 안돼?!?!?!?! 하고 crashlytics 페이지만 무한 새로고침했다......,,,, 아오

초기 세팅 때는 이렇게 해주어야 하는 것 같다.

그럼 이렇게 크래시 리포트를 받을 수 있다!!!!!! 아싸리~

🔗 참고 링크

iOS-Firebase-Crashlytics-설정하기
앱에 Firebase Crashlytics 추가(Swift)

profile
낑낑슨....

0개의 댓글