2016-05-29 21 views
12

Nella mia pagina di segnalazione di arresto di Firebase non riesco a trovare tutte le informazioni sugli arresti anomali (ad esempio il numero di righe, il file e così via). ho pensato che può essere perché si diceCarica file di simboli

Upload file di simboli per symbolicate future tracce di stack per UUID - - - - ***

mi diceva di

Utilizzo della riga di comando, navigazione t o la cartella di progetto Xcode ed eseguire il seguente: ./Pods/FirebaseCrash/batch-upload - - - - ***

Purtroppo quando provo ad eseguire quel comando in il mio progetto Xcode ottengo il seguente messaggio:

- - - - ***: avviso: nessun file eseguibile o bundle Fine.

e nulla cambia in Firebase. Forse è a causa del bitcode abilitato? Come posso risolverlo?

P.S. : Ho sostituito il mio UUID con - - - - *** per motivi di sicurezza.

+0

Ho avuto lo stesso problema quando nelle impostazioni della mia build avevo un flag su "Strip debug symbol" in questo modo Dsym non è stato creato e non è stato trovato sul batch-upload. –

risposta

9

Questa risposta è se non stai utilizzando CocoaPods.

Se non si utilizza CocoaPods sono necessari alcuni file dalla directory Pod che non sono inclusi nel set standard di librerie Firebase fornite.

Ci sono 5 file, nella foto qui sotto: FirebaseCrash required files

Avrete bisogno batch-upload, dump_syms, upload-sym, upload-sym-util.bash e upload-sym.sh. È possibile recuperare questi file dai file di FirebaseCrash Pod.

Se li copia nella directory del progetto e sostituisci "${PODS_ROOT}"/FirebaseCrash/ con la directory che punta a quei file, dovrebbe funzionare.

Nota: ho ancora complicazioni con questa soluzione se utilizzo un server di build come Jenkins. C'è ancora del lavoro da fare lì.


ho scoperto che questo è stato richiesto per le mie applicazioni che non utilizzano CocoaPods. Anche se questo potrebbe non essere direttamente rilevante per il tuo uso personale, immagino quantomeno che dovrei includerlo per qualcun altro che sta cercando di trovare la risposta.

+4

Purtroppo sto usando cocoapods, ma forse sarà utile per qualcun altro come hai detto tu! Quindi grazie! – Zac

+1

Grazie! Mi ha salvato un sacco di tempo. –

+0

@Zac se usi cocoapod e ottieni ancora un log unsymbolic, come lo simboleggia? –

7

Attualmente abbiamo alcuni problemi con le librerie condivise di terze parti (framework dinamici), quindi se si utilizza una libreria condivisa le cose diventano difficili. Segui le istruzioni di seguito, ma sostituisci il percorso dell'eseguibile dell'app con il percorso della libreria condivisa.

In caso contrario, è possibile che l'eseguibile originale da cui è stato segnalato l'arresto sia stato perso. Anche se è stato ricostruito con le stesse origini, il campo LC_UUID cambierà.

  1. Verificare che l'UUID sia corretta per il file eseguibile:

    dwarfdump --uuid/path/to/your/build/area/MyApp.app/MyApp

    Se nessuna delle UUID corrisponde a quello mancante, quindi game over. Scusate. Puoi provare a ripristinare l'eseguibile da Time Machine, Carbonite o altro, ma questo è tutto.

  2. Se uno degli UUID corrisponde (ce n'è uno per architettura), si ha ancora l'eseguibile originale, ma molto probabilmente mancherà il bundle dSYM. È possibile verificare che il dSYM sia mancante:

    mdfind com_apple_xcode_dsym_uuids=UUID

    Non si vede alcuna risposta.

  3. rigenerare il pacco dSYM:

    dsymutil -o=upload.dSYM/path/to/your/build/area/MyApp.app/MyApp
  4. Controllare che il fascio dSYM è iscritto:

    mdfind com_apple_xcode_dsym_uuids=UUID

    Si dovrebbe ottenere uno risposta indietro: il upload.dSYM appena creato.

    Se non lo vedi, dargli qualche secondo e riprova.

  5. Eseguire di nuovo batch-uploadUUID.

  6. Se ancora non funziona, è possibile ottenere risultati parziali elaborando l'eseguibile stesso. Eseguire batch-upload/path/to/your/build/area/MyApp.app/MyApp per ottenere la simbolizzazione parziale.

+0

Cosa dovrei selezionare nella finestra di dialogo che chiede: "Dov'è il file dell'account di servizio"? –

+0

È necessario fornire il file delle credenziali JSON associato a GOOGLE_APP_ID del progetto. Se hai eseguito "upload-sym" come parte della tua build, avresti dovuto ricevere preventivamente il file delle credenziali JSON e sarebbe stato associato al GOOGLE_APP_ID del tuo progetto. Se si tratta di un tentativo successivo alla simbolizzazione, è necessario ottenere il file delle credenziali JSON seguendo [le istruzioni sul sito di Firebase Crash Reporting] (https://firebase.google.com/docs/crash/ ios # upload_symbol_files). –

+0

Cosa posso fare se nessuno degli UUID corrisponde? quando dwarfdump --uuid – Xero

1

Nel mio caso (SENZA COCOAPODS):

1) importare tutti i file dalla cartella "Crash"

enter image description here



2) Aggiungi script in " Fasi di creazione "Scheda in questo modo:

# Replace this with the GOOGLE_APP_ID from your GoogleService-Info.plist file 
GOOGLE_APP_ID=1:xxxxxxxxxxxx:ios:xxxxxxxxxxxx 

# Replace the /Path/To/ServiceAccount.json with the path to the key you just downloaded 
"${SRCROOT}"/upload-sym "${SRCROOT}/*NameOfTargetDirectory*/ServiceAccount.json" 



è necessario modificare "NameOfTargetDirectory" nello script e funziona!