Firebase crash Tips 가져오기(Android 편)

7091 단어 FirebaseAndroid
실제로 Firebase crash를 안드로이드 응용 프로그램에 넣을 때 알면 편할 것 같습니다.
지금까지 Crashlytics(앞으로도 사용)를 사용했기 때문에 그쪽과 비교한 설명입니다.
Firebase crash 배포 방법이 생략되었습니다.

참고: Google Play Service 가 없는 터미널에서는 실행할 수 없습니다.


Firebase crash의 붕괴 보고서는 FirebaseCrashSenderService 클래스를 통해 진행되지만 이 클래스에서 com.google.android.gms 패키지를 이용하기 위한 클래스는 구글플레이 서비스가 없는 단말기라면 NameNotFound Exception을 일으켜 붕괴 보고서를 보내지 않습니다.
로그: https://gist.github.com/yamacraft/20a713a23ccd8a810d76f22406fc4ff7
따라서 Kindle과 중화 태블릿PC 등 단말기의 사용을 대상으로 하는 응용 프로그램의 도입 현황은 불가능하다.

try~catch도 붕괴 보고서를 보내고 싶습니다 (응용 프로그램 붕괴 이외에도 보내고 싶습니다)


Crashlytics에서는 호출Crashlytics.getInstance().core.logException(Throwable throwable)을 통해 충돌 보고서를 보낼 수 있지만, Firebase crashFirebaseCrash.report(Throwable throwable)에서는'비치명적 오류'로 보낼 수 있습니다.

※ 붉은 테두리로 둘러싸인 부분
또한 FirebaseCrash.log(String message)를 사용하여 붕괴 보고서에 로그를 저장하고 붕괴 보고서를 보낼 때 로그를 보낼 수 있다.

※ 저축하여 발송한 로그 내용
저는 예전부터 Timber를 이용해서'개발 중에 LogCat을 표시하고 발표할 때 일정 이상의 로그를 Crashlytics의 로그에 저장하고Timber.e() 보낼 때 보낸다'는 형식으로 설치했기 때문에 다음과 같습니다.나는 나무반에서 사용하고 있다.
TimberTree.java
private static class CrashReportingTree extends Timber.Tree {
    @Override
    protected void log(int priority, String tag, String message, Throwable t) {
        if (priority == Log.VERBOSE || priority == Log.DEBUG) {
            return;
        }
        if (priority != Log.ERROR) {
            Crashlytics.getInstance().core.log(message);
            FirebaseCrash.log(message);
            return;
        }
        Throwable throwable = t;
        if (throwable == null && !TextUtils.isEmpty(message)) {
            throwable = new Exception(message);
        }
        Crashlytics.getInstance().core.logException(throwable);
        FirebaseCrash.report(throwable);
    }
}
이렇게 하면 필요한catch처Timber.e()에서 프로그램이 붕괴되지 않을 때도 보고서를 보낼 수 있다.

참조: Timber 정보

  • JakeWharton/timber: A logger with a small, extensible API which provides utility on top of Android's normal Log class.
  • Android의 로그 출력을 좋게 해줍니다 #potatotips9 //Speaker Deck
  • 설정을 설정할 때 잘못된 부위를 정확하게 식별할 수 있기를 바란다


    "try~catch도 붕괴 보고서를 보내고 싶다"는 컨트롤러 화면에도 일부 나타나지만 모호화 (proguard) 를 하면 창고 추적을 제대로 할 수 없습니다.따라서 설정 파일에 다음 내용을 기술해야 합니다.
    proguard-rules.pro
    -keepattributes *Annotation*
    -keepattributes SourceFile,LineNumberTable
    -keep public class * extends java.lang.Exception
    -printmapping mapping.txt
    
    실제로는 위의 3행이라기보다는 -keepattributes SourceFile,LineNumberTable이면 좋겠다. 모두 넣어라.Crashlytics도 같은 설정을 지정했습니다. .
    맨 아래는 스택 추적 보조 맵 파일 생성 설정입니다.app/build/outputs/mapping/release/ 근처에서 mapping.txt로 생성되니 Firebase 콘솔 화면에 올려주세요.

    그렇긴 한데 이거 할 때마다 귀찮아요. API가 있으면 CI를 올리려고... (미조사)

    라이브러리 배치 증가 apk 용량


    예시 항목에 대해 "아무것도 추가하지 않음", "gms만 추가", "firebase crash"
    "의 3가지 Relase-apk의 비교.minifyEnabled=true.
    조건
    용량
    추가 안 함
    887,244
    gms만 추가
    1,696,813
    Firebase crash에 추가
    1,710,199
    Firebase crash 자체는 15k 정도이고 gms 자체는 800k 정도 증가했다.
    여기서 마치겠습니다.

    좋은 웹페이지 즐겨찾기