Quando avvio la mia app con XCode, si verifica un arresto anomalo ma nessun errore
L'app si sta solo fermando su questo thread
Cosa posso fare per avere maggiori informazioni sul problema?
Risposte:
Se stai usando framework personalizzati, devi metterli nella sezione "Binari incorporati" che si trova nel progetto Xcode sotto la scheda Target / Generale.
Per me un semplice Clean
e Rebuild
risolto. Spero che sia d'aiuto.
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 ;-)):
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).
Finalmente risolto!
Quello che ha funzionato per me è stato rendere il framework "opzionale" invece di "obbligatorio".
Spero possa aiutare!
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.
Guard Malloc
, per essere corretti. Qualcuno sa perché risolve il crash?
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.
Ho riscontrato lo stesso problema con Xcode 11.3 e macOS Catalina 10.15.2. L'app funzionava bene sul dispositivo ma non sul simulatore. Sembra che ci sia un problema con Simulator e la soluzione alternativa è disabilitare Thread Sanitizer.
Fare riferimento a: https://forums.developer.apple.com/message/397978#397978
Spero che sia di aiuto.
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.
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-frameworks
script:
$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
Risolto grazie a: https://stackoverflow.com/a/52550148/2493555
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.
se usi il framework di compilazione Carthage, dopo aver trascinato il framework nel tuo progetto, dovresti aggiungerlo a General / Embeded Binaries.
Trovo il modo giusto per risolverlo.
Assicurati che AppleWWDRCA.cer
sia impostata la modalità predefinita del sistema, quindi funzionerà:
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.
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.plist
risolverlo per me.
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.
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.
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.
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 :)
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.
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
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:
E finalmente funziona. :)
Se ogni altra soluzione fallisce, non dimenticare di provarla.
L'ho ordinato con il comando "pod install".