ios - tools - xcode symbolicate crash file




App iOS con framework bloccato sul dispositivo, dyld: Libreria non caricata, Xcode 6 Beta (14)

Questo crash è stato un problema di blocco, in pratica ho usato i seguenti passaggi per riprodurre il problema:

  • Creare un progetto Cocoa Touch Framework
  • Aggiungi un file rapido e un cane di classe
  • Costruisci framework per dispositivo
  • Crea un'applicazione Vista singola in Swift
  • Importa la struttura nel progetto dell'app
  • Crea un'istanza di classe rapida dal framework in ViewController
  • Costruisci ed esegui app sul dispositivo

L'app si è bloccata immediatamente all'avvio, ecco il log della console:

dyld: Library not loaded: @rpath/FrameworkTest03.framework/FrameworkTest03
  Referenced from: /var/mobile/Applications/FA6BAAC8-1AAD-49B4-8326-F30F66458CB6/FrameworkTest03App.app/FrameworkTest03App
  Reason: image not found

Ho provato a costruire su dispositivi iOS 7.1 e 8.0, entrambi hanno lo stesso crash. Tuttavia posso creare app ed eseguire il simulatore bene. Inoltre, sono consapevole che posso modificare il framework da Required a Optional in Link Binary With Libraries , ma non ha risolto completamente il problema, l'app si è bloccata durante la creazione di un'istanza di Dog . Il comportamento è diverso su dispositivo e simulatore, ho il sospetto che non possiamo distribuire framework per dispositivo utilizzando la versione beta di Xcode. Qualcuno può far luce su questo?


Per iOS superiore o uguale a 8

Sotto la scheda Generale del target, nella sezione Binari incorporati aggiungi il framework. Questo copierà il framework nel compilato in modo che possa essere collegato a runtime.

Perché sta succedendo? : perché il framework a cui si sta collegando è compilato come un framework collegato dinamicamente e quindi è collegato a runtime.

Nota: l' incorporamento di framework personalizzati è supportato solo in iOS> 8 e quindi segue una soluzione alternativa che funziona su versioni precedenti di iOS.

Per iOS meno di 8

Se hai influenza su questo quadro (hai accesso al codice sorgente / processo di compilazione) puoi cambiare questo quadro per essere collegato staticamente piuttosto che collegato dinamicamente. Questo farà sì che il codice venga incluso nella tua app compilata piuttosto che collegato a runtime e quindi il framework non dovrà essere incorporato.

Come: Sotto la scheda Impostazioni di costruzione del framework, nella sezione Collegamento cambia il Tipo di Mach-O in Libreria statica. Non dovresti ora aver bisogno di includere il framework sotto i binari incorporati.

Inclusione delle risorse: per includere elementi come immagini, audio o file xib / nib, ti consiglio di creare un pacchetto (essenzialmente una directory, maggiori informazioni qui bit.ly/ios_bundle) e quindi caricare le risorse dal pacchetto utilizzando NSBundle.


  1. Vai al file in xcode -> Impostazioni dello spazio di lavoro
  2. Fare clic sulla freccia accanto a cui appare / Utenti / apple / Libreria / Sviluppatore / Xcode / Dati derivati
  3. Seleziona i dati derivati ​​e spostali nel Cestino.
  4. Piuttosto xcode e riaprilo.
  5. Pulisci il progetto ed esegui di nuovo.

I passaggi sopra descritti hanno risolto i miei problemi.


Aggiungi la struttura in binari incorporati

Quindi pulisci e crea.


Dopo aver provato tutti i metodi disponibili su internet e le mie prove e trucchi di errore 100 volte. Finalmente sono stato in grado di risolverlo. - Apeksha Sahu 6 minuti fa
Vai a iTunes in Mac -> account -> Autorizza questo computer - Apeksha Sahu 5 minuti fa
secondo passo .... Goto sviluppatore nelle impostazioni in iPad e iPhone e reindicizzare con identificatori e cancella tutti i computer di fiducia. Ha funzionato per me ........ ....... Dopo aver reinstallato la versione Mac OSHigh seria 10.13.15 da Mac OS seirra beta ultima versione, per reinstallare Xcode ultima versione, dopo aver aggiornato tutti i certificati. etc etc etc ... come molti metodi che puoi pensare di aver fatto. -


Ho avuto lo stesso tipo di problema nella versione iOS 9.x.

ISSUE IS: App crashes as soon as I open the app with below error.

dyld: Library not loaded: /System/Library/Frameworks/UserNotifications.framework/UserNotifications Referenced from: /var/containers/Bundle/Application/######/TestApp.app/TestApp Reason: image not found

Ho risolto questo problema modificando Required in Optional in Linked Frameworks and Libraries per framework UserNotifications.framework .


Ho creato un framework usando Swift3 / Xcode 8.1 e lo stavo consumando in un progetto Objective-C / Xcode 8.1. Per risolvere questo problema ho dovuto abilitare l'opzione Always Embed Swift Standard Libraries in Build Options .

Dai un'occhiata a questo screenshot:

Spero che sia d'aiuto!


Ho ricevuto questo stesso errore durante il tentativo di aggiungere manualmente il mio framework creato nel mio progetto. Basta trascinare il framework nel tuo progetto non sarà abbastanza buono. È come essere nello stesso campo ma non essere in grado di trovare i tuoi figli. Mi ci sono voluti alcuni tentativi per farlo funzionare correttamente, ma seguendo questi passaggi l'ho fatto per me.

1) Crea il tuo framework

  • Sviluppa la tua struttura.
  • Una volta completato lo sviluppo, COMMAND + B crea il tuo framework e assicurati di ricevere "Build Successed".

2) Accedi al tuo framework

  • Una volta che il tuo progetto quadro è stato costruito con successo, sarà pronto per l'accesso nella cartella Products del tuo progetto.

  • .framework clic con il tasto destro del mouse su .framework e seleziona "Mostra nel Finder".

3) Posiziona la struttura nel tuo progetto

  • Trascina e rilascia il .framework dalla finestra del Finder alla cartella "Framework" del progetto dell'app.

4) Configurare il progetto dell'app per framework

  • Seleziona il livello più alto nel tuo progetto

  • Scegli il tuo obiettivo

  • Vai su "Compila fasi", quindi "Collega binario con le librerie" e assicurati che il tuo framework sia incluso con opzionale selezionato .

  • Sempre in "Build Phases", vai in alto a sinistra e seleziona il pulsante + . Nel menu a tendina scegliere "Nuova copia dei file di fase".

  • Scorri verso il basso fino alla nuova sezione "Copia file" e assicurati di impostare Destination su "Framework". Lascia vuoto il sottotracciato. Quindi fare clic sul pulsante + in basso a sinistra.

  • Ti verrà presentata la gerarchia del tuo progetto. Scorri verso il basso fino alla cartella "Frameworks" a cui hai aggiunto la struttura al punto 3 oppure cercala nella barra di ricerca in alto. Seleziona il tuo framework e fai clic su "Aggiungi".

  • Assicurati che il tuo framework sia incluso con "Code Sign On Copy" selezionato.

5) Pulisci, quindi esegui il tuo progetto

  • COMMAND + SHIFT + K
  • COMMAND + R

Il mio ambiente: Cocos2d 2.0, Box2d, Objective C

Oltre a fare le altre risposte di cui sopra sono finalmente andato alla scheda Generale e reso WatchKit opzionale.


Nel caso in cui qualcuno stia ancora riscontrando questo problema, nonostante abbia seguito tutti i passaggi descritti nelle molte altre risposte, potrebbe essere necessario revocare e ricreare il certificato di firma del codice , come di seguito:

https://developer.apple.com/library/ios/qa/qa1886/_index.html


Nel mio caso la soluzione era rimuovere il framework compilato dai binari incorporati, che era un progetto autonomo nello spazio di lavoro, pulirlo e ricostruirlo, e infine riaggiungerlo ai binari incorporati.


Per coloro che la correzione non ha funzionato, prova ad aggiornare il sistema operativo su Yosemite. Ha funzionato per me!


Prima di tutto cerca di costruire dopo il comando + Opzione + MAIUSC + K. Se ancora fallisce, fai i passaggi seguenti.

Se qualcuno si trova di fronte a questo errore in Xcode 8, modifica lo stato della struttura in Opzionale invece di Richiesto nella scheda Generale della destinazione.


Se si utilizza un framework di terze parti e si utilizza Cocoapods come gestore delle dipendenze, provare a eseguire pod install per aggiornare i pod.

Questo incidente si verificava su una libreria di terze parti che stavo usando, quindi felice che la soluzione di cui sopra funzionasse per me, spero che funzioni per te!


Sorprendentemente, non tutti i pezzi necessari sono documentati qui, almeno per Xcode 8.

Il mio caso era un framework personalizzato come parte dello stesso spazio di lavoro. Si scopre che è stato costruito in modo errato. Basato sull'ultima risposta di jeremyhu a questo thread:

https://forums.developer.apple.com/thread/4687

Ho dovuto impostare Dynamic Library Install Name Base ( DYLIB_INSTALL_NAME_BASE ) in Build Settings del Framework e quindi ricostruirlo. È stato impostato in modo errato su $(LOCAL_LIBRARY_DIR) e ho dovuto modificarlo in @rpath .

Quindi nella fase di elaborazione del link, stava istruendo l'App host a caricarla dinamicamente in runtime da /Library/Frameworks/fw.Framework/fw (come in, la root del filesystem) piuttosto che da path-to-App /Frameworks/fw.Framework/fw

Per quanto riguarda tutte le altre impostazioni: deve essere in 3 posizioni in Build Phases , ma queste sono tutte impostate in una sola volta quando la si aggiunge all'impostazione Embedded Binaries della scheda General dell'app di hosting.

Non ho dovuto impostare una fase aggiuntiva di Copy Files , che comunque sembra ridondante in modo intuitivo rispetto alla fase di incorporamento. Controllando la coda della trascrizione, possiamo assicurarci che non è necessario.

PBXCp /Users/xyz/Library/Developer/Xcode/DerivedData/MyApp-cbcnqafhywqkjufwsvbzckecmjjs/Build/Products/Debug-iphoneos/MyFramework.framework

[Sono state rimosse molte linee dettagliate, ma è evidente dalla trascrizione semplificata nell'interfaccia utente Xcode.]

Non ho ancora idea del perché Xcode abbia impostato il valore DYLIB_INSTALL_NAME_BASE modo errato su di me.







xcode6