본문 바로가기

안드로이드/팁

Firebase Crashlytics Sdk 업데이트

반응형

어느날 Firebase Console에 들어가니깐 2020년 11월 15일 이후에도 Firebase Console에서 오류보고서를 확인 하려면 sdk를 업그레이드 하라고 알림이 떴습니다. 

 

Crashlytics를 너무 잘 이용하고 있기 때문에 요구에 맞춰 업데이트 하도록 합니다.

원문은 링크를 참고해주세요

신규로 Crashlytics를 추가하시는 분은 제 포스팅을  참고해주세요

 

먼저 FirebaseConsole에서 프로젝트를 생성하지 않으신분들은 프로젝트를 생성하시고, 이미 생성하신 분들은 google-services.josn 파일을 다운 받으세요.( 파일은 프로젝트 콘솔 메인에 처음 진입했을때 우측 하단에서 받을 수 있습니다. )

다운로드 받으셨을때 이미 다운로드된 파일로 인해 이름에 (2) 가 붙지 않도록 주의하세요

 

app 폴더에 복사

다운로드 받은 파일을 app 폴더로 복사하세요

build.gralde(project level) 수정

기존에 Crashlytics를 사용하시던 분들은 Fabric 관련 내용을 삭제해주세요.

  •   maven { url 'https://maven.fabric.io/public' }
  •   classpath 'io.fabric.tools:gradle:1.31.2'

수정된 build.gradle 

buildscript { 
    ext.kotlin_version = '1.3.41'

    repositories {
        jcenter()
        google() ( 필수 ) 
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.1'
        classpath 'com.google.gms:google-services:4.3.3' ( 필수 ) 


        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.3.0' ( 필수 )


        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" }
}

build.gradle ( app level ) 수정

제거

기존에 사용중이던 fabric이나 crashlytics 코드들을 제거해주세요

  • apply plugin: 'io.fabric' 
  • implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9@aar'
  • implementation 'com.google.firebase:firebase-analytics:17.4.4' 

추가 

  • implementation 'com.google.firebase:firebase-crashlytics-ndk:17.2.1'
  • apply plugin: 'com.google.firebase.crashlytics'
buildTypes {
       .....
        release {
            firebaseCrashlytics {
                nativeSymbolUploadEnabled true
                strippedNativeLibsDir "$buildDir/ndklibs/obj"
                unstrippedNativeLibsDir "$buildDir/ndklibs/libs"
            }

        }
    }

공식 문서에는 'nativeSymbolUploadEnabled true'만 추가하라고 나와 있는데 그렇게 하면 에러가 발생합니다.

'crashlytics could not determine stripped/unstripped native library directories for project'

위와 같이 모두 추가해줘야 에러가 발생하지 않습니다.

Application.kt

어플리케이션 소스 역시 fabric으로 작성된 코드를 지우고 새로운 crashlytics 소스를 사용합니다.

제거

  • Fabric.with(this,Crashlytics())

추가

  • FirebaseCrashlytics.getInstance().setCrashlyticsCollectionEnabled(true)

Androidmanifest.xml

기존에 페브릭을 사용 하시던 분들은 아래 코드를 제거해주세요.

   <meta-data android:name="io.fabric.ApiKey"
          android:value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" />

제 에러 발생시키기

강제 에러 발생 외에도 많은 부분이 메소드가 변경 됐으니,  공식 문서를 참고해서 변경해주세요.

throw new RuntimeException("Test Crash");

위의 강제 에러 메소드를 실행시키니 5분이내에 콘솔에 작성되어 정상적으로 변경된걸 확인할 수 있었습니다.

 

감사합니다.

 

 

반응형