dyld`__abort_with_payload: senza messaggi di errore


86

Quando avvio la mia app con XCode, si verifica un arresto anomalo ma nessun errore

L'app si sta solo fermando su questo thread

inserisci qui la descrizione dell'immagine

Cosa posso fare per avere maggiori informazioni sul problema?

Risposte:


107

Se stai usando framework personalizzati, devi metterli nella sezione "Binari incorporati" che si trova nel progetto Xcode sotto la scheda Target / Generale.


1
Ho un framework personalizzato ed è elencato in "Binari incorporati" nel progetto Xcode in Target> Generale. Continuo a riscontrare questo problema quando provo a eseguire i miei unit test. Recentemente ho aggiornato le parti Swift del mio codice a Swift 3 (da 2). Se questo aiuta ...
Mario A Guzman

@MarioAGuzman Come hai risolto il problema? Affronto il problema anche dopo la migrazione a Swift 3
iOS

@iOS Sfortunatamente non ho avuto una vera soluzione. Il problema si è risolto con Xcode 8.3 appena rilasciato.
Mario A Guzman

Perché deve essere nella sezione Binari incorporati? Sto cercando di utilizzare ObjectiveDropboxOfficial.framework. Ho ricevuto questo errore, l'ho inserito in Embedded e l'ho "risolto". Tuttavia, l'ho tolto di nuovo e rimane "fisso". Tuttavia, altri obiettivi configurati allo stesso modo non riescono. I documenti di installazione di Dropbox non dicono di mettere in Embedded Frameworks.
Jim Leask

Questo ha aiutato. Assicurati inoltre di non avere duplicati in "Framework collegati e librerie". Quando lo aggiungi alla sezione Incorporato, lo aggiunge automaticamente alla sezione Collegato.
milesmeow

60

Per me un semplice Cleane Rebuildrisolto. Spero che sia d'aiuto.


81
Pulisci, pulisci cartella build, elimina i contenuti della cartella dati derivati, installazione pod (dove appropriato), riavvia Xcode, riavvia macchina poi spalma del sangue di agnello sulla porta per buona misura
johnnyclem

1
Ha aiutato anche me !!
Dmitriy Greh,

Eliminare la directory e ottenere l'ultimo commit da git non ha aiutato, ma pulire e ricostruire ha aiutato lol
え る ま る

8
Nel mio caso, ho dovuto legare peperoncino e limone al telaio della mia porta.
Naresh

1
Ho dovuto sacrificare anche il mio primogenito ma ha funzionato!
Andor Németh

26

inserisci qui la descrizione dell'immagineQuesto problema è apparso dopo l'aggiornamento del sistema fino a macOS 10.15.2 beta. La disattivazione di "Thread Sanitizer" ha risolto il problema (Xcode 11.2). Ora non posso usare Thread Sanitizer e devo aspettare il prossimo aggiornamento del sistema operativo.


6
Questo post risponde alle domande originali quando si verifica il problema nei simulatori Xcode 11.3 dopo l'aggiornamento a Mac 10.15.2. Sembra il bug di Apple, vedi forums.developer.apple.com/thread/126891
Vadim Motorine

19

L'aggiunta del framework all'elenco degli asset binari incorporati ha risolto il problema. Ecco come appare la configurazione di un framework estraneo nella forma finale nella GUI di Xcode come Embedded Framework (Xcode 9.2, personalmente mi piace di più una traccia visiva delle briciole di pane ;-)): inserisci qui la descrizione dell'immagine

Apple ha intenzionalmente arrestato il runtime per informare in qualche modo lo sviluppatore del problema che non è possibile utilizzare framework non Apple come framework semplicemente collegati nello sviluppo iOS? Sarebbe meglio farlo apparire come un errore di compilazione, penso ... con un pulsante che dice "spostalo!"

L'uso di binari incorporati evita che l'utente finale debba aggiungere il Framework indipendentemente dalla tua app (o hai a che fare con un programma di installazione). Nel caso dell'iPhone (iOS), ciò è impossibile, ma su macOS è possibile ma può diventare disordinato velocemente.

Per l'utente finale, è molto più piacevole trascinare e rilasciare un'app per installarla su macOS, ed è qui che l'incorporamento diventa un vantaggio. L'incorporamento evita anche i classici "conflitti DLL" di avere versioni esterne del framework da gestire. (lo spazio su disco costa poco, il tempo del mio cliente è prezioso).


Piccolo aggiornamento. Xcode 10.1 ora ti permette di trascinare il framework personalizzato dalla sezione "Collega file binari con librerie", dove va di default, alla sezione "Copia risorse bundle" dove deve essere ... Non copia più solo il riferimento ma lo sposta anche. Screen Shot qui: stackoverflow.com/questions/24993752/...
Cerniuk

13

Ho corretto l'errore nel mio progetto proprio ora!
Se stai usando il framework swift nel progetto Object-C, ti consiglio di cambiare le impostazioni di compilazione.
Incorpora sempre l'opzione Swift Standard Libraries su SÌ. come questo:inserisci qui la descrizione dell'immagine

spero che questo ti sia stato utile.


Questo ha funzionato per me anche se (apparentemente) non c'è codice swift nel mio progetto.
Jim75

XCode ha cambiato valore in No e me ne ero dimenticato. Grazie :)
SeikoTheWiz

13

Finalmente risolto!

Quello che ha funzionato per me è stato rendere il framework "opzionale" invece di "obbligatorio".

Spero possa aiutare!


super uomo, ho combattuto con questo problema 1,5 giorni. ho anche trovato questa bella matrice twitter.com/isupportmatrix cambiandola in required risolta anche al mio fianco
swift2geek

e ha funzionato solo con l'impostazione in File -> Impostazioni progetto-> Sistema di build legacy
swift2geek

11

Xcode 11.1 , Disattiva Do not Embed, Embed & Signè una buona opzione.

0

222

Grazie @mkonovalov, @William Cerniuk


1
Ha funzionato per me. +1
abhimuralidharan

1
Questo passaggio è obbligatorio, stai tentando di incorporare il tuo framework personalizzato nella tua app.
Akash Bhardwaj

6

1) Continua l'esecuzione per vedere se nel debugger viene visualizzato un messaggio come "MyFramework.framework" non trovato. In questo caso, segui questa discussione: Libreria OS X Framework non caricata: "Immagine non trovata" Per me questa risposta ha funzionato: https://stackoverflow.com/a/44796734/4060763

2) Assicurati di aver aggiunto i tuoi binari tramite la sezione "Incorpora binari".

3) Assicurati di aver abilitato la firma dei framework nella sezione della fase di compilazione.

4) Assicurati che i framework incorporati non siano collegamenti simbolici.

5) È possibile rendere i framework collegati facoltativi anziché obbligatori nella fase "Collega binario con librerie". Questo dirà a iOS di non cercare questi framework durante il lancio. Ma comunque è necessario correggere gli errori per utilizzare quei framework!

6) Controlla se tutte le voci di info.plist sono corrette. Nel mio caso, stavo usando un file Mac info.plist per iOS. Stava cercando un file xib che non era presente nel progetto iOS.

7) Eseguire una pulizia e una costruzione dopo ogni modifica di questo tipo. Ciò è necessario perché xcode non copia / modifica questi file se esistono già.

8) Rimuovere l'app dall'iPad e quindi installarla. Stesso motivo di 7.


6

Deselezionare "Guard Malloc" nella diagnostica ha funzionato per me. Vedere Immagine per le impostazioni


2
Guard Malloc, per essere corretti. Qualcuno sa perché risolve il crash?
Mojo66

1
Puoi anche provare a pulire il progetto e quindi eseguirlo di nuovo o semplicemente riavviare Xcode. Questi tipi di errori sono solo fastidiosi e sono una specie di bug in Xcode
Karanveer Singh

5

Per rispondere alla domanda originale "Cosa posso fare per avere maggiori informazioni sul problema?", Questo thread del forum di Apple fornisce un suggerimento molto semplice: esegui semplicemente la tua app che si blocca fuori da XCode (cioè interrompila da XCode, quindi eseguila manualmente sul tuo dispositivo). Questo produrrà un registro di arresto anomalo contenente maggiori dettagli su ciò che è successo. È quindi possibile rivedere questo registro dal menu della finestra XCode / Dispositivi e simulatori -> Visualizza registri dispositivo.


4

Mi ero appena perso l'applicazione della "Privacy - Descrizione utilizzo fotocamera" nel file info.plist.

Non so se queste informazioni aiutano qualcun altro però ...



3

Ho riscontrato un errore con la stessa firma (il mio progetto era in Obj-C) e ho scoperto di essermi dimenticato di collegarmi al framework appropriato. Il messaggio di errore nel registro di debug che ha portato alla ricerca dell'errore era:

dyld: Simbolo non trovato: _OBJC_CLASS _ $ _ SFSafariViewController

Per il mio errore specifico, l'aggiunta di SafariServices.framework in Targets -> Build Phases -> "Link Binary With Libraries" ha risolto il problema. Anche se probabilmente non hai lo stesso errore specifico e la stessa risoluzione, è utile controllare il log di debug per trovare indizi.


2

Ho avuto questa situazione dopo l'aggiornamento di Xcode alla v10.2.1 e swift alla v5.0 Se stai usando carthage + RxSwift, il nuovo RxSwift usa RxRelay.framework. Dovresti andare nella tua directory / Carthage / Build, trovare quel framework e inserirlo nel tuo progetto. Non dimenticare di aggiungerlo anche al tuo carthage copy-frameworksscript: $(SRCROOT)/Carthage/Build/iOS/RxRelay.framework

Risolto grazie a: https://stackoverflow.com/a/52550148/2493555


1

Se utilizzi un framework scritto in Swift in un'applicazione Objective-C, devi includere la toolchain Swift nell'app che utilizza il framework.

Il modo in cui ho trovato per farlo è creare un file swift fittizio nell'app in modo che XCode riconosca swift e lo aggiunga in modo appropriato al progetto. È quindi possibile eliminare il file fittizio.

Mi piacerebbe se qualcuno conoscesse un modo migliore per aggiungere esplicitamente swift a un progetto object-c senza aggiungere un file swift.


1

se usi il framework di compilazione Carthage, dopo aver trascinato il framework nel tuo progetto, dovresti aggiungerlo a General / Embeded Binaries.


1

Trovo il modo giusto per risolverlo.

Assicurati che AppleWWDRCA.cersia impostata la modalità predefinita del sistema, quindi funzionerà:

inserisci qui la descrizione dell'immagine


Ha funzionato anche per me.
dev_shanghai

1

Stavo affrontando lo stesso problema. L'impostazione di "Incorpora sempre librerie standard Swift" su Sì nelle impostazioni di costruzione del mio obiettivo ha funzionato per me.


1

Ho avuto un problema simile che è stato risolto dalla mancata specifica del permesso in plist (per quanto strano sia ..)

Ho provato a utilizzare AVCaptureDevice e si è bloccato all'avvio (la mia app era molto ridotta)

Aggiunta - Privacy - Camera Usage Description per info.plistrisolverlo per me.


1

Inoltre, se stai usando framework personalizzati, assicurati di impostare il tipo Mach-O su libreria statica. Ho letto da qualche parte che IOS non consente dylib. Comunque questo ha funzionato per me.


1

Per aggiungere al lungo elenco di incontri con questo errore, si verifica quando sono su XCode12.2 Beta 2 che esegue la distribuzione sul mio Mac con MacOS 10.15.5 con l'obiettivo di distribuzione impostato su MacOS 11.0. Questa situazione si è verificata perché stavo provando l' app Mac Catalyst Tutorial aggiungendo una SideBar. Il passaggio del target a MacOS 10.15.5 ha eliminato l'errore e ha avviato correttamente l'app.


0

Ho corretto il mio errore nel mio progetto.
1. Controlla altri thread quando si è verificato un errore. Ho scoperto che il mio errore riguarda la fotocamera.

inserisci qui la descrizione dell'immagine

  1. Aggiungi la privacy della fotocamera nel file Info.plist.
    1) Apri il file info.plist.
    2) Aggiungi una nuova chiave denominata "Privacy - Descrizione utilizzo videocamera" e inserisci una stringa che descriva il motivo per cui l'app necessita della videocamera. La descrizione verrà visualizzata quando l'app deve utilizzare la privacy.

inserisci qui la descrizione dell'immagine


0

Ho appena avuto lo stesso problema e il motivo era dovuto al fatto che ho revocato i miei certificati per sviluppatori e ne ho creati di nuovi con Xcode 10, dopo un nuovo aggiornamento di macOS Mojave (per alcuni ha cancellato tutte le credenziali di accesso e alcuni ha superato certificati portachiavi).

Quindi, tutto quello che dovevo fare era rimuovere le app installate dal mio dispositivo ed eseguirle di nuovo tramite Xcode, in modo che installasse il nuovo profilo di provisioning giusto nel mio dispositivo :)


0

A volte accade quando si utilizzano framework di sistema accessibili solo dalla versione iOS successiva rispetto alla versione di destinazione. Potrebbe essere risolto contrassegnando questo framework collegato come facoltativo.

Ad esempio, un progetto mirato a iOS 11 e che utilizza la funzione di riempimento automatico di AuthenticationServices per iOS 12 si arresta in modo anomalo su iOS 11 come descritto.


0

In realtà, ho avuto il problema con 11.3.1 e Thread Sanitizer era già disattivato come menzionato sopra. Nel mio caso il problema era che avevo diverse versioni di xCode nella mia cartella dell'applicazione in questo modo

/Applications/xcode11.3.1/Xcode.app
/Applications/xcode11.3/Xcode.app
/Applications/xcode10.1/Xcode.app

e

/Applications/Xcode.app - was 11.2

Mi ci vogliono 2 giorni per capire che il sistema di compilazione guarda su /Applications/Xcode.app per impostazione predefinita. Quindi portare 11.3.1 in /Applications/Xcode.app risolve finalmente il problema


0

Lo stesso problema è accaduto con me. Avevo iOS 14 Beta e il problema era risolto quando l'ho aggiornato alla versione ufficiale.


-1

Ho riscontrato questo problema solo durante l'esecuzione su un dispositivo reale (iPhone SE). Il progetto del simulatore ha funzionato come previsto.

Ho provato tutte le correzioni da questo stesso thread e da qui: Libreria OS X Framework non caricata: "Immagine non trovata" Nessuno di questi ha funzionato per me.

Per me il problema è stato risolto dopo aver riavviato iPhone (sic!).

L'ho fatto:

  • cartella build pulita,
  • dati derivati ​​puliti,
  • elimina l'app dal dispositivo,
  • riavvia il dispositivo

E finalmente funziona. :)

Se ogni altra soluzione fallisce, non dimenticare di provarla.


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.