web-dev-qa-db-fra.com

react-native-firebase crashlytics n'apparaissant pas sur le tableau de bord firebase

J'utilise crashbase firebase. Je provoque un crash en faisant

firebase.crashlytics().crash()

et je ne vois pas le rapport de plantage sur le tableau de bord Firebase. Le crash fonctionne parce que sur Android j'obtiens cet écran enter image description here

et sur ios l'application se fige et je suis amené à cette page sur xcode

enter image description here

Mais sur le tableau de bord crashlytics sur Firebase, les plantages n'apparaissent pas.

Y a-t-il une raison pour laquelle les plantages n'apparaissent pas sur le tableau de bord crashlytics? J'utilise react-native-firebase. Je sais que je l'ai installé correctement parce que j'ai essayé de provoquer les plantages nativement sur Android avec Java et je suis en mesure de voir le crash sur crashlytics.

10
Tenzin Choklang

TL; DR: exécutez react-native run-Android --variant=release Pour que Crashlytics commence à fonctionner correctement, en supposant que vous avez tout configuré correctement (ce qui semble être le cas depuis firebase.crashlytics().crash() plante votre application.)

Veuillez noter - pour que react-native run-Android --variant=release Fonctionne correctement, vous aurez besoin de configurer votre APK pour les versions de version selon les instructions ici: https://facebook.github.io/react-native/docs/signed-apk-Android

PREUVE DE CRASHLYTIQUE RAPPORTANT CORRECTEMENT DÈS L'ÉCRITURE DE CETTE RÉPONSE . Je n'ai jamais été aussi heureux de voir la note de mes utilisateurs sans crash diminuer :)

Faites moi savoir si vous avez des questions! La configuration de la signature peut être un peu déroutante, alors faites-moi savoir si vous avez des questions.


C'est un problème très frustrant, mais heureusement, j'ai trouvé la solution et je suis exactement dans le même bateau que vous.

Vous voyez ce grand écran rouge? C'est React La manière native de vous dire, pendant le développement, que vous avez fait une sorte d'erreur. Ce qui n'est pas immédiatement évident, c'est que cet écran rouge empêche les erreurs de se produire jusqu'à notre erreur outils de rapport. L'exécution de votre application en mode de publication empêchera React Native d'afficher cet écran rouge, et vos outils de rapport d'erreurs pourront signaler des plantages.


Comme Gian a souligné dans une autre réponse à cette question il semble que firebase.crashlytics().crash() ne fonctionne pas correctement. Cependant, ce n'est pas tout à fait vrai. Chaque fois que vous travaillez en mode débogage (chaque fois que vous pouvez voir l'écran rouge, vous êtes dans ce que j'appelle le mode débogage), Crashlytics et d'autres outils de rapport d'incident ne peuvent pas intercepter les exceptions natives, mais ils peuvent intercepter les exceptions Javascript. Une fois que vous exécutez l'application en mode de publication, comme je l'ai décrit ci-dessus, Crashlyitcs pourra intercepter les exceptions natives. Si vous regardez Crashlytics.crash (), il s’agit en fait d’un plantage écrit intentionnellement en Java. Pour que Crashlytics "entende" réellement que l'application est en panne en raison d'une exception native, vous devez être exécuté en mode de publication, pas en mode débogage. Désolé d'avoir battu le cheval mort ici, mais j'ai étudié ce problème toute la matinée et j'ai jugé pertinent de partager ces informations avec d'autres personnes qui subissent le même sort que moi.

8
lustig

Dans iOS, vous devez dissocier l'application de Xcode afin qu'elle ne se fige pas en cas de panne.

  1. Créez l'application.
  2. Arrêtez le projet dans Xcode sans arrêter le simulateur ou l'appareil.
  3. Ensuite, vous pouvez planter sans geler Xcode.
  4. Rouvrez l'application afin que Firebase puisse envoyer le rapport de plantage.

    Pour plus de détails sur la façon de procéder, consultez le tutoriel vidéo qui est présenté dans la documentation Firebase.

2
Lucas Garcez

firebase.crashlytics (). crash () ne fonctionne pas correctement.

J'ai délibérément créé un bug pour simuler un crash lorsque j'appuie sur un bouton et que ce crash a été détecté et affiché immédiatement dans le tableau de bord Crashlytics.

Ej: Je travaille avec React Native donc j'ai changé un this.props.etc ... en this.state.etc ... pour créer un "undefined n'est pas une exception de fonction").

J'espère que ça aide!

0
Gian Pigatto

Il va certainement vous aider

  1. Allez dans Modifier le schéma
  2. Exécuter -> Info
  3. Modifiez la configuration de construction à libérer.
  4. Maintenant, lancez l'application

    Et plantez votre application manuellement. Maintenant, vous pouvez vérifier votre tableau de bord crashlytics

Essayez aussi

  1. Lancez votre simulateur/iPhone
  2. Appuyez sur stop
  3. Lancez votre application et forcez un crash
  4. Relancez l'application depuis le simulateur/iPhone
  5. Voir le rapport de plantage dans le tableau de bord de crashlytics.