dyld: libreria non caricata: @ rpath / libswift_stdlib_core.dylib


205

Ottengo questo errore dopo aver aggiunto una classe Swift a un vecchio progetto Xcode.

dyld: Library not loaded: @rpath/libswift_stdlib_core.dylib

Come posso eseguire nuovamente il progetto?


Potresti anche voler guardare stackoverflow.com/questions/38364320 che mostra come eseguire il debug usandootool
Jim Hayes

2017 - incredibilmente, il semplice riavvio di Xcode ha risolto questo problema orribile per me.
Fattie,

Risposte:


152

Per me nessuna delle precedenti soluzioni ha funzionato. Abbiamo scoperto che esiste un flag ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES(nelle versioni precedenti: "Il contenuto incorporato contiene codice Swift") nelle Impostazioni di costruzione che deve essere impostato su SÌ. Di default era NO!


Ciò ha risolto anche per me, ho impostato l'impostazione per l'estensione su true. Il progetto è oggettivo ma l'est è rapido e non ha funzionato fin
dall'inizio

Questa era anche la mia risoluzione. Ho un progetto di app iOS esistente (ObjC) al quale sto aggiungendo un'estensione di oggi (nuovo target nel progetto, l'estensione è un plug-in per l'app principale). Ho dovuto andare nelle impostazioni di destinazione dell'app e abilitare il problema di impostazione della build e viola ... è andato via. Ha senso, ma data la quantità di altre cose che Xcode 6.0 configura automaticamente per te, è un peccato che questa opzione essenziale sia stata trascurata.
hsoi,

Questo risolto il mio problema: avevamo un vecchio progetto con un sacco di ObjC, a cui recentemente abbiamo iniziato ad aggiungere Swift. Anche se l'IPA è stato creato e include le librerie Swift, non ha funzionato su alcuni dispositivi iOS7 fino a quando questa impostazione di build non è stata verificata e non abbiamo fatto un nuovo IPA. Questo ha funzionato su tutti i nostri dispositivi problematici.
Kendall Helmstetter Gelner,

1
Niente ha funzionato oltre a questo. Sei un mago strano mio caro signore!
Ricky Hartmann,

2
Contenuto incorporato Contiene l'utilizzo obsoleto del codice Swift ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
nivritgupta,

91

Questo errore può verificarsi se qualcosa è andato storto durante la conversione di un progetto Objective-C per iniziare a utilizzare Swift. Il problema è che le impostazioni di build di Linker non sono mai state configurate correttamente, quindi dovrai farlo a mano. Cerca l'impostazione build Percorsi di ricerca percorso e impostala su:

$(inherited) @executable_path/Frameworks

inserisci qui la descrizione dell'immagine

EDIT: Vorrei anche aggiungere che c'è stata una recente ondata di questi errori causati da qualcos'altro interamente - Apple ha apportato una modifica in Swift stesso, a partire forse da Xcode 6.1 o 6.1.1. L'unica soluzione sembra essere quella di uscire da Xcode, distruggere i certificati in Accesso Portachiavi, andare al Centro membri ed eliminare tutti i certificati e i profili (tranne i profili per le app nello Store - non è possibile eliminarli), quindi avviare il l'intero processo di richiesta del certificato da zero.


3
Ha funzionato per me. Aggiornato all'ultima versione di Xcode e ho scoperto che questo percorso di impostazione nel mio progetto stava portando alla versione precedente.
Obiettivo

1
lavorato!! mi hai salvato la giornata! Stavo usando il rapido controllo GitHub nell'obiettivo C con xcode 6 GM. Grazie.
imthegiga,

1
Questo ha funzionato anche per me. Il riavvio di Xcode no.
Dan Loewenherz,

1
ha funzionato per me. A proposito, ho ricevuto "Motivo: immagine non trovata" alla fine del messaggio di errore.
Peter Zhou,

2
Grazie a Dio! Eccolo!
BoilingLime

79

Non sono davvero sicuro del motivo per cui questa domanda è stata sottoposta a downgrade, ho riscontrato questo problema anche quando ho provato a utilizzare Swift per la prima volta con un progetto esistente. Anche un riavvio di Xcode ha risolto questo problema per me.


20
Sto provando a usare swift in un nuovo progetto iOS e ottengo quell'errore quando provo a funzionare su un dispositivo iOS 8, ma non nel simulatore. Il riavvio di Xcode, il mio laptop o il mio telefono non risolve il problema. c'è un'altra soluzione?
David Skrundz,

2
Purtroppo questo non ha funzionato per me in Beta 4, tentando di avviare un'app per Mac che utilizza un framework basato su Swift.
Craig Otis,

Includi il link @Developer nella tua risposta perché aiuta davvero.
Lachezar Todorov,

Prova questo, ma aggiungi anche uno pulito.
Scott McKenzie,

55

Ho cercato a lungo su questo problema. Esistono diverse ragioni per cui questo problema.

Se ti trovi di fronte quando tu e Swift code / library in un progetto Objectice C dovresti provare la Soluzione 1-2-3

Se stai affrontando questo problema con un nuovo progetto Swift, la Soluzione 4 si adatta meglio a te.

Soluzione 1:

Riavvia Xcode, quindi computer e iPhone

Soluzione 2:

Vai alle impostazioni di compilazione del progetto e imposta Always Embed Swift Standard Libraries(precedentemente Embedded Content Contains Swift Code) il flag suYES

Soluzione 3:

Vai a impostazioni di generazione del progetto e aggiungere @executable_path/Frameworksad Runpath Search Pathsopzione

Soluzione 4:

Se nessuna delle precedenti funzioni funziona. Apple sembra essere certificati con patch ninja come menzionato nel post di AirSign

Con certificati InHouse

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR

hanno aggiunto un nuovo campo chiamato OU

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR

quindi dovresti semplicemente ricreare certificato e fornitura


1
Annuncio 2: ora si chiama "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES" (vedi commento sotto risposta accettata).
Raffaello,

1
Volevo aggiungere ... i progetti macOS richiedono @executable_path/../Frameworksdove i progetti iOS lo richiedono senza ..il centro. La modifica di questo valore è importante se hai convertito un target da un sistema operativo all'altro.
Matt Gallagher,

41

Nel mio caso stavo cercando di importare un framework personalizzato e stavo ottenendo l'errore simile. Si scopre che ho dovuto importare il framework nei file binari incorporati anziché nei frame e nelle librerie collegati.

I binari incorporati si trovano in Impostazioni progetti -> -> Generale


Mi hai salvato la giornata! Eccezionale!
Klaas,

1
Stavo vedendo questo errore, quando ho cercato di utilizzare un framework compilato scritto in modo rapido (invece di incorporare i file di origine come destinazione separata). La soluzione sopra ha funzionato anche per me.
alex da franca,

Grazie mille, mi ha salvato l'intera giornata.
Badrinath,

1
Ha funzionato per me dopo aver provato a collegare un framework parzialmente scritto in un vecchio progetto che era interamente obiettivo-c. L'impostazione era in realtà nelle impostazioni di creazione però. Maggiori informazioni qui: stackoverflow.com/questions/24163870/…
Pellet

Questo è sotto Impostazioni target, non progetto, per essere sicuri.
Legoless,

16

Per gli sviluppatori che hanno riscontrato questo problema con build di distribuzione Adhoc / Enterprise,

Creare il certificato di produzione dal portale di sviluppo e quindi rigenerare il profilo di distribuzione. Scarica e installa entrambi sul tuo Mac. Assicurati di aver selezionato il profilo giusto nelle impostazioni di creazione di Xcode e ricostruisci la tua app.

Fonte: https://devforums.apple.com/message/1022908#1022908


Mentre questo collegamento può rispondere alla domanda, i collegamenti si interrompono. Pertanto, si consiglia di includere le parti principali del collegamento. Le risposte solo link non sono consigliate.
Pokechu22,

Ha funzionato per la mia app aziendale. Grazie!
sylvanaar,

15

Soluzione 5:

Nel mio caso, tutte le soluzioni citate nella risposta di Accfews sono state molto utili, ma nessuna ha funzionato. Ho risolto il mio problema aggiungendo la mia rapida libreria nella sezione "File binari incorporati" nella sezione "Generale" della destinazione del mio progetto. Forse è dovuto al fatto che ho incluso il mio framework rapido nel mio spazio di lavoro? Qualunque cosa compili ora! Preparati Swift, sono qui!


OK, sembrava funzionare. Sto solo cercando di scrivere una libreria di codici rapida per un progetto rapido. In qualche modo mi chiedo ancora se questo è corretto. Tuttavia sono entusiasta del suo funzionamento.
kpierce8,

Avevo incluso i miei framework nella sezione "Copia frame" della scheda Crea fasi - ma qui non è stato possibile selezionare un framework. Il "Generale" ha consentito la selezione di questo altro framework e lo ha aggiunto nelle fasi di generazione e l'app viene creata ed eseguita. Stranamente, potrei ancora eseguire l'app sul simulatore.
DJJP

Grazie Christophe. Come te, hai provato tutte le soluzioni e chiaramente non era intuitivo capire che una libreria veloce non può essere trascinata in un progetto semplicemente su un altro. Devi chiaramente mettere la libreria nella sezione incorporata (aka modulo più chiaramente rapido, dubito che possa esserci un altro tipo di materiale incorporato). Anche se Xcode è in grado di rilevarlo automaticamente e di fare il lavoro per noi ... Ma non è questo il compito del nostro amato XCode;), definitivamente qui per perdere tempo ...
Mr Bonjour,

Inoltre, se la libreria è già nell'elenco, assicurati che sia contrassegnata come "Incorpora e firma". Questo risolve il mio problema.
SquareBox,

10

Un semplice riavvio di Xcode ha risolto il problema per me.


Schiaffeggerò il prossimo fanboy di Apple che si prende gioco del ripristino di Windows
Josh,

5

Per me, il problema era dovuto al fatto che la mia autorità di certificazione delle relazioni con gli sviluppatori di Apple Worldwide non era valida.

Scaricalo da qui: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer

Trascina e rilascia in Keychain Access, pulisci il progetto ed esegui.


Questo è iniziato dopo che abbiamo aggiunto il diritto CloudKit. Prima di ciò, suppongo che non gli importasse che il certificato WWDR non fosse valido.
CommaToast,

3

Ho avuto un progetto Obj-C in cui ho iniziato ad aggiungere file sorgente rapidi. Quanto segue risolto il problema per me:

  1. Collegamento: RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
  2. Compilatore Swift - Generazione di codice: EMBEDDED CONTENT CONTAINS SWIFT = YES

Ho appena creato un nuovo progetto dai modelli Xcode 6.3 e confrontato le impostazioni del progetto con il mio vecchio progetto originale.


3

Prova a tenere premuto Alt, quindi vai a Prodotto -> Pulisci cartella build ...

Spero che possa aiutare qualcuno ..


Questo non fornisce una risposta alla domanda. Una volta che hai una reputazione sufficiente , sarai in grado di commentare qualsiasi post ; fornire invece risposte che non richiedono chiarimenti da parte del richiedente . - Dalla recensione
Rakete1111,

È successo dopo aver provato ad aggiungere una nuova classe nel vecchio progetto. Non ci sono informazioni su quanti anni abbia il progetto. Quindi, svuotare il progetto e forzare l'aggiornamento della cache ha senso. Il vecchio progetto implica anche che ci sono buone probabilità che il certificato venga modificato nel frattempo, poiché i certificati di produzione e sviluppo Apple scadono ogni anno. Maggiori informazioni sul motivo principale dell'errore in base alle Domande e risposte tecniche di Apple all'indirizzo. developer.apple.com/library/ios/qa/qa1886/_index.html . La stessa cosa mi è successa e Clean Build Folder fa ripartire il progetto. Lascia che le persone provino ..
stakahop,

È successo subito dopo aver ricaricato il mio certificato iOs. Un semplice Clean (menu del prodotto) e tutto funziona bene ;-)
Sébastien REMY

Ha funzionato perfettamente. Grazie.
iSofia,

3

Le ragioni di ciò sono molte. Dopo aver trascorso un fine settimana divertente trovando l'ennesimo problema che causa questo (l'ordine della firma del codice), volevo creare una risposta di sintesi che riunisse tutte le possibili soluzioni:

  1. Aggiungi contenuto incorporato Contiene il codice Swift al progetto. Devi impostare questo flag se la tua app contiene il codice Swift.
  2. Progetto pulito . Oltre a un Progetto> Pulisci è anche possibile eliminare le directory DerivedDatae Build. Cerca nelle Preferenze la posizione di DerivedData. Builddovrebbe essere nella cartella del progetto.
  3. Assicurarsi che i percorsi di ricerca del percorso di esecuzione contengano@executable_path/Frameworks .
  4. Assicurati che il tuo certificato contenga il tuo ID team Apple nel campo OU (Organization Unit) Apple lo aggiungerà per te, basta revocare il certificato di distribuzione esistente e crearne uno nuovo, scaricare, installare su KeyChain, rigenerare tutti i profili di provisioning, scaricare quelli e ricostruire.
  5. Riavvio di Xcode. Se tutto è sostanzialmente buono, ma Xcode non è ancora arrivato.

Questa è la roba facile. Se stai creando la tua riga di comando, potresti creare i tuoi .ipafile da caricare. In tal caso è necessario assicurarsi quanto segue:

  1. Assicurati che la versione dei file di Swift SwiftSupport/iphoneossia la stessa della versione di.Contents/YourApp.app/Frameworks Poiché Swift non è ancora binario compatibile tra le versioni, devi assicurarti che queste versioni siano quelle con cui hai creato la tua app. Puoi trovare queste librerie sotto /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos.
  2. Iscriviti le librerie e framework prima . È necessario prima codesignle librerie e i file di framework (sotto Frameworksnella .appcartella) e quindi firmare l'intero .appalbero. L' .appalbero deve essere firmato con un entitlements.plistma non con i framework.

Speriamo che quando uscirà Swift 3.0 e non avremo più bisogno di raggruppare Swift con le nostre app, l'intero problema andrà via.


2

Ho riscontrato questo problema utilizzando una fornitura mobile Ad Hoc (o aziendale) con un certificato di produzione. Il passaggio a un certificato di sviluppo e mobileprovision hanno risolto il problema.


4
Ciò potrebbe consentire di eseguire l'app in fase di sviluppo, ma come si distribuirà se un profilo ad-hoc o aziendale non funziona?
Kristopher Johnson,

2

Il mio progetto è un progetto Swift con alcune classi Objective-C. Ho avuto lo stesso problema quando ho firmato con il vecchio certificato inHouse (enterprise).

I seguenti passaggi hanno risolto questo problema per me.

  1. Crea e usa un nuovo certificato e una disposizione mobile.
    (Rif. Blog di AIRSIGN )
  2. Impostare Runpath Search Pathsimpostazione build: $(inherited) @executable_path/Frameworks.
    (Rif. Risposta di Matt )

2

Soluzione 6:

Nel nostro caso, il certificato di distribuzione aziendale era stato revocato. La generazione di un nuovo certificato e l'aggiornamento del profilo di provisioning hanno risolto il problema.

(Sembra che ci siano molte cause diverse per questo errore. Spero che questo aiuti qualcuno.)


Questo ha risolto il mio problema. Santa merda che spreco di tempo cercando di risolvere questo problema. Spero che questo risolva i problemi degli altri utenti. Sono stato in grado di eseguire il debug della mia app con il mio framework personalizzato ma non ho potuto eseguire la versione della macchina di build su jenkins. Revocare i miei certificati di distribuzione e generare un nuovo profilo di provisioning aziendale ha risolto i problemi per me.
cynistersix,

2
Questo è lo stesso con la soluzione 4
accfews del

2

Ho provato tutte le risposte fornite sopra, niente ha funzionato.

Finalmente ha funzionato dopo l'aggiornamento a Yosemite


2

Ho affrontato lo stesso problema, impostare l'identità del segno di codice corretto ha risolto il problema (Crea impostazioni-> Identità firma codice).

In base alla domanda tecnica di Apple "Tutti i certificati per sviluppatori Enterprise e iOS standard creati dopo il rilascio di iOS 8 hanno il nuovo campo ID squadra nella posizione corretta per consentire l'esecuzione delle app in lingua Swift"


2

Se si aggiungono i tre framework tramite i binari incorporati, verranno aggiunti anche ai frame e alle librerie collegati. Eliminare le tre voci in Framework collegati e Librerie risolverà il problema.

Metodi magici come il riavvio di Xcode e il riavvio del Mac non funzionano su di me.


Grazie per aver migliorato il formato. Sembra migliore. "Strutture e librerie collegate" è una sezione, non due. Cambio "e" in grassetto. @ Bartłomiej
Arbipher,

特 来 shua fen zi shu bu ding
icemelon

2

Aggiunta di Framework come "Binario incorporato" anziché solo "Librerie e librerie collegate" - Risolto il mio problema.

Ho anche impostato il flag Contenuto incorporato con codice Swift su SÌ.


1

Aggiorna all'ultima versione di OS X (Yosemite)

Dopo ore di tentativi ed errori sono arrivato alla risoluzione di questo problema. - Se questo vale per il tuo caso, ovviamente.

Ho avuto lo stesso problema fino a quando non ho aggiornato il mio Mac OS X da Mavericks a Yosemite. - Ha risolto il mio problema, spero che risolva anche il tuo


1

Ho provato tutte le soluzioni che ho trovato sul web, inclusi Apple e i nuovi certificati. Senza successo.

L'unico modo in cui ho potuto eseguire xcode, dopo 6 mesi di tentativi, era creare un nuovo account sul mio macbook.


1

Di solito questo errore scompare se aggiungi questa libreria al segmento "Copia file" nelle fasi di generazione.


Questo ha funzionato per me su XCode 7.2.1. Ho usato il + nel pannello Crea fasi, selezionato Nuova fase Copia file, quindi trascinato il framework dall'albero dell'area di lavoro nella sezione Copia file. Alla fine ho selezionato Destinazione: Quadri. Dopo una build pulita, la mia applicazione è stata avviata come previsto.
Rob Smallshire,

1

E se tutto quanto sopra non ti aiuta e ti senti davvero frustrato ... Prova il miglior trucco di tutti: Cleane solo per essere sicuro Clean Build Folder. :) Spero che aiuti qualcuno!


1

Nessuna di queste soluzioni sembrava funzionare costantemente per me; dopo ogni paio di esecuzioni riuscite, fallirebbe di nuovo. Il flag "Contenuto incorporato contiene codice Swift" è sempre stato impostato su SÌ per me.

Ho scoperto che avrei impostato Xcode per essere compatibile con 6.3. Cambiandolo per essere compatibile con 3.2 risolto:


Grazie! Ho provato tutto il resto. L'ho cambiato di nuovo in 3.2, ripulito il progetto, riavviato Xcode e funzionava
gabriellanata

1

Ho avuto anche questo problema, solo che non era localizzato libswiftXCTest.dylib.

La soluzione era aggiungere XCTest.frameworkal target Test, in Build Phases/Link Binary with Library. Stavo ricevendo questo errore anche quando stavo cercando di costruire l'obiettivo principale.


0

Ciò è emerso quando ho aggiunto un nuovo target di estensione Today con linguaggio Swift a un vecchio progetto. Risolto facilmente aggiornando il progetto alle impostazioni consigliate. Xcode 6.0.1


0

Ho avuto lo stesso problema usando Mavericks, Xcode 6.1.1, test su un iPhone5 con iOS 8.1.1. Ho provato tutte le possibili soluzioni, compresi nuovi certificati e profili di provisioning, ma nulla mi ha aiutato. Ho apportato le modifiche a Embedded Content Contains Swift CodeeRunpath Search Paths sia a livello di progetto e il livello di destinazione.

Ora ho installato Yosemite e, senza ulteriori modifiche, ha iniziato a funzionare.


0

Lo stesso problema qui, per me è stato Crashlytics / Fabric / Beta / Twitter / Qualunque cosa si chiamino-stessi caricando un binario che mancava dei framework incorporati. Se ho creato un archivio e poi esportato una build Enterprise in modo standard, hanno funzionato con un fascino.


0

Il mio ambiente: Cocos2d 2.0, Box2d, Objective C

Oltre a fare le altre risposte sopra, sono finalmente passato alla scheda Generale e ho reso WatchKit opzionale.

Obiettivi: Generale: Strutture e librerie collegate: WatchKit.framework: Opzionale


0

Dopo mesi e mesi a provare tutto qui ... Definizione di follia ... avviare Xcode con un nuovo utente Mac lo ha risolto per me.

Ho rimosso ~ / Library / Developer / * e reinstallato Xcode- quindi non ho idea di cos'altro formattare per farlo funzionare.

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.