dyld: Biblioteca no cargada: @ rpath / libswift_stdlib_core.dylib

205

Recibo este error después de agregar una clase Swift a un antiguo proyecto Xcode.

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

¿Cómo puedo hacer que el proyecto vuelva a ejecutarse?

Anton
fuente
También es posible que desee ver stackoverflow.com/questions/38364320 que muestra cómo depurar esto usandootool
Jim Hayes
2017: increíblemente, solo reiniciar Xcode resolvió este problema atroz para mí.
Fattie

Respuestas:

152

Para mí ninguna de las soluciones anteriores funcionó. Descubrimos que hay un indicador ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES(en versiones anteriores: "El contenido incrustado contiene un código rápido") en la Configuración de compilación que debe establecerse en SÍ. ¡Era NO por defecto!

mukaissi
fuente
Esto también me lo arregló, cambié la configuración de la extensión a verdadero. El proyecto es objc pero la extensión es rápida y no funcionó desde el principio
Cristi Băluță
Esta fue mi resolución también. Tengo un proyecto de aplicación iOS (ObjC) existente al que estoy agregando una extensión Today (nuevo objetivo en el proyecto, la extensión es un complemento para la aplicación principal). Tuve que ir a la configuración de destino de la aplicación y habilitar esa configuración de compilación y viola ... el problema desapareció. Tiene sentido, pero dada la cantidad de otras cosas que Xcode 6.0 configura automáticamente para usted, es una pena que se haya pasado por alto esta opción esencial.
hsoi
Esto solucionó mi problema: teníamos un proyecto anterior con muchos ObjC, al que recientemente comenzamos a agregar Swift. Aunque el IPA se creó e incluyó las bibliotecas Swift, no funcionó en algunos dispositivos iOS7 hasta que se verificó esta configuración de compilación e hicimos un nuevo IPA. Esto funcionó en todos nuestros dispositivos con problemas.
Kendall Helmstetter Gelner
1
Nada funcionó además de esto. Usted es un maldito mago, mi buen señor!
Ricky Hartmann
2
El contenido incrustado contiene el código obsoleto de uso obsoleto ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
nivritgupta
91

Este error puede ocurrir si algo salió mal durante la conversión de un proyecto Objective-C para comenzar a usar Swift. El problema es que la configuración de compilación de Linker nunca se configuró correctamente, por lo que deberá hacerlo a mano. Busque la configuración de compilación Runpath Search Paths y configúrela en:

$(inherited) @executable_path/Frameworks

ingrese la descripción de la imagen aquí

EDITAR: También debo agregar que ha habido una serie reciente de estos errores causados ​​por algo completamente diferente: Apple realizó un cambio en Swift, comenzando quizás en Xcode 6.1 o 6.1.1. La única solución parece ser salir de Xcode, destruir sus certificados en Keychain Access, ir al Centro de miembros y eliminar todos los certificados y perfiles (excepto los perfiles para aplicaciones en la Tienda; no puede eliminarlos) y luego iniciar el proceso de solicitud de certificado completo desde cero.

mate
fuente
3
Trabajó para mi. Actualicé a la última versión de Xcode y descubrí que esta ruta de configuración en mi proyecto conducía a la versión anterior.
ObjectiveTC
1
¡¡trabajó!! ¡Salvaste mi día! Estaba usando el control rápido de GitHub en el objetivo C con xcode 6 GM. Gracias.
imthegiga
1
Esto funcionó para mí también. Reiniciar Xcode no lo hizo.
Dan Loewenherz
1
trabajó para mi. Por cierto, recibí "Motivo: imagen no encontrada" al final del mensaje de error.
Peter Zhou
2
¡Gracias a Dios! ¡Allí estaba!
BoilingLime
79

No estoy realmente seguro de por qué esta pregunta se está rechazando, tuve este problema también cuando intenté usar Swift por primera vez con un proyecto existente. Un reinicio de Xcode también me arregló esto.

Adam Fox
fuente
20
Estoy tratando de usar Swift en un nuevo proyecto de iOS y recibo ese error cuando intento ejecutar en un dispositivo iOS 8, pero no en el simulador. Reiniciar Xcode, mi computadora portátil o mi teléfono no soluciona el problema. hay alguna otra solucion?
David Skrundz
2
Desafortunadamente, esto no funcionó para mí en Beta 4, al intentar lanzar una aplicación para Mac que utiliza un marco basado en Swift.
Craig Otis
Incluya el enlace @Developer en su respuesta porque realmente ayuda.
Lachezar Todorov
Intenta esto, pero también límpialo.
Scott McKenzie
55

Busqué mucho sobre este tema. Hay varias razones que causan este problema.

Si está enfrentando cuando usted y el código / biblioteca Swift en un proyecto Objectice C debe probar la Solución 1-2-3

Si se enfrenta a este problema con un nuevo proyecto de Swift, la Solución 4 le quedará mejor.

Solución 1:

Reinicie Xcode, luego computadora y iPhone

Solución 2:

Vaya a la configuración de compilación del proyecto y establezca Always Embed Swift Standard Libraries(anteriormente Embedded Content Contains Swift Code) el indicador enYES

Solución 3:

Vaya a la configuración de compilación del proyecto y agregue @executable_path/FrameworksaRunpath Search Paths opción

Solución 4:

Si ninguno de los anteriores funciona, esto debería. Apple parece ser un parche certificado ninja como se menciona en la publicación de AirSign

En los certificados de InHouse

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

agregaron un nuevo campo llamado OU

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

así que solo debes recrear el certificado y la provisión

reconoce
fuente
1
Anuncio 2: ahora se llama "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES" (vea el comentario a continuación, respuesta aceptada).
Raphael
1
Quería agregar ... los proyectos de macOS requieren @executable_path/../Frameworksdonde los proyectos de iOS lo requieren sin ..el medio. Cambiar este valor es importante si ha convertido un objetivo de un sistema operativo a otro.
Matt Gallagher
41

En mi caso, intentaba importar un marco personalizado y recibía un error similar. Resulta que tuve que importar el marco en los binarios incrustados en lugar de en los marcos vinculados y las bibliotecas.

Los binarios incrustados se encuentran en Configuración de proyectos -> -> General

C0D3
fuente
Me salvó el día! ¡Increíble!
Klaas
1
Estaba viendo este error, cuando trataba de usar un marco compilado escrito en forma rápida (en lugar de incrustar los archivos de origen como destino separado). La solución anterior también funcionó para mí.
alex da franca
Muchas gracias, salvó mi día completo.
Badrinath
1
Me funcionó después de intentar vincular un marco parcialmente escrito rápidamente en un proyecto antiguo que era completamente objetivo-c. Sin embargo, la configuración estaba en realidad en la configuración de compilación. Más información aquí: stackoverflow.com/questions/24163870/…
Pellet
Esto se encuentra en la configuración de Target, no en el proyecto, solo para estar seguro.
Legoless
16

Para los desarrolladores que han tenido este problema con las compilaciones de distribución Adhoc / Enterprise,

Cree el certificado de producción desde el portal de desarrollo y luego regenere el perfil de distribución. Descargue e instale ambos en su Mac. Asegúrese de seleccionar el perfil correcto en la configuración de compilación de Xcode y reconstruya su aplicación.

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

Easthelper
fuente
Si bien este enlace puede responder la pregunta, los enlaces se rompen. Como tal, se recomienda que incluya las partes clave del enlace. No se recomiendan respuestas de solo enlace.
Pokechu22
Trabajé para mi aplicación empresarial. ¡Gracias!
sylvanaar
15

Solución 5:

En mi caso, todas las soluciones mencionadas en la respuesta de accfews fueron muy útiles, pero ninguna funcionó. Resolví mi problema agregando mi rápida biblioteca en la sección "Binarios incrustados" en la sección "General" del objetivo de mi proyecto. ¿Quizás esto se deba al hecho de que he incluido mi marco rápido en mi espacio de trabajo? ¡Lo que sea que compila ahora! ¡Prepárate Swift, estoy aquí!

Chrstph SLN
fuente
OK, eso pareció funcionar. Solo estoy tratando de escribir una biblioteca de códigos rápida para un proyecto rápido. De alguna manera todavía me pregunto si esto es correcto. Sin embargo, estoy encantado de que funcione.
kpierce8
Había incluido mis marcos en la sección "Copiar marcos" de la pestaña Fases de compilación, pero no se pudo seleccionar un marco aquí. El "General" permitió la selección de este otro marco y lo agregó a las Fases de compilación, y la aplicación se compila y ejecuta. Curiosamente, aún podría ejecutar la aplicación en el simulador.
djbp
Gracias Christophe Al igual que usted, ha intentado todas las soluciones, y claramente no era intuitivo entender que una biblioteca rápida no se puede arrastrar de un proyecto a otro simplemente. Claramente, debe colocar la biblioteca en la sección incrustada (también conocido como módulo más rápido, dudo que pueda haber otro tipo de material incrustado). Incluso si Xcode pudiera detectarlo automáticamente y hacer el trabajo por nosotros ... Pero esa no es la tarea de nuestro querido XCode;), definitivamente aquí para perder nuestro tiempo ...
Sr. Bonjour
Además, si la biblioteca ya está en la lista, asegúrese de que esté marcada como "Incrustar y firmar". Esto soluciona mi problema.
SquareBox
10

Un simple reinicio de Xcode resolvió el problema para mí.

Anton
fuente
Voy a abofetear al próximo fanático de Apple que se burla de reiniciar Windows
Josh
5

Para mí, el problema se debió al hecho de que mi Autoridad de Certificación de Relaciones con Desarrolladores de Apple en todo el mundo no era válida.

Descárgalo desde aquí: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer

Arrástrelo y suéltelo en Keychain Access, limpie el proyecto y ejecútelo.

Eric
fuente
Esto comenzó a suceder después de que agregamos los derechos de CloudKit. Antes de eso, supongo que no le importaba que el certificado WWDR no fuera válido.
CommaToast
3

Tuve un proyecto Obj-C donde comencé a agregar archivos fuente rápidos. Lo siguiente solucionó el problema para mí:

  1. Enlace: RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
  2. Compilador Swift - Generación de código: EMBEDDED CONTENT CONTAINS SWIFT = YES

Acabo de crear un nuevo proyecto a partir de las plantillas Xcode 6.3 y comparé la configuración del proyecto con mi antiguo proyecto original.

pinzoni
fuente
3

Intente mantener presionada la tecla Alt, luego vaya a Producto -> Limpiar carpeta de compilación ...

Espero que ayude a alguien ...

stakahop
fuente
Esto no proporciona una respuesta a la pregunta. Una vez que tenga suficiente reputación , podrá comentar cualquier publicación ; en su lugar, proporcione respuestas que no requieran una aclaración del autor de la pregunta . - De la opinión
Rakete1111
Sucedió después de intentar agregar una nueva clase en el proyecto anterior. No hay información sobre la antigüedad del proyecto. Por lo tanto, la limpieza del proyecto y la actualización forzada de la memoria caché tienen sentido. El antiguo proyecto también implica que hay una buena posibilidad de que el certificado se cambie mientras tanto, porque los certificados de Apple Production and Developer caducan cada año. Lea acerca de la razón principal del error de acuerdo con las preguntas y respuestas técnicas de Apple en. developer.apple.com/library/ios/qa/qa1886/_index.html . Me pasó lo mismo y Clean Build Folder hace que el proyecto vuelva a ejecutarse. Que la gente lo intente ..
stakahop
Sucedió justo después de volver a cargar mi certificado de iOs. Una simple limpieza (menú del producto) y todo funciona bien ;-)
Sébastien REMY
Funcionó perfectamente. Gracias.
iSofia
3

Las razones para que esto ocurra son muchas. Después de pasar un fin de semana divertido encontrando otro problema que causa esto (el orden de la firma del código), quería crear una respuesta resumida que reúna todas las soluciones posibles:

  1. Agregar contenido incrustado contiene código Swift al proyecto. Debe configurar este indicador si su aplicación contiene un código Swift.
  2. Proyecto limpio . Además de un Proyecto> Limpiar , también puede eliminar los directorios DerivedDatay Build. Busque en las Preferencias la ubicación de DerivedData. Builddebe estar en la carpeta de tu proyecto.
  3. Asegúrese de que Runpath Search Paths contenga@executable_path/Frameworks .
  4. Asegúrese de que su certificado contenga su ID de equipo de Apple en el campo OU (Unidad de organización) Apple agregará esto por usted, simplemente revoque su certificado de distribución existente y cree uno nuevo, descargue, instale en KeyChain, regenere todos los perfiles de aprovisionamiento, descargue esos y reconstruir.
  5. Reinicio de Xcode. Si todo es básicamente bueno, pero Xcode aún no ha llegado allí.

Eso es lo fácil. Si está creando su propia línea de comando, puede estar creando sus propios .ipaarchivos para cargar. En ese caso, debe asegurarse de lo siguiente:

  1. Asegúrese de que la versión de los archivos Swift en SwiftSupport/iphoneos sea ​​la misma que la versión deContents/YourApp.app/Frameworks Swift. Debido a que Swift aún no es compatible binariamente entre versiones, debe asegurarse de que estas versiones sean las que compiló su aplicación. Puede encontrar estas bibliotecas en /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos.
  2. Firme primero las bibliotecas y los marcos . Primero necesita codesignlas bibliotecas y los archivos de marco (debajo Frameworksde la .appcarpeta) y luego firmar todo el .appárbol. El .appárbol debe estar firmado con un entitlements.plistpero no con los marcos.

Con suerte, cuando salga Swift 3.0 y ya no necesitemos combinar Swift con nuestras aplicaciones, todo este problema desaparecerá.

jlyonsmith
fuente
2

Tuve este problema usando una provisión móvil Ad Hoc (o empresarial) con un certificado de producción. El cambio a un certificado de desarrollo y provisión móvil resolvió el problema.

MacTeo
fuente
44
Eso podría permitirle ejecutar la aplicación en desarrollo, pero ¿cómo se implementará si un perfil ad-hoc o empresarial no funciona?
Kristopher Johnson
2

Mi proyecto es un proyecto Swift con algunas clases de Objective-C. Tuve el mismo problema cuando firmé con el antiguo certificado inHouse (empresa).

Los siguientes pasos me arreglaron esto.

  1. Cree y use un nuevo certificado y provisión móvil.
    (Ref. Blog de AIRSIGN )
  2. Establecer Runpath Search Pathsajuste de acumulación a: $(inherited) @executable_path/Frameworks.
    (Ref. La respuesta de matt )
jqgsninimo
fuente
2

Solución 6:

En nuestro caso, el Certificado de Distribución Empresarial había sido revocado. Generar un nuevo certificado y actualizar el perfil de aprovisionamiento solucionó el problema.

(Parece que hay muchas causas diferentes para este error. Espero que esto ayude a alguien).

picciano
fuente
Esto resolvió mi problema. Mierda, qué pérdida de tiempo tratar de arreglar esto. Espero que esto resuelva los problemas de otros usuarios. Pude depurar mi aplicación con mi marco personalizado, pero no pude ejecutar la versión de la máquina de compilación en jenkins. Revocar mis certificados de distribución y generar un nuevo perfil de aprovisionamiento empresarial arregló las compilaciones para mí.
cynistersix
2
Esto es lo mismo con la Solución 4
reconoce el
2

Intenté todas las respuestas dadas anteriormente, nada funcionó.

Finalmente funcionó después de actualizar a Yosemite

Prabu
fuente
2

Me he enfrentado al mismo problema, establecer la identidad de signo de código correcta resolvió el problema (Configuración de compilación-> Identidad de firma de código).

Según la pregunta técnica de Apple "Todos los certificados de desarrollador de iOS estándar y Enterprise que se crean después del lanzamiento de iOS 8 tienen el nuevo campo ID de equipo en el lugar adecuado para permitir que se ejecuten las aplicaciones de idioma Swift"

Saikiran K
fuente
2

Si agrega los tres marcos a través de binarios incrustados, también se agregarán a los marcos vinculados y las bibliotecas. Eliminar las tres entradas en Linked Frameworks and Libraries resolverá el problema.

Los métodos mágicos como relanzar Xcode y reiniciar Mac no funcionan en mí.

Arbipher
fuente
Gracias por mejorar el formato. Se ve mejor. "Bibliotecas y marcos vinculados" es una sección, no dos. Cambio "y" a negrita. @ Bartłomiej
Arbipher
Ua 来 shua fen zi shu bu ding
icemelon
2

Agregar Framework como "Binario incrustado" en lugar de simplemente "Marcos vinculados y bibliotecas" - Se solucionó mi problema.

También configuré el indicador Contenido incrustado contiene código rápido en SÍ.

Naveen Shan
fuente
1

Actualice a la última versión de OS X (Yosemite)

Después de horas de prueba y error, llegué a la resolución de este problema. - Si esto se aplica a su caso, por supuesto.

Tuve el mismo problema hasta que actualicé mi Mac OS X de Mavericks a Yosemite. - Solucionó mi problema, espero que también solucione el tuyo

Activamente perezoso
fuente
1

Probé todas las soluciones que encontré en la web, incluso para Apple y nuevos certificados. Sin éxito.

La única forma en que podía ejecutar xcode, después de 6 meses de intentarlo, era creando una nueva cuenta en mi macbook.

Eldervaz Vaz
fuente
1

Por lo general, este error desaparecerá si agrega esta biblioteca al segmento "Copiar archivos" en sus Fases de compilación.

raphael_mav
fuente
Esto funcionó para mí en XCode 7.2.1. Usé el + en el panel Fases de compilación, seleccioné Nueva fase de copiar archivos, luego arrastré el marco desde el árbol del espacio de trabajo a la sección Copiar archivos. Finalmente seleccioné Destino: Marcos. Después de una compilación limpia, mi aplicación comenzó como se esperaba.
Rob Smallshire
1

Y si todo lo anterior no te ayuda y realmente te frustras ... Prueba el mejor truco de todos: Cleany solo para estar seguro también Clean Build Folder. :) Espero que ayude a alguien!

Georg
fuente
1

Ninguna de estas soluciones parecía funcionar constantemente para mí; después de cada par de ejecuciones exitosas, volvería a fallar. El indicador "El contenido incrustado contiene un código rápido" siempre se configuró en SÍ para mí.

Resulta que configuré Xcode para que sea compatible con 6.3. Cambiando de nuevo para que sea compatible con 3.2 lo resolvió:

Brandonscript
fuente
¡Gracias! Intenté todo lo demás. Lo cambié a 3.2, limpié el proyecto, reinicié Xcode y funcionó
gabriellanata
1

También tuve este problema, solo que no estaba localizando libswiftXCTest.dylib .

La solución fue agregar XCTest.frameworkal objetivo Pruebas, en Build Phases/Link Binary with Library. Recibía este error incluso cuando intentaba construir el objetivo principal.

Lord Zsolt
fuente
0

Esto apareció cuando agregué un nuevo objetivo de extensión Today con lenguaje Swift a un proyecto antiguo. Se soluciona fácilmente actualizando el proyecto a la configuración recomendada. Xcode 6.0.1

Vilém Kurz
fuente
0

Tuve el mismo problema usando Mavericks, Xcode 6.1.1, probando en un iPhone5 con iOS 8.1.1. Intenté todas las soluciones posibles, incluidos los nuevos certificados y los perfiles de aprovisionamiento, pero nada me ayudó. Hice los cambios a Embedded Content Contains Swift CodeyRunpath Search Paths tanto a nivel de proyecto y el nivel de destino.

Ahora he instalado Yosemite, y sin más cambios, comenzó a funcionar.

patrik
fuente
0

El mismo problema aquí, para mí fue Crashlytics / Fabric / Beta / Twitter / Como se llamen cargando un binario que faltaba los marcos incrustados. Si hice un archivo y luego exporté una compilación Enterprise de la manera estándar, funcionaron de maravilla.

rob5408
fuente
0

Mi entorno: Cocos2d 2.0, Box2d, Objetivo C

Además de hacer las otras respuestas anteriores, finalmente fui a la pestaña General e hice WatchKit Opcional.

Objetivos: General: Marcos vinculados y bibliotecas: WatchKit.framework: Opcional

Jim Rota
fuente
0

Después de meses y meses intentando todo aquí ... Definición de locura ... iniciar Xcode con un nuevo usuario de Mac lo resolvió por mí.

Eliminé ~ / Library / Developer / * y reinstalé Xcode, así que no tengo idea de qué más formatear para que funcione.

wcribbs
fuente