dyld: Biblioteca não carregada: @ rpath / libswift_stdlib_core.dylib

205

Eu recebo esse erro depois de adicionar uma classe Swift a um projeto antigo do Xcode.

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

Como posso executar o projeto novamente?

Anton
fonte
Você também pode querer olhar para stackoverflow.com/questions/38364320 que mostra como depurar isso usandootool
Jim Hayes
2017 - incrivelmente, apenas reiniciar o Xcode resolveu esse problema hediondo para mim.
Fattie

Respostas:

152

Para mim, nenhuma das soluções anteriores funcionou. Descobrimos que existe um sinalizador ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES(nas versões anteriores: "Conteúdo incorporado contém código Swift") nas Configurações de compilação que precisam ser definidas como YES. Não era por padrão!

mukaissi
fonte
Isso corrigiu para mim também, mudei a configuração da extensão para true. O projeto é objc mas o ext é rápida e não funcionou desde o início
Cristi Baluta
Esta foi a minha resolução também. Eu tenho um projeto de aplicativo iOS existente (ObjC) ao qual estou adicionando uma Extensão Hoje (novo destino no projeto, a extensão é um plug-in para o aplicativo principal). Eu tive que ir para as configurações de destino do aplicativo e ativar o problema de Configuração da compilação e viola ... desapareceu. Faz sentido, mas, considerando a quantidade de outras coisas que o Xcode 6.0 configura automaticamente para você, é uma pena que essa opção essencial tenha sido ignorada.
hsoi 16/09
Isso corrigiu o meu problema - tínhamos um projeto mais antigo com muitos ObjC, aos quais começamos a adicionar o Swift recentemente. Embora o IPA tenha sido construído e incluísse as bibliotecas Swift, ele não funcionou em alguns dispositivos iOS7 até que essa configuração de compilação tenha sido verificada e fizemos um novo IPA. Isso funcionou em todos os nossos dispositivos problemáticos.
Kendall Helmstetter Gelner
1
Nada funcionou além disso. Você é um bruxo, meu bom senhor!
Ricky Hartmann
2
Conteúdo incorporado contém uso obsoleto do código Swift ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
nivritgupta
91

Este erro pode ocorrer se algo der errado durante a conversão de um projeto Objective-C para começar a usar o Swift. O problema é que as configurações de compilação do Linker nunca foram definidas corretamente, portanto, você precisará fazer isso manualmente. Procure a configuração de construção dos Caminhos de Pesquisa de Caminho de Execução e defina-a como:

$(inherited) @executable_path/Frameworks

insira a descrição da imagem aqui

EDIT: Devo também acrescentar que houve uma onda recente desses erros causados ​​por algo completamente diferente - a Apple fez uma alteração no próprio Swift, talvez começando no Xcode 6.1 ou 6.1.1. A única solução parece ser encerrar o Xcode, destruir seus certificados no Keychain Access, acessar a Central de Membros e excluir todos os certificados e perfis (exceto os perfis de aplicativos da Loja - você não pode excluí-los) e iniciar o processo de solicitação de certificado inteiro do zero.

mate
fonte
3
Trabalhou para mim. Atualizei para a versão mais recente do Xcode e constatei que esse caminho de configuração no meu projeto estava levando à versão mais antiga.
ObjectiveTC
1
trabalhou !! você salvou meu dia! Eu estava usando o controle rápido do GitHub no objetivo C com xcode 6 GM. Obrigado.
Imgamegiga>
1
Isso funcionou para mim também. Reiniciar o Xcode não.
Dan Loewenherz
1
trabalhou para mim. Aliás, recebi "Motivo: imagem não encontrada" no final da mensagem de erro.
Peter Zhou
2
Graças a Deus! Lá estava!
BoilingLime
79

Não tenho muita certeza do motivo pelo qual essa pergunta está sendo votada, eu também tive esse problema quando tentei usar o Swift em um projeto existente. Uma reinicialização do Xcode também corrigiu isso para mim.

Adam Fox
fonte
20
Estou tentando usar o swift em um novo projeto iOS e recebo esse erro ao tentar executar em um dispositivo iOS 8, mas não no simulador. Reiniciar o Xcode, meu laptop ou telefone não corrige o problema. existe alguma outra solução?
David Skrundz
2
Infelizmente, isso não funcionou para mim no Beta 4, tentando iniciar um aplicativo para Mac que usa uma estrutura baseada no Swift.
Craig Otis
Inclua o link @Developer na sua resposta, pois isso realmente ajuda.
Lachezar Todorov 29/04
Tente isso, mas jogue em um local limpo também.
Scott McKenzie
55

Pesquisei muito sobre esse assunto. Existem vários motivos que causam esse problema.

Se você estiver enfrentando quando você e o código / biblioteca Swift em um projeto do Objectice C, tente a Solução 1-2-3

Se você estiver enfrentando esse problema com um novo projeto, a Swift Solution 4 será a melhor para você.

Solução 1:

Reinicie o Xcode, depois o computador e o iPhone

Solução 2:

Vá para as configurações de construção do projeto e defina Always Embed Swift Standard Libraries(anteriormente Embedded Content Contains Swift Code) o sinalizador paraYES

Solução 3:

Vá para as configurações de construção do projeto e adicione @executable_path/Frameworksà Runpath Search Pathsopção

Solução 4:

Se nenhuma das opções acima funcionar, isso deve acontecer. A Apple parece ser um certificado ninja, conforme mencionado no post da AirSign

Nos certificados InHouse

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

eles adicionaram um novo campo chamado OU

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

então você deve recriar certificado e provisão

accfews
fonte
1
Anúncio 2: agora é chamado "ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES" (veja o comentário abaixo da resposta aceita).
Raphael
1
Eu queria adicionar ... os projetos macOS exigem @executable_path/../Frameworksonde os projetos iOS exigem, sem ..o meio. Alterar esse valor é importante se você tiver convertido um destino de um sistema operacional para outro.
Matt Gallagher
41

No meu caso, eu estava tentando importar uma estrutura personalizada e estava recebendo o erro semelhante. Acontece que eu tive que importar a estrutura nos binários incorporados, e não nas estruturas e bibliotecas vinculadas.

Os binários incorporados estão em Configurações de projetos -> -> Geral

C0D3
fonte
Salvou o meu dia! Impressionante!
Klaas
1
Eu estava vendo esse erro, ao tentar usar uma estrutura compilada escrita em swift (em vez de incorporar os arquivos de origem como destino separado). A solução acima funcionou para mim também.
Alex da franca
Muito obrigado, salvou meu dia inteiro.
Badrinath
1
Trabalhou para mim depois de tentar vincular uma estrutura parcialmente escrita rapidamente em um projeto antigo que era inteiramente objetivo-c. A configuração estava realmente nas configurações de compilação. Mais informações aqui: stackoverflow.com/questions/24163870/...
Pellet
Isso está nas configurações de destino, não no projeto, apenas para ter certeza.
Legoless
16

Para desenvolvedores que tiveram esse problema com uma compilação de distribuição Adhoc / Enterprise,

Crie o certificado de produção no portal dev e gere novamente o perfil de distribuição. Baixe e instale os dois no seu Mac. Verifique se você selecionou o perfil certo nas configurações de compilação do Xcode e reconstrua seu aplicativo.

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

easthelper
fonte
Embora esse link possa responder à pergunta, os links quebram. Como tal, é recomendável que você inclua as principais partes do link. Respostas somente para links não são recomendadas.
precisa saber é o seguinte
Trabalhei para o meu aplicativo corporativo. Obrigado!
Sylvanaar
15

Solução 5:

No meu caso, todas as soluções mencionadas na resposta dos accfews foram muito úteis, mas nenhuma funcionou. Resolvi meu problema adicionando minha biblioteca rápida na seção "Binários incorporados" na seção "Geral" do destino do meu projeto. Talvez isso se deva ao fato de eu ter incluído minha estrutura rápida no meu espaço de trabalho? Tudo o que compila agora! Prepare-se Swift, estou aqui!

Chrstph SLN
fonte
OK, isso parecia funcionar. Estou apenas tentando escrever uma biblioteca de códigos rápida para um projeto rápido. De alguma forma, eu ainda me pergunto se isso está correto. No entanto, estou emocionado com o seu trabalho.
kpierce8
Eu incluí minhas estruturas na seção "Copiar estruturas" da guia Fases de construção - mas uma estrutura não pôde ser selecionada aqui. O "Geral" permitiu a seleção dessa outra estrutura e a adicionou às fases de construção, e o aplicativo cria e executa. Estranhamente, eu ainda podia executar o aplicativo no simulador.
djbp
Obrigado Christophe. Como você, já tentou todas as soluções, e claramente não era intuitivo entender que uma biblioteca rápida não pode ser arrastada para um projeto para outro simplesmente. Você claramente precisa colocar a biblioteca na seção incorporada (também conhecido como módulo mais claramente rápido, duvido que possa haver outro tipo de material incorporado). Mesmo se Xcode poderia muito bem detectá-lo automaticamente e fazer o trabalho para nós ... Mas essa não é a tarefa do nosso amado XCode;), definitivamente aqui para perder tempo ...
Sr. Bonjour
Além disso, se a biblioteca já estiver na lista, verifique se está marcada como "Incorporar e assinar". Isso corrige meu problema.
SquareBox 26/11/19
10

Uma simples reinicialização do Xcode resolveu o problema para mim.

Anton
fonte
Eu vou dar um tapa na próxima fanboy da Apple que faz o divertimento fora de redefinir o Windows
Josh
5

Para mim, o problema ocorreu devido ao fato de minha Autoridade de Certificação Apple Relations Worldwide Developer ser inválida.

Faça o download aqui: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer

Arraste e solte-o no Keychain Access, limpe o projeto e execute.

Eric
fonte
Isso começou a acontecer depois que adicionamos o direito ao CloudKit. Antes disso, acho que não importava que o certificado WWDR fosse inválido.
CommaToast
3

Eu tinha um projeto Obj-C onde comecei a adicionar arquivos de origem rápidos. O seguinte corrigiu o problema para mim:

  1. Ligação: RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
  2. Swift Compiler - Geração de Código: EMBEDDED CONTENT CONTAINS SWIFT = YES

Acabei de criar um novo projeto a partir dos modelos Xcode 6.3 e comparei as configurações do projeto com o meu antigo projeto original.

pinzoni
fonte
3

Tente segurar a tecla Alt e vá para Produto -> Limpar pasta de compilação ...

Espero que ajude alguém ..

stakahop
fonte
Isso não fornece uma resposta para a pergunta. Depois de ter reputação suficiente, você poderá comentar qualquer postagem ; em vez disso, forneça respostas que não exijam esclarecimentos do solicitante . - Do comentário
Rakete1111
Isso aconteceu depois de tentar adicionar uma nova classe no projeto antigo. Não há informações sobre a idade do projeto. Portanto, a limpeza do projeto e a atualização forçada do cache fazem sentido. O projeto antigo também implica que há uma boa chance de o certificado ser alterado enquanto isso, porque os certificados de produção e desenvolvedor da Apple expiram a cada ano. Leia sobre o principal motivo do erro, de acordo com as perguntas e respostas técnicas da apple em. developer.apple.com/library/ios/qa/qa1886/_index.html . A mesma coisa aconteceu comigo e o Clean Build Folder faz com que o projeto seja executado novamente. Permita que as pessoas tentam ..
stakahop
Aconteceu logo após recarregar meu certificado de iOs. Um simples Limpo (menu Product) e tudo funciona bem ;-)
Sébastien REMY
Funcionou perfeitamente. Obrigado.
ISofia
3

As razões para isso ocorrer são muitas. Depois de passar um fim de semana divertido, encontrando mais um problema que causa isso (a ordem da assinatura do código), eu queria criar uma resposta resumida que reunisse todas as soluções possíveis:

  1. Adicionar conteúdo incorporado Contém código Swift ao projeto. Você precisa definir esse sinalizador se seu aplicativo contiver código Swift.
  2. Projeto limpo . Além de um Projeto> Limpar, você também pode excluir os diretórios DerivedDatae Build. Procure nas Preferências a localização de DerivedData. Builddeve estar na sua pasta do projeto.
  3. Verifique se os caminhos de pesquisa do caminho de execução contêm@executable_path/Frameworks .
  4. Verifique se o seu certificado contém o seu ID da equipe Apple no campo OU (Unidade da organização). A Apple adicionará isso para você, basta revogar o seu certificado de distribuição existente e criar um novo, fazer o download, instalar no KeyChain, regenerar todos os perfis de aprovisionamento, baixar os e reconstruir.
  5. Reinício do Xcode. Se tudo estiver basicamente bom, mas o Xcode ainda não chegou lá.

Essa é a coisa mais fácil. Se você estiver criando sua própria linha de comando, poderá criar seus próprios .ipaarquivos para upload. Nesse caso, você precisa garantir o seguinte:

  1. Verifique se a versão dos arquivos Swift SwiftSupport/iphoneosé a mesma que a versão emContents/YourApp.app/Frameworks Como o Swift ainda não é compatível com binários entre versões, você deve garantir que essas versões sejam as que você criou seu aplicativo. Você pode encontrar essas bibliotecas em /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos.
  2. Assine as bibliotecas e estruturas primeiro . Você precisa primeiro codesigndas bibliotecas e dos arquivos de estrutura (abaixo Frameworksda .apppasta) e depois assinar a .appárvore inteira . A .appárvore deve ser assinada com uma estrutura, entitlements.plistmas não com ela .

Felizmente, quando o Swift 3.0 for lançado e não precisarmos mais empacotar o Swift com nossos aplicativos, todo esse problema desaparecerá.

jlyonsmith
fonte
2

Eu tive esse problema usando uma provisão móvel Ad Hoc (ou corporativa) com um certificado de produção. A mudança para um certificado de desenvolvimento e a provisão móvel resolveram o problema.

MacTeo
fonte
4
Isso pode permitir que você execute o aplicativo em desenvolvimento, mas como será implantado se um perfil ad-hoc ou corporativo não funcionar?
Kristopher Johnson
2

Meu projeto é um projeto Swift com algumas classes de Objective-C. Eu tive o mesmo problema ao assinar com o certificado inHouse (corporativo) antigo.

Os seguintes passos corrigiram isso para mim.

  1. Crie e use um novo certificado e provisão móvel.
    ( Blog do Ref. AIRSIGN )
  2. Definir Runpath Search Pathsconfiguração de compilação para: $(inherited) @executable_path/Frameworks.
    (Ref. Resposta de matt )
jqgsninimo
fonte
2

Solução 6:

No nosso caso, o certificado de distribuição corporativa foi revogado. A geração de um novo certificado e a atualização do perfil de provisionamento corrigiram o problema.

(Parece haver muitas causas diferentes para esse erro. Espero que isso ajude alguém.)

picciano
fonte
Isso resolveu meu problema. Caramba, que perda de tempo tentando consertar isso. Espero que isso resolva os problemas de outros usuários. Consegui depurar meu aplicativo com minha estrutura personalizada, mas não consegui executar a versão da máquina de compilação no jenkins. Revogar meus certificados de distribuição e gerar um novo perfil de provisionamento corporativo corrigiu as compilações para mim.
precisa
2
O mesmo acontece com a Solução 4
accfews
2

Eu tentei todas as respostas dadas acima, nada funcionou.

Finalmente trabalhou após a atualização para Yosemite

Prabu
fonte
2

Eu enfrentei o mesmo problema, definir a identidade correta do sinal de código resolveu o problema (Configurações da compilação-> Identidade de assinatura de código).

De acordo com a pergunta técnica da Apple "Todos os certificados corporativos e padrão de desenvolvedor iOS criados após o lançamento do iOS 8 têm o novo campo ID da equipe no local apropriado para permitir a execução de aplicativos no idioma Swift"

Saikiran K
fonte
2

Se você adicionar as três estruturas via binários incorporados, elas também serão adicionadas às estruturas e bibliotecas vinculadas. Exclua as três entradas nas estruturas vinculadas e as bibliotecas resolverão o problema.

Métodos mágicos como reiniciar o Xcode e reiniciar o Mac não funcionam comigo.

Arbipher
fonte
Obrigado por melhorar o formato. Parece melhor. "Frameworks e bibliotecas vinculadas" é uma seção, não duas. Eu mudo "e" para negrito. @ Bartłomiej
Arbipher
Ua 来 shua fen zi shu bu ding
icemelon 20/10/2015
2

Adicionando Framework como "Binário Incorporado" em vez de apenas "Frameworks e Bibliotecas Vinculadas" - Corrigido meu problema.

Também defino o sinalizador Conteúdo incorporado contém código Swift como YES.

Naveen Shan
fonte
1

Atualize para a versão mais recente do OS X (Yosemite)

Após horas de tentativa e erro, cheguei à resolução deste problema. - Se isso se aplica ao seu caso, é claro.

Eu tive o mesmo problema até atualizar meu Mac OS X de Mavericks para Yosemite. - Corrigiu o meu problema, espero que conserte o seu também

Ativamente preguiçoso
fonte
1

Eu tentei todas as soluções encontradas na web, incluindo a Apple e novos certificados. Sem sucesso.

A única maneira de executar o xcode, após 6 meses de tentativas, era criar uma nova conta no meu macbook.

Eldervaz Vaz
fonte
1

Normalmente, esse erro desaparecerá se você adicionar esta biblioteca ao segmento "Copiar arquivos" em suas fases de criação.

raphael_mav
fonte
Isso funcionou para mim no XCode 7.2.1. Usei o + no painel Fases de construção, selecionei Fase de novos arquivos de cópia e arrastei a estrutura da árvore da área de trabalho para a seção Copiar arquivos. Por fim, selecionei Destination: Frameworks. Após uma compilação limpa, meu aplicativo foi iniciado conforme o esperado.
precisa saber é o seguinte
1

E se todas as opções acima não ajudarem e você realmente ficar frustrado ... Tente o melhor truque de todos: Cleane só para ter certeza Clean Build Folder. :) Espero que ajude alguém!

Georg
fonte
1

Nenhuma dessas soluções parecia funcionar consistentemente para mim; depois de duas execuções bem-sucedidas, ela falharia novamente. O sinalizador "Conteúdo incorporado contém código Swift" sempre foi definido como SIM para mim.

Acontece que eu definiria o Xcode como compatível com 6.3. Alterando-o novamente para ser compatível com 3.2, resolvi-o:

brandonscript
fonte
Obrigado! Eu tentei de tudo. Mudei-lo de volta para 3,2, limpou o projeto, reiniciado Xcode um funcionou
gabriellanata
1

Eu também tive esse problema, mas ele não foi localizado libswiftXCTest.dylib.

A solução foi adicionar XCTest.frameworkao destino dos testes, em Build Phases/Link Binary with Library. Eu estava recebendo esse erro mesmo quando tentava criar o alvo principal.

Lord Zsolt
fonte
0

Isso apareceu quando adicionei um novo destino de extensão Today com linguagem Swift a um projeto antigo. Corrigido facilmente, atualizando o projeto para as configurações recomendadas. Xcode 6.0.1

Vilém Kurz
fonte
0

Eu tive o mesmo problema usando o Mavericks, Xcode 6.1.1, testando em um iPhone5 com iOS 8.1.1. Tentei todas as soluções possíveis, incluindo novos certificados e perfis de provisionamento, mas nada ajudou. Fiz as alterações Embedded Content Contains Swift Codee Runpath Search Pathsno nível do projeto e no alvo.

Agora instalei o Yosemite e, sem mais alterações, ele começou a funcionar.

patrik
fonte
0

O mesmo problema aqui, para mim, foi o Crashlytics / Fabric / Beta / Twitter / o que eles chamam de upload de um binário que estava faltando nas estruturas incorporadas. Se eu fizesse um arquivo e exportasse uma versão Enterprise da maneira padrão, eles funcionariam muito bem.

rob5408
fonte
0

Meu ambiente: Cocos2d 2.0, Box2d, Objective C

Além de fazer as outras respostas acima, finalmente fui para a guia Geral e tornei o WatchKit opcional.

Destinos: Geral: Estruturas e Bibliotecas Vinculadas: WatchKit.framework: Opcional

Jim Rota
fonte
0

Depois de meses e meses tentando de tudo aqui ... Definição de insanidade ... iniciar o Xcode sob um novo usuário de Mac resolveu isso para mim.

Eu removi o ~ / Library / Developer / * e reinstalei o Xcode - então não faço idéia do que mais formatar para fazê-lo funcionar.

wcribbs
fonte