dyld: Library not loaded: @rpath/libswiftCore.dylib: como corrigir o erro

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

«Puf — e o aplicativo caiu»: conhecendo dyld: Library not loaded: @rpath/libswiftCore.dylib

\n\n

Você já iniciou seu aplicativo Swift, viu uma bela tela de splash, e então — bum! — tela preta e um console cheio de letras vermelhas? Familiar? Se você já se deparou com a mensagem dyld: Library not loaded: @rpath/libswiftCore.dylib, conhece aquela sensação de leve pânico. No Stack Overflow, essa pergunta acumulou milhares de visualizações, e não é à toa: o erro é traiçoeiro, mas totalmente solucionável.

\n\n

Neste artigo, não vamos apenas dar uma instrução seca. Vamos analisar por que as bibliotecas Swift «se perdem» em tempo de execução, como evitar isso e o que fazer se você já se meteu nessa enrascada. Vamos nessa!

\n\n

O que é dyld e por que ele está irritado?

\n\n

dyld (dynamic link editor) é o carregador de bibliotecas dinâmicas no macOS e iOS. Quando seu aplicativo é iniciado, o dyld procura todas as bibliotecas necessárias nos caminhos especificados no binário. Um desses caminhos é @rpath (caminho de pesquisa em tempo de execução). Se a biblioteca (por exemplo, libswiftCore.dylib) não for encontrada nesse caminho, o dyld falha com o erro.

\n\n

Simplificando: você disse ao aplicativo «pegue o livro na prateleira @rpath», mas a prateleira estava vazia. É todo o mistério.

\n\n

Por que isso acontece especificamente com libswiftCore.dylib?

\n\n

libswiftCore.dylib é o núcleo do Swift runtime. Sem ele, nenhum código Swift funciona. O erro geralmente ocorre em três casos:

\n\n
    \n
  • Você está usando Xcode 14+ e o projeto está configurado para uma versão antiga do Swift.
  • \n
  • Você está conectando frameworks ou CocoaPods que exigem uma versão específica do Swift runtime.
  • \n
  • Você esqueceu de ativar «Always Embed Swift Standard Libraries» nas configurações de build.
  • \n
\n\n

5 maneiras de corrigir dyld: Library not loaded: @rpath/libswiftCore.dylib

\n\n

Vamos para a prática. Abaixo estão métodos comprovados, do mais simples ao mais complexo. Para cada um, darei um exemplo de código ou configurações.

\n\n

1. Ative «Always Embed Swift Standard Libraries»

\n\n

O culpado mais comum. Se seu aplicativo não incorpora as bibliotecas Swift no bundle, o dyld não as encontrará no dispositivo.

\n\n

Como corrigir:

\n
    \n
  1. Abra o projeto no Xcode.
  2. \n
  3. Selecione Target → Build Settings.
  4. \n
  5. Encontre Always Embed Swift Standard Libraries.
  6. \n
  7. Defina o valor como Yes.
  8. \n
\n\n

Se você usa CocoaPods, verifique se no Podfile não há uma linha desativando esse comportamento:

\n\n
# Ruim (pode causar o erro)\npost_install do |installer|\n  installer.pods_project.targets.each do |target|\n    target.build_configurations.each do |config|\n      config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'NO'\n    end\n  end\nend\n\n# Bom\npost_install do |installer|\n  installer.pods_project.targets.each do |target|\n    target.build_configurations.each do |config|\n      config.build_settings['ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES'] = 'YES'\n    end\n  end\nend\n
\n\n

2. Verifique a compatibilidade das versões do Swift

\n\n

Se você conectou um framework compilado com Swift 5.7, mas seu projeto está no Swift 5.5 — olá, erro. O Swift runtime não é 100% retrocompatível.

\n\n

Solução: certifique-se de que todas as dependências usam a mesma versão do Swift. Abra o terminal e execute:

\n\n
# Descobrir a versão do Swift para um .framework específico\nstrings MyFramework.framework/MyFramework | grep "Swift"\n# Ou verifique via xcrun\nxcrun swift --version\n
\n\n

Se o framework foi compilado com outra versão — recompile-o ou atualize-o.

\n\n

3. Limpe os Derived Data e reconstrua o projeto

\n\n

Às vezes, o Xcode armazena em cache caminhos antigos para as bibliotecas. Uma reconstrução completa geralmente resolve o problema.

\n\n
# Remover Derived Data manualmente\nrm -rf ~/Library/Developer/Xcode/DerivedData                

Blogs

Book Recommendations