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?
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?
Risposte:
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!
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
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.
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.
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.
Riavvia Xcode, quindi computer e iPhone
Vai alle impostazioni di compilazione del progetto e imposta Always Embed Swift Standard Libraries
(precedentemente Embedded Content Contains Swift Code
) il flag suYES
Vai a impostazioni di generazione del progetto e aggiungere @executable_path/Frameworks
ad Runpath Search Paths
opzione
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
@executable_path/../Frameworks
dove 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.
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
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.
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!
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.
Ho avuto un progetto Obj-C in cui ho iniziato ad aggiungere file sorgente rapidi. Quanto segue risolto il problema per me:
RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
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.
Prova a tenere premuto Alt, quindi vai a Prodotto -> Pulisci cartella build ...
Spero che possa aiutare qualcuno ..
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:
DerivedData
e Build
. Cerca nelle Preferenze la posizione di DerivedData
. Build
dovrebbe essere nella cartella del progetto.@executable_path/Frameworks
. Questa è la roba facile. Se stai creando la tua riga di comando, potresti creare i tuoi .ipa
file da caricare. In tal caso è necessario assicurarsi quanto segue:
SwiftSupport/iphoneos
sia 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
.codesign
le librerie e i file di framework (sotto Frameworks
nella .app
cartella) e quindi firmare l'intero .app
albero. L' .app
albero deve essere firmato con un entitlements.plist
ma 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.
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.
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.
Runpath Search Paths
impostazione build: $(inherited) @executable_path/Frameworks
. 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.)
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"
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.
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Ì.
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
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.
Di solito questo errore scompare se aggiungi questa libreria al segmento "Copia file" nelle fasi di generazione.
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:
Ho avuto anche questo problema, solo che non era localizzato libswiftXCTest.dylib
.
La soluzione era aggiungere XCTest.framework
al target Test, in Build Phases/Link Binary with Library
. Stavo ricevendo questo errore anche quando stavo cercando di costruire l'obiettivo principale.
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
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 Code
eRunpath Search Paths
sia a livello di progetto e il livello di destinazione.
Ora ho installato Yosemite e, senza ulteriori modifiche, ha iniziato a funzionare.
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.
otool