web-dev-qa-db-fra.com

Crashlytics ne montre pas les accidents

Je viens d'installer Crashlitycs en utilisant this instruction officielle.

J'ai défini le format d'informations de débogage sur «DWARF avec fichier dSYM» pour Debug et Release et désactiver le bitcode (certaines personnes ont écrit que cela pourrait aider):

 enter image description here

AppDéléguer:

Fabric.sharedSDK().debug = true
Fabric.with([Crashlytics.self])

Pour simuler un crash, j'utilise

Crashlytics.sharedInstance().crash()

et

var ggg: Int!
print(ggg)

Crashlitics collecte des informations sur les sessions. Par exemple, il met à jour les informations sur les versions des ensembles:

 enter image description here

Donc, la connexion avec Crashlitics fonctionne. Cependant, les informations sur le crash sont vides:

 enter image description here

J'utilise XCode 8 et iOS 9/10. Qu'est ce que je fais mal?

MODIFIER:

Je l’ai testé sur un simulateur et un appareil sans connexion au débogueur XCode (c'est-à-dire en lançant à partir de l'écran sumulator/device)

Enfin, j'ai reçu des rapports Crashlytics 7 à 8 heures après un crash. Je les attendais plus tôt car selon documentation :

Dans quelques minutes, le plantage devrait apparaître sur votre Fabric Tableau de bord.

Cependant, je n'ai pas reçu tous les accidents que j'attendais. Au cours de mes expériences, j'ai essayé différentes manières d'initialiser Crashlytics:

Fabric.with([Crashlytics.self])
and
Fabric.with([Crashlytics.self()])

Cela pourrait-il être la raison? J'ai également trouvé la même question sans réponse question .

19
Avt

Vérifié les termes suivants,

  1. Assurez-vous que la ligne du SDK Crashlytics correspond à toutes les autres lignes du SDK tiers. (Il doit être le dernier appelé dans votre méthode appDidFinishLaunching.) 

  2. Forcer un crash puis relancer l'application. Xcode doit être déconnecté pour l'empêcher d'intercepter le rapport d'incident. Pour déconnecter Xcode, suivez les instructions ici

  3. Si vous utilisez [Crashlytics sharedInstance] crash]; pour tester le blocage, assurez-vous qu'il ne s'agit pas de la méthode appDidFinishLaunching. 

Ceux-ci sont déjà mentionnés dans la section support, en voici d'autres -

  1. Enregistrement dans l'organisation -> Votre application -> dSYM manquant, affiche-t-il un fichier dSYM manquant?

 enter image description here

si oui, alors faites l'étape suivante

  1. Clic droit sur vos archives -> Afficher dans le Finder -> Clic droit sur le fichier et cliquez sur Afficher le contenu du paquet
  2. Faites un clic droit sur le fichier dSYM -> Afficher le contenu du paquet -> Contenu -> Ressources -> DWARF (Open in terminal)
  3. Exécutez la commande dwarfdump --uuid "nom de fichier que vous avez vu dans le dossier nain"

 enter image description here

Ceci affichera tous les UUID associés. Et si un UUID de la liste correspond à celui mentionné dans l'identifiant dSYM manquant, il vous suffit de compresser le dossier dSYM et de le télécharger sur le segment dSYM manquant crashlytics.

Cette étape est importante car le fichier dSYM que nous extrayons de l'organisateur ne contient parfois pas l'UUID correct. Et après avoir téléchargé le mauvais, nous attendons ses mises à jour. Il est donc préférable de vous assurer que vous téléchargez le bon fichier dSYM.

Outre les éléments susmentionnés, la propriété Bitcode et le format des informations de débogage dans les paramètres de construction affectent également le rapport d'incident.

24
Rahul Verma

Vous devez exécuter l'application, mais pas à partir de Xcode. 

Si vous utilisez un appareil, lancez simplement l'application sans connexion USB . Si vous utilisez un simulateur, arrêtez l'exécution de l'application à partir de Xcode. Puis rouvrez-le via un clic de souris.

Ensuite, accédez à la buttonPress ou function qui appellera la Crashlytics.sharedInstance().crash().

Ensuite, rouvrez l'application à nouveau après un crash (vous pouvez le connecter à la console si vous le souhaitez) Cette étape est importante car crashlytics enregistre le rapport d'incident juste avant la fermeture de l'application. Lors de la prochaine ouverture de l'application, l'application publiera le rapport sur crashlytics.

Les documents ici expliquent également le problème de dépannage.

8
Zac Kwan

L'implémentation du délégué Crashlytics sans appeler le gestionnaire d'achèvement est une autre cause potentielle d'incidents bloquant le téléchargement: 

// MARK: CrashlyitcsDelegate
func crashlyticsDidDetectReport(forLastExecution report: CLSReport, completionHandler: @escaping (Bool) -> Void) {
    // Last launch we crashed!
    }
}

Au lieu de cela, cela devrait ressembler à ceci: 

// MARK: CrashlyitcsDelegate
func crashlyticsDidDetectReport(forLastExecution report: CLSReport, completionHandler: @escaping (Bool) -> Void) {
    // Last launch we crashed!
         completionHandler(true)
    }
}
2
chadnewbry

Vérifiez à nouveau dans vos paramètres de construction que votre format d'informations de débogage est «DWARF avec fichier dSYM» pour les procédures de débogage et de publication

2
Parth