- 안드로이드 앱 오류 보고 솔루션 SDK 적용하기 Crashlytics
1. Crashlytics 페이지 진입
- 화면 상단 적용 프로젝트 선택
- 왼쪽 하단 Crashlytics 탭 선택
- Crashlytics 화면 안드로이드 아이콘 선택
2. 안드로이드 앱에 Firebase 추가
2.1 앱 등록
2.1.1 패키지 이름
- 안드로이드 앱 패키지명 등록
> Android Studio -> build.gradle(Module:app) -> applicationId
ex) com.json.client.firebasetest
2.1.2 앱 닉네임 및 인증서 SHA-1 등록 (선택 사항으로 미입력 진행 가능)
- 앱 닉네임 : 임의 이름 등록
- 디버그 서명 인증서 SHA-1 : 앱에 사용할 사이닝 키 SHA-1 등록
2.2 구성 파일 다운로드
- 다운로드 버튼을 누르고 파일 다운 로드
- google-services.json 파일을 안드로이드 앱 모듈 루트 디렉토리로 붙혀 넣기
Android Studio -> Project -> app -> google-services.json 확인
2.3. Firebase SDK 추가
2.3.1 build.gradle (Module)
- repositories, dependencies 추가되지 않은 내용이 있다면 오른쪽 복사 아이콘을 누르고 build.gradle 파일에 추가.
- 보통 google()은 추가되어 있기 때문에 dependencies의 classpath 내용만 추가
적용 전
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
적용 후
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.2'
// for Crashlytics
classpath 'com.google.gms:google-services:4.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
2.3.2 build.gradle (app)
- 모듈 추가와 같이 누락된 내용을 추가.
- 모두 추가 후 Android Studio "Sync now" 을 실행하여 변경된 설정 내용을 적용.
적용 전
apply plugin: 'com.android.application'
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.json.client.firebasetest"
minSdkVersion 22
targetSdkVersion 29
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
적용 후
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services' // for Crashlytics
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.json.client.firebasetest"
minSdkVersion 22
targetSdkVersion 29
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.google.firebase:firebase-analytics:17.2.2' // for Crashlytics
}
2.4 앱 설치 확인
- 앱 설정이 정상적으로 완료 되었는지 확인.
- 네트워크가 연결되어 있는 단말에 Crashlytics SDK를 등록한 앱을 설치
* Crashlytics 등록된 사이닝키와 앱 빌드된 사이닝키가 다를 경우 확인 되지 않음.
- 앱이 정상 설치 되어 확인 완료 화면.
3. SDK 추가.
3.1 build.gradle(Module)
적용전
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.2'
// for Crashlytics
classpath 'com.google.gms:google-services:4.3.3'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
적용 후
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
// for Crashlytics
maven {
url 'https://maven.fabric.io/public'
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.2'
// for Crashlytics
classpath 'com.google.gms:google-services:4.3.3'
classpath 'io.fabric.tools:gradle:1.+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
// for Crashlytics
maven {
url 'https://s3.amazonaws.com/fabric-artifacts-private/internal-snapshots'
}
maven {
url 'https://maven.fabric.io/public'
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
3.2 build.gradle(App)
적용 전
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services' // for Crashlytics
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.json.client.firebasetest"
minSdkVersion 22
targetSdkVersion 29
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.google.firebase:firebase-analytics:17.2.2' // for Crashlytics
}
적용 후
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services' // for Crashlytics
apply plugin: 'io.fabric' // for Crashlytics
android {
compileSdkVersion 29
buildToolsVersion "29.0.3"
defaultConfig {
applicationId "com.json.client.firebasetest"
minSdkVersion 22
targetSdkVersion 29
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'androidx.appcompat:appcompat:1.1.0'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation 'com.google.firebase:firebase-analytics:17.2.2' // for Crashlytics
implementation('com.crashlytics.sdk.android:crashlytics:2.7.0-SNAPSHOT@aar') {
transitive = true; // for Crashlytics
}
}
3.3 앱 코드 추가.
- 앱의 MainActivity에 대한 onCreate() 메소드에서 Crashlytics를 초기화
적용 전
package com.json.client.firebasetest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
적용 후
package com.json.client.firebasetest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import com.crashlytics.android.Crashlytics;
import io.fabric.sdk.android.Fabric;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Fabric.with(this, new Crashlytics());
setContentView(R.layout.activity_main);
// Crashlytics 테스트를 위해 강제로 crash 발생
Crashlytics.getInstance().crash(); // Force a crash
}
}
오류 보고는 5분 내로 Firebase 콘솔에 업데이트 됨.
출처 : https://firebase.google.com/docs/crashlytics/get-started-android?hl=ko
3.4 등록 완료
- SDK 추가 완료 후 앱을 실행 할 경우 Crashlytics 화면 설치 완료 표시됨.
4. 오류 보고 확인
4.1 앱 강제 crash
- Crashlytics.getInstance().crash(); // Force a crash 코드가 추가되어 앱 실행고 함께 crash 발생
4.2 Crashlytics 보고서 확인
안드로이드 Crashlytics SDK 적용 완료
'Firebase' 카테고리의 다른 글
[Firebase 사용하기] 1 안드로이드 앱 Firebase 등록 (0) | 2020.06.15 |
---|