Crashlytics non invia il rapporto sugli arresti anomali da iPhone


86

Ho configurato Crashlytics nella mia unica applicazione iOS e ho installato l'applicazione su un dispositivo reale. Il mio dashboard di Crashlytics lo sta visualizzando, ho aggiunto l'app con successo. Tuttavia, non invia il rapporto sugli arresti anomali. La mia velocità di Internet non è così buona. Ma posso controllare le mie e-mail da questo dispositivo. Qualcuno può indovinare, dov'è il problema?


5
Ho lo stesso problema con il servizio Crashlytics. I rapporti sugli arresti anomali dal dispositivo non vengono mai inviati (nella mia esperienza), solo dal simulatore. Ho finito per utilizzare la segnalazione di crash di Crittercism e la gestione degli errori.
Sam Spencer

Lo stesso accade a me. Prova la tua applicazione con un altro dispositivo rispetto al dispositivo di sviluppo effettivo, in questo modo puoi ottenere rapporti sugli arresti anomali.
Samet DEDE

Sì, sto usando il mio dispositivo di sviluppo. Sta creando il problema?
farhad rubel

1
Senza una descrizione completa della configurazione o un progetto di prova è impossibile rispondere. Dovresti contattare l'assistenza di crashlytics. L'ipotesi selvaggia non aiuta.
Kerni

3
Sono così stupito che qualcuno di Crashlytics abbia visto il mio post su StackOverflow e mi abbia contattato via e-mail; Mi sta aiutando a risolvere questo problema. Vediamo cosa succede.
farhad rubel

Risposte:


84

Il debugger Xcode NON consente a Crashlytics di elaborare rapporti sugli arresti anomali. Sì, sembra strano anche a me quando ho letto quella prima volta, ma è un dato di fatto ( Fonte ). Questo è il motivo per cui non vediamo mai il rapporto sugli arresti anomali quando:
- App in esecuzione in Simulator
- App in esecuzione su iDevice compilando ed eseguendo direttamente da Xcode con il debugger attivo.

Per assicurarti che venga segnalato un arresto anomalo durante il test ( copiato dal sito di supporto di Crashlytics ):
1. Avvia il simulatore
2. Premi stop
3. Avvia la tua app e forza un arresto
4. Riavvia l'app dal simulatore
5. Vedi il rapporto sugli arresti anomali nel dashboard web.

MODIFICARE:

Aggiunto un riferimento; Crashlytics fornisce anche un breve articolo su un modo rapido per forzare un arresto anomalo .


6
Questo mi ha aiutato. L'ho scoperto anche in alcuni casi. Crashlytics non invierà il rapporto di arresto anomalo a meno che l'applicazione non venga riaperta. Per ribadire: l'utente sperimenta un arresto anomalo. L'utente riapre l'applicazione. Crashlytics invia il precedente rapporto sugli arresti anomali.
tambykojak

1
@tambykojak ciò è probabilmente dovuto al fatto che i crash di iOS sono piuttosto volatili nella maggior parte dei casi e il percorso più sicuro è inviare un rapporto di arresto anomalo al caricamento successivo dell'app anziché inviarlo immediatamente. Molti strumenti di Crash Reporting utilizzano questo paradigma su iOS e altri gestori di crash non VM.
pixelknitter

2
Grazie. Questo dovrebbe essere contrassegnato come risposta corretta :)
iMemon

Devo caricare dei file dsimi in questo caso? In caso affermativo, dove posso trovarli?
SoliQuiD

i collegamenti sono morti.
luky

67

È tardi ma lavora al 100%

Apporta alcune modifiche alle impostazioni di compilazione del progetto come nell'immagine sottostante

inserisci qui la descrizione dell'immagine

e segui queste istruzioni.


Anche dopo aver disabilitato Bitcode, mi mancavano ancora errori dSYMS di tanto in tanto e il 100% delle volte durante il debug con il simulatore. Questo l'ha risolto. Grazie.
user3344977

Modificando questa impostazione sono stato in grado di vedere arresti anomali nella piattaforma
Firebase

21

Il motivo principale per cui un reporter di crash non funziona su iOS è dovuto all'interferenza di diversi reporter di crash. Tuttavia, con Crashlytics in particolare potrebbe esserci qualcosa di specifico per loro che causa la mancata segnalazione del rapporto sull'arresto anomalo.

Il debugger di Xcode NON consente a Any Crash Reporter di elaborare rapporti sugli arresti anomali. Questo perché XCode sovrascrive qualsiasi hook nelle call back di gestione dei crash. Questo accade solo quando:

  • app in esecuzione in Simulator (con debugger attivato)
  • eseguire l'app su iDevice compilando ed eseguendo direttamente da Xcode con il debugger attivo.

Per assicurarti che venga segnalato un arresto anomalo durante il test ( http://support.crashlytics.com/knowledgebase/articles/92523-why-can-ti-have-xcode-connected- ):

  1. Avvia il simulatore
  2. Premere stop
  3. Avvia la tua app e forza un arresto anomalo
  4. Riavvia l'app dal simulatore
  5. Visualizza il rapporto sugli arresti anomali nella dashboard web.

Anche se un video super vecchio è ancora rilevante, ecco un video dei passaggi precedenti (esempio da Crittercism): https://www.youtube.com/watch?v=sU6Su3PBFH4


1
Crashlytics si disabilita quando rileva un debugger collegato. Non perché non funzionerà, ma perché impedirà al debugger di funzionare correttamente. Crashlytics utilizza gli stessi meccanismi utilizzati dal debugger stesso e sarebbe davvero frustrante per l'SDK rovinare il normale flusso di debug. Per riferimento, ho scritto la maggior parte dell'SDK di Crashlytics.
Mattie

9

Per me, il problema era che il dispositivo era collegato al mio Mac :) Da questa fonte :

Inoltre, se il tuo dispositivo è connesso al Mac, interverrà anche il debugger di XCode. Quindi scollega il dispositivo prima di eseguire il test :)


7

Ho trovato la soluzione utilizzando i seguenti passaggi
1. Vai a Modifica schema 2. Esegui -> Informazioni 3. Modifica configurazione build per rilasciare. Ora esegui l'app in crash. Riceverai posta.


6

Recentemente abbiamo riscontrato questo problema e ho scoperto che da qualche parte lungo il percorso lo script di build è stato rimosso. Aggiungendolo di nuovo con quanto segue abbiamo risolto il problema:
./Crashlytics.framework/run <your_api_key> <build_secret>

Nota: quando usi Cocoapods, vorrai quanto segue invece di quanto sopra ( fonte ): ./Pods/CrashlyticsFramework/Crashlytics.framework/run

Aggiunta di uno script di compilazione:

  1. Per aggiungere una fase di creazione dello script di esecuzione in Xcode 6, selezionare la destinazione dell'applicazione nel progetto, quindi selezionare "Fasi di compilazione".
  2. Fare clic sulla piccola icona "più" e selezionare "New Run Script Build Phase".
  3. Ora dovresti vedere una sezione Esegui script nel mezzo delle opzioni della fase di costruzione, come mostrato sopra.
  4. All'interno del corpo della fase Esegui creazione script, incolla lo script

La citazione sopra proviene dal tutorial visivo di Crashlytics , a cui si fa riferimento in questo post .

Nota: originariamente ho pubblicato questa risposta letteralmente per il codice di errore di Crashlytics: 202 durante l'invio dei file .


Questo sembra avermi aiutato.
Chris Prince

1
ho usato fabric in precedenza per l'integrazione di twitter ora voglio crashlytics anche ho aggiunto framework e ho seguito tutte le istruzioni ma non ho ricevuto alcun rapporto sugli arresti
anomali

@iOS_Ramesh Mi piacerebbe provare ad aiutarti, ma senza saperne di più sarà difficile. Per fare ciò dovresti aprire una nuova domanda che delinei dove ti trovi (il passaggio che hai seguito per l'integrazione, eventuali frammenti di codice appropriati e qualsiasi feedback che ricevi da Crashlytics o dalla console).
James Nelson

Ho già pubblicare una nuova domanda ... stackoverflow.com/questions/30215049/...
RameshIos

1
Grazie per il suggerimento. Abbiamo controllato ["Release" = "$ {CONFIGURATION}"] nel nostro Run Script e abbiamo rinominato la nostra configurazione Release.
Marián Černý

4

Dal sito RayWenderlich:

Non riceverai alcun rapporto sugli arresti anomali se Xcode intercetta l'evento di arresto anomalo! Per far funzionare tutti gli esempi seguenti, devi creare ed eseguire l'applicazione, quindi fare clic sul pulsante di arresto su Xcode. In questo modo avrai l'ultima versione installata sul dispositivo. Una volta fatto, puoi avviare l'app sul dispositivo stesso e quindi bloccarlo quanto vuoi! Tutti gli arresti anomali sul tuo dispositivo iOS verranno rilevati e inviati al componente server del servizio che hai integrato nell'app. I rapporti sugli arresti anomali vengono solitamente inviati al server la prossima volta che avvii l'app, quindi i passaggi da seguire per generare un rapporto sugli arresti anomali sul server sono i seguenti: Compila ed esegui su Xcode. Premere il pulsante di arresto. Esegui l'app sul tuo dispositivo iOS. Fai in modo che l'app si blocchi. Esegui di nuovo l'app.



3

Assicurati di non forzare l'arresto troppo presto.

Impostato [Crashlytics sharedInstance].debugModesu YES;

Guardare per

Crashlytics] Settings loaded

nei log della console Xcode.

Quindi forza l'arresto e riavvia l'app, e l'arresto verrà segnalato ora.


3

Ho riscontrato un problema simile durante il tentativo del codice di arresto anomalo del test.

Crashlytics.sharedInstance().crash()

Stavo eseguendo la mia app da un dispositivo, senza Xcode, e il crash non si presentava su Crashlytics Dashboard. Quello che ha funzionato per me è stato il seguente suggerimento dal sito Web di Crashlytics:

  • Assicurati di avviare l'app dopo averla bloccata, in modo che l'arresto possa essere caricato

Ho commentato la chiamata crash () sopra e ho rieseguito l'app. Poi l'incidente è apparso nella dashboard.


2

Questo è per xcode 9, da crashlytics 3.4.0 PASSO 1 PASSO 2

Dopo averlo fatto, sii paziente e attendi qualche minuto.


1

Hai provato a eseguire [[Crashlytics sharedInstance] crash]su un dispositivo e vedere se viene segnalato? Ci sono alcuni motivi per cui Crashlytics potrebbe non funzionare, inclusi altri reporter di crash ecc.


No, sto usando int * x = NULL; * x = 42; codice per visualizzare il rapporto sugli arresti anomali. Inoltre, la mia app si blocca anche per diversi modelli di dati di base.
farhad rubel

1

Se non carichi il file dSYM, Crashlytics non mostrerà il tuo arresto anomalo anche se il rapporto è stato caricato correttamente.

Potresti incorrere in questo problema, se hai impostato il tuo build-script per essere eseguito solo sul tuo server CI. Quindi, se hai copiato la tua app sul telefono tramite xcode e la esegui senza essere allegato al debugger, il report verrà caricato ma ignorato, a causa del file dSYM mancante.



1

A volte, è necessario del tempo prima che i log vengano visualizzati. Sono in grado di trovarli dopo 15-20 minuti


0

Uno dei problemi che ritengo che nella fase di esecuzione dello script, dovrebbe essere una fase di esecuzione dello script separata per CrashLytics. Quando ha avuto lo script di esecuzione

./Fabric.framework/run

Con alcuni dei miei altri script, tutto era ok, rapporto di visualizzazione del registro di CrashLytics inviato, ma non c'era nulla nell'interfaccia web.

Quando aggiungo un'altra fase di esecuzione dello script solo con Fabric Run, appare come una magia :)

Il mio primo tentativo è stato con cocoapods, ma non ha funzionato. Quando aggiungo manualmente tutto il framework e una fase di script di esecuzione separata che ha funzionato.


-1

Questo ha funzionato per me

Se stai testando su iDevice, scollega semplicemente iDevice con il tuo Xcode ed esegui la tua app. Ora, se si è bloccato, verrà aggiornato sulla dashboard.


-3

Ho risolto deselezionando l'opzione "Esegui script solo durante l'installazione" in Esegui script (uno per Fabric (crashlytics))

inserisci qui la descrizione dell'immagine


Questo è solo lo script che carica i simboli su Crashlytics; come si risolve il problema dei rapporti sugli arresti anomali non inviati? Quali passaggi devi eseguire per evitare di utilizzare Crashlytics quando i simboli non sono stati caricati? Questa risposta è fuorviante e semplicemente sbagliata.
Droppy
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.