Je voulais obtenir un rapport d'incident de Firebase une fois l'application plantée. Est-il possible de séparer les journaux de mode de débogage et les journaux de crash de production en cas de crash de firebase? ... parce que ce n'est pas vraiment clair quand nous avons un crash de production ou de test de débogage. De plus, Firebase ne reflètera pas le rapport de plantage sur la console après un plantage. Que dois-je faire pour obtenir un rapport d'incident à jour? Existe-t-il un autre moyen d'obtenir un rapport de plantage autre que Firebase? J'ai mis à jour les bibliothèques requises pour les crashlytics de firebase. et suivi du didacticiel - https://firebase.google.com/docs/crashlytics/get -started # android
3 Réponses :
Est-il possible de séparer les journaux du mode de débogage et le journal des plantages de production en cas de crash de firebase?
Il est courant, voire même recommandé, de créer un projet distinct pour les tests et la production. Téléchargez et placez le
google-services.json
dans votre dossier de version de version
~/app/src/release/google-services.json
~/app/src/debug/google-services.json
Même si vous n'avez qu'un seul projet Firebase pour le test et la production, vous pouvez filtrer vos journaux par l'ID de l'application si vous configurez un suffixe d'ID de projet pour la version de développement: p >
~ / app / build.gradle
Button crashButton = new Button(this); crashButton.setText("Crash!"); crashButton.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Crashlytics.getInstance().crash(); // Force a crash } });Ici vous pouvez voir les différentes saveurs disponibles dans Crashlytics
De plus, Firebase ne reflétera pas le rapport de plantage sur la console après un plantage.
La première fois que vous configurez des crashlytics, cela peut prendre un certain temps avant que les données n'apparaissent dans le tableau de bord. Mais si cela fait plus de 24 heures, il est probable qu'il ne soit pas correctement configuré. Essayez de déclencher explicitement un plantage pour vous assurer que cela fonctionne correctement .
buildTypes { release { } debug { applicationIdSuffix '.debug' versionNameSuffix '-dbg' } }Existe-t-il un autre moyen d'obtenir un rapport d'erreur autre que Firebase?
Oui, vous pouvez avoir plus d'un outil de rapport de plantage si vous en avez besoin. Vous pouvez peut-être créer une classe wrapper pour les rapports d'incident où vous résumez l'appel à Crashlytics et vous pouvez y ajouter ou modifier la plate-forme de rapport sous-jacente.
Merci pour vos conseils. Je voudrais mettre en œuvre votre solution et vous informer si une aide est nécessaire.
Pouvez-vous m'expliquer comment créer plusieurs fichiers google-services.json d'un même projet? J'ai créé deux versions internes et de production, je dois donc créer deux fichiers google-services.json en fonction des identifiants d'application. Dois-je créer deux projets différents sur Firebase?
Vous obtenez un google-services.json
pour chaque application que vous ajoutez à Firebase. Donc, de la même manière que vous avez ajouté la première application à Firebase, vous répétez pour la saveur avec applicationIdSuffix
. C'est la même procédure que vous ayez deux projets Firebase distincts ou que vous ajoutiez les deux versions au même projet.
Je crée un nouveau projet sur Firebase pour obtenir un nouveau fichier google-service.json.
Oui, veuillez consulter la documentation pour savoir comment le configurer.
Est-ce obsolète? En utilisant un applicationIdSuffix pour ma version de débogage, je constate que rien n'est téléchargé sur la console Google Crashlytics. La version de version sans suffixe fonctionne comme prévu avec des rapports apparaissant presque instantanément dans la console.
Avez-vous différents projets à développer / production ou rapporter au même projet Firebase? Avez-vous vérifié le sélecteur / filtre d'application pour les rapports? Tout le reste fonctionne bien pour votre version de débogage?
Firebase ne fera pas la différence entre les journaux / plantages des versions de débogage et de production dans Crashlytics si vous avez défini la collecte automatique des journaux. Vous pouvez utiliser une bibliothèque de journalisation pour envoyer uniquement des journaux et des plantages si l'application build.gradle a debug: fasle, c'est-à-dire production. Vous pouvez consulter la bibliothèque de journalisation Timber qui présente un excellent exemple d'ajout de rapports de plantage. https://github.com/JakeWharton/timber
Vous devez désactiver l'initialisation automatique de crashlytics dans le manifeste pour avoir le contrôle lorsque des plantages sont envoyés à Firebase
/** * {@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); } } } }
Ensuite, dans onCreate
de votre classe Application, vous vérifiez si BuildConfig.DEBUG est vrai, vous n'initialiserez pas crashlaytics donc vos journaux de débogage et les exceptions n'iront pas dans firebase, ce qui n'entraînera que des plantages de production.
Pour le bois lorsque vous voulez mettre des journaux et des plantages dans firebase, vous pouvez utiliser cette arborescence:
<meta-data android:name="firebase_crashlytics_collection_enabled" android:value="false" />
Pour le mode débogage, vous ne devez pas envoyer de plantages à Firebase car vous pouvez vérifier les journaux de débogage localement.
Merci beaucoup pour votre brève description. Je voudrais d'abord vérifier, cela fonctionne correctement pour moi ou non. Faites-vous savoir si j'ai besoin d'aide.
Après avoir effectué les paramètres pour la migration vers le nouveau SDK, il est important d'éviter l'erreur suivante:
Tentative d'envoi d'un rapport d'erreur au moment de l'incident.
Cela peut être causé en forçant un plantage (sans bouton d'écoute dans mon cas) avant que FirebaseCrashlytics envoie les rapports, c'est-à-dire que le téléchargement de Crashlytics Reports Endpoint est terminé . p>
Attempting to send 1 report(s) FirebaseCrashlytics: Settings result was: 200 FirebaseCrashlytics: Adding single file 5EDA9D7....cls to report 5EDA9D7... FirebaseCrashlytics: Sending report to: https://reports.crashlytics.com/spi/v1/platforms/android/apps/.../reports FirebaseCrashlytics: Crashlytics Reports Endpoint upload complete: 5EDABB42 ...
1) Première étape: NE PAS forcer un plantage et exécuter l'application. Observer comment dans le logcat Crashlyticis il est correctement initialisé.
private fun setupCrashlytics() { //throw RuntimeException("Test crash") }
2) Deuxième étape: forcer un crash (avec un bouton ou directement).
FirebaseCrashlytics: Crashlytics completed exception processing. Invoking default exception handler. FirebaseCrashlytics: Attempting to send crash report at time of crash...
Remarque: La seule chose nécessaire pour générer un rapport est ce code en plus des dépendances. De plus, vous pouvez vous connecter à des clés personnalisées avec FirebaseCrashlytics.getInstance()
.
Ensuite, exécutez l'application et vérifiez les éléments suivants:
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) setupCrashlytics() ... } private fun setupCrashlytics() { throw RuntimeException("Test crash") //TODO: Clean }
À ce stade, le processus d'exception est journalisé sur le serveur Firebase mais les rapports n'ont pas encore été envoyés à la console, c'est-à-dire que le téléchargement est incomplet.
3) Enfin, nous nettoyons ou commentons le crash crash
... FirebaseCrashlytics: Update app request ID: 1d62cb... FirebaseCrashlytics: Result was 204. Crashlytics Reports Endpoint upload complete
Lancez l'application et vérifions:
$ adb devices $ adb shell setprop log.tag.FirebaseCrashlytics DEBUG $ adb logcat -s FirebaseCrashlytics
Cela garantit que le rapport a atteint la console. p >
GL
firebase met 24h pour afficher les rapports de plantage.
Merci pour votre réponse rapide, mais je n'ai pas eu de crash après 24h.Dans ce cas, que dois-je faire?
@Urvishrana, je pense que ce n'est pas vrai, dans mon cas, les plantages se sont mis à jour dans 5 minutes
oui @Zlytherin généralement cela reflète en quelques minutes.
@MeeraPotdar quel tutoriel avez-vous suivi? et qu'avez-vous fait jusqu'ici? veuillez mettre à jour la question.
@Zlytherin quand j'ai testé, cela a pris 24 heures
Quel SDK Firebase Crash Reporting utilisez-vous?
@Rumit Patel, je n'avais encore suivi aucun tutoriel spécifique.
@MeeraPotdar suivez ce firebase.google.com/docs/crashlytics/get-started# android
@MeeraPotdar, modifiez votre question et publiez les deux fichiers
build.gradle
Veuillez vérifier les build.gradles partagées dropbox.com/s/8b0sukk45hckf3u/build. gradle? dl = 0 dropbox.com/s/wonj78k8yt9pr9i /build.gradle_project?dl=0