Firebase crashlytics не показывает сбои - PullRequest
0 голосов
/ 02 января 2019

Хотел получить отчет о сбое из firebase, когда приложение выйдет из строя. Можно ли разделить журналы режима отладки отдельно и журнал аварийного завершения производства в аварийном отказе Firebase? ... потому что не совсем понятно, когда мы получаем аварийный отказ от производственного или отладочного теста. Кроме того, firebase не будет отображать отчет о сбое на консоли после сбоя. Что я должен сделать, чтобы получить актуальный отчет о сбое? Есть ли другой способ получить отчет о сбое, кроме пожарной базы? Я обновил библиотеки, необходимые для аварийного отключения Firebase. и последовавший урок - https://firebase.google.com/docs/crashlytics/get-started#android

Ответы [ 2 ]

0 голосов
/ 02 января 2019

Firebase не будет делать различий между журналами отладки и производственными версиями / сбоями при сбое, если вы установили автоматический сбор журналов.Вы можете использовать библиотеку журналов для отправки журналов и аварий, только если приложение build.gradle имеет debug: fasle, т.е. production.Вы можете посмотреть библиотеку журналов Timber, в которой есть отличный пример добавления отчетов о сбоях.https://github.com/JakeWharton/timber

Вы должны отключить автоматическую инициализацию аварийных сбоев в манифесте, чтобы иметь возможность контролировать отправку сбоев на firebase

<meta-data
            android:name="firebase_crashlytics_collection_enabled"
            android:value="false" />

Затем в onCreate класса вашего приложения вы проверяете, BuildConfig.DEBUG верно, вы не будете инициализировать крашлайты, поэтому ваши журналы отладки и исключения не попадут в базу данных огня, что приведет только к сбоям в работе.

Для древесины, когда вы хотите поместить журналы и аварии в базу данных огня, вы можете использовать это дерево:

/**
     * {@link Timber.Tree} using {@link Crashlytics} as crash reporting
     */
    private static class CrashReportingTree extends Timber.Tree {

        CrashReportingTree(Context context) {
            CrashlyticsCore core = new CrashlyticsCore.Builder()
                    .disabled(BuildConfig.DEBUG)
                    .build();
            Fabric.with(context, new Crashlytics.Builder().core(core).build());
        }

        @Override
        protected void log(int priority, String tag, @NonNull String message, Throwable t) {
            // don't report log to Crashlytics if priority is Verbose or Debug
            if (priority == Log.VERBOSE || priority == Log.DEBUG) {
                return;
            }
            Crashlytics.log(priority, tag, message);

            if (t != null) {
                if (priority == Log.ERROR) {
                    Crashlytics.logException(t);
                }
            }

        }
    }

В режиме отладки не следует отправлять сбои на firebase, поскольку вы можете локально проверять журналы отладки.

0 голосов
/ 02 января 2019

Можно ли разделить журналы режима отладки отдельно и журнал аварийного завершения производства отдельно в аварии Firebase?

Это обычная практика или, возможно, даже рекомендуется создавать отдельный проект для тестирования и производства. Загрузите и поместите google-services.json в папку со вкусом сборки

  • ~/app/src/release/google-services.json
  • ~/app/src/debug/google-services.json

Даже если у вас есть только один проект Firebase для тестирования и производства, вы можете отфильтровать журналы по идентификатору приложения, если вы устанавливаете суффикс идентификатора проекта для разновидности сборки разработки:

~ / приложение / build.gradle

buildTypes {
  release {
  }
  debug {
    applicationIdSuffix '.debug'
    versionNameSuffix '-dbg'
  }
}

Здесь вы можете увидеть различные вкусы, доступные в Crashlytics

enter image description here

Кроме того, firebase не будет отображать отчет о сбое на консоли после сбоя.

В первый раз, когда вы настраиваете сбои, может пройти некоторое время, прежде чем данные появятся на приборной панели. Но если прошло более 24 часов, скорее всего, он не настроен должным образом. Попробуйте явно вызвать сбой , чтобы убедиться, что он работает нормально.

Button crashButton = new Button(this);
crashButton.setText("Crash!");
crashButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {
        Crashlytics.getInstance().crash(); // Force a crash
    }
});

Есть ли другой способ получить отчет о сбое, кроме firebase?

Да, у вас может быть несколько инструментов для отчетов о сбоях, если у вас есть такая необходимость. Возможно, вы можете создать класс-оболочку для отчетов о сбоях, где вы абстрагируете вызов Crashlytics, и вы можете добавить или изменить базовую платформу отчетов там.

...