본문 바로가기

Android

[Firebase] How to Upload Proguard Mapping File to Gradle in Firebase Crash Report

Firebase Crash Report 등록 후 Proguard Mapping 을 업로드 하기위한 방법은 아래 링크에 나와있다.


https://firebase.google.com/docs/crash/android


해당 내용에 대해 좀 더 자세한 설명을 달기위해 포스팅 작성함.


Gradle로 ProGuard 매핑 파일 업로드

1. 루트 수준 build.gradle 파일에 규칙을 포함하여 Firebase 오류 보고 플러그인을 포함합니다. 
  1.     buildscript {
         
    // ...
          dependencies
    {
           
    // ...
            classpath
    'com.google.firebase:firebase-plugins:1.0.4'
         
    }
       
    }

2. 앱 프로젝트의 Gradle 파일(일반적으로 app/build.gradle)에 다음 줄을 추가하여 오류 보고 플러그인을 사용 설정합니다. 

  1.     apply plugin: 'com.android.application'
       
    // ADD THIS
        apply plugin
    : 'com.google.firebase.firebase-crash'

        android
    {
         
    // ...
       
    }

        dependencies
    {
         
    // ...
       
    }


> 여기까진 쉽다..




3. 다음으로 서비스 계정 및 비공개 키를 만듭니다. 

업로드를 인증하는 서비스 계정 키를 다운로드합니다. Firebase 콘솔에서 프로젝트를 선택한 다음 새 비공개 키 생성 생성을 클릭합니다.

> 새 비공개 키 생성하는 곳

> FirebaseConsole -> App선택 -> 좌측상단 OverView 옆의 Settings Icon -> 프로젝트 설정 -> 서비스계정 탭 -> 비정상 종료 보고 선택 -> 새 비공개 키 생성



4. 파일 경로를 $HOME/.gradle/gradle.properties로 설정하여 FirebaseServiceAccountFilePath라는 속성을 추가하거나 명령줄에서 -P 플래그를 사용하여 다른 경로를 지정합니다. 이후에 FirebaseServiceAccountFilePath 속성을 업데이트하여 다른 서비스 계정 파일로 작업을 실행할 수 있습니다.

명령줄에서 -P 플래그로 다음과 같이 속성을 설정하여 매핑 파일의 경로를 지정할 수도 있습니다.

  1. ./gradlew -PFirebaseServiceAccountFilePath=/usr/ServiceAccount/MyApp-a287fsd34.json ...


> -P 플래그를 통해 절대경로를 지정할 수 있으나, 일반적인 경로에 위치시키는 법으로 진행함.


> 3번에서 다운로드 받은 비공개 키는 로컬 프로젝트 -> .gradle -> gradle.properties (없으면 폴더 생성) -> 다운받은 키 넣기


> android studio에서 gradle.properties를 연 다음 아래 표시된 내용을 추가

 FirebaseServiceAccountFilePath=/.gradle/gradle.properties/<download_file_name>.json 


> app 단위 build.gradle에 위에 선언한 주소를 지정

// apply plugin: 과 동일한 level에 지정한다.

 setProperty("FirebaseServiceAccountFilePath", rootProject.rootDir.absolutePath + FirebaseServiceAccountFilePath) 





5.  프로젝트 디렉토리에서 gradlew 명령을 실행하여 이전 빌드의 매핑 파일을 업로드할 수 있습니다. 예를 들면 다음과 같습니다.

  1. ./gradlew :app:firebaseUploadReleaseProguardMapping

    업로드 작업의 정확한 이름은 빌드 변형 이름에 따라 다르며 다음과 같은 패턴을 따릅니다.firebaseUpload<VariantName>ProguardMapping. 사용 가능한 업로드 작업 이름의 전체 목록을 보려면 다음 gradlew명령을 실행하세요.

    ./gradlew :app:tasks


> Proguard를 이용해 signed apk를 빌드하게 되면 아래의 경로

   <App Directory> / <App Name> / build / outputs / mapping / <Flavors Name> / release / mapping.txt

   가 생성됨을 확인할 수 있다.


> Android Studio 하단의 Terminal을 열어 ./gradlew 로 mapping 데이터를 업로드 하도록 하자.


> 가이드에서 설명한 대로 하되 :app 은 app 폴더명(default값이 app), :firebaseUploadReleaseProguardMapping 은 Flavors를 지정했다면 Release앞에 Flavors 명을 적어준다.


> 만약 app 폴더명을 변경(Abc)하였고, Flavors를 def, ghi를 사용한다면 명령어는 아래와 같다.

 ./gradlew :Abc:firebaseUploadDefReleaseProguardMapping

 ./gradlew :Abc:firebaseUploadGhiReleaseProguardMapping


> 성공 시 다음과 같은 메시지를 확인 할 수 있다.