Ошибка dyld: Library not loaded: @rpath/libswiftCore.dylib при запуске iOS приложения
Причина ошибки
Ошибка dyld: Library not loaded: @rpath/libswiftCore.dylib возникает, когда динамический линковщик (dyld) не может найти библиотеку Swift runtime (libswiftCore.dylib) во время запуска приложения. В вашем случае указано wrong architecture — это ключевая подсказка. Проблема в несовместимости архитектуры бинарного файла библиотеки с архитектурой симулятора, на котором вы запускаете приложение.
Современные Mac с процессорами Apple Silicon (M1, M2, M3) используют архитектуру arm64 как для реальных устройств, так и для симуляторов. Однако более старые Mac с процессорами Intel используют x86_64 для симуляторов. Если вы используете Mac с Apple Silicon, но Xcode пытается загрузить библиотеку, собранную для x86_64, возникает конфликт. Чаще всего это происходит, когда:
- В Build Settings неправильно настроены архитектуры (
ARCHS) - Используется устаревшая версия Xcode или CocoaPods
- В проекте есть зависимости, собранные только для одной архитектуры
Решение 1: Проверка настроек архитектур в Xcode
Самый простой способ — убедиться, что ваш проект поддерживает обе архитектуры. Сделайте следующее:
- Выберите ваш проект в навигаторе (синяя иконка сверху)
- Перейдите на вкладку Build Settings
- Найдите параметр Architectures (или
ARCHS) - Установите значение
Standard Architectures (arm64, x86_64)для Debug и Release конфигураций - Проверьте параметр Excluded Architectures — он должен быть пустым или содержать
arm64только для симулятора, если вы используете Rosetta
Также убедитесь, что в Build Settings параметр Build Active Architecture Only установлен в Yes для Debug (это ускоряет сборку) и No для Release.
Решение 2: Очистка DerivedData и пересборка
Иногда остаются кэшированные бинарные файлы. Выполните:
1. Product → Clean Build Folder (или Shift+Cmd+K)
2. Закройте Xcode
3. В терминале выполните: rm -rf ~/Library/Developer/Xcode/DerivedData/*
4. Откройте Xcode и пересоберите проект (Cmd+B)
Решение 3: Проверка настроек симулятора
Убедитесь, что вы используете правильный симулятор:
- Для Mac с Apple Silicon: выберите симулятор iPhone с архитектурой
arm64(например, iPhone 14 Pro). Не используйте симуляторы, помеченные как "Rosetta" - Для Mac с Intel: выберите любой симулятор — они все работают на
x86_64
Если вы на Apple Silicon, проверьте, что Xcode запущен нативно (не через Rosetta). Откройте Finder → Applications, найдите Xcode, нажмите Get Info и убедитесь, что галочка Open using Rosetta не стоит.
Решение 4: Использование CocoaPods или SPM
Если в проекте используются сторонние библиотеки, добавьте в Podfile (для CocoaPods):
post_install do |installer|
installer.pods_project.build_configurations.each do |config|
config.build_settings['EXCLUDED_ARCHS[sdk=iphonesimulator*]'] = 'arm64'
end
end
Для Swift Package Manager убедитесь, что вы используете последнюю версию Xcode (14.3+), где эта проблема исправлена.
Решение 5: Переключение на физическое устройство
Как временное решение — запустите приложение на реальном iPhone или iPad. Ошибка wrong architecture характерна только для симуляторов, на устройстве всё должно работать.
После применения этих шагов перезапустите симулятор (Simulator → Reset Content and Settings) и соберите проект заново. Ошибка должна исчезнуть.
<<Альтернативный подход: Использование Rosetta 2 для симулятора
Если вы работаете на Mac с Apple Silicon (M1/M2/M3) и не хотите менять настройки проекта, можно запустить Xcode и симулятор в режиме эмуляции Intel через Rosetta 2. Это решает проблему несовместимости архитектур, но снижает производительность.
Шаги:
- Закройте Xcode и симулятор
- В Finder найдите Xcode в папке Applications
- Нажмите правой кнопкой мыши → Get Info (или Cmd+I)
- Установите галочку Open using Rosetta
- Запустите Xcode снова
- В меню выберите симулятор, например, iPhone 14 Pro (он будет работать в режиме x86_64)
После этого ошибка wrong architecture исчезнет, так как все библиотеки будут загружаться в архитектуре Intel. Однако помните, что это временное решение — для продакшена лучше настроить проект правильно, как описано в первом ответе.
Также проверьте, что в Build Settings параметр Always Embed Swift Standard Libraries установлен в Yes. Иногда Xcode не внедряет Swift runtime автоматически, и это вызывает подобные ошибки.