2016-12-06 4 views
6

Я создал фреймворк Swift, и теперь я пытаюсь начать создание приложения Swift iOS, которое будет использовать эту инфраструктуру. Я получаю эту ошибку:dyld: библиотека не загружена: @ rpath/libswiftSwiftOnoneSupport.dylib

dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib 
    Referenced from: /Users/tdean/Library/Developer/Xcode/DerivedData/NFLApplication-ejmafvjrlqgjaabggwvadjarjjlg/Build/Products/Debug-iphonesimulator/NFLStatsModel.framework/NFLStatsModel 
    Reason: image not found 

Я рыскал SO и нашли подобные отчеты и попытался исправления, перечисленные в нем, в том числе:

  • Расчетной мою папку DerivedData
  • перезапуску Xcode а iPhone симулятор
  • Обеспечение того, чтобы Always Embed Swift Standard Libraries = YES установлен, как в моей рамки и параметры сборки моего приложения
  • Обеспечение того, чтобы Enable Bitcode=NO установлено, как в моих рамках и параметрах сборки моего приложения
  • Обеспечение, что Runpath Search Paths установлен в @executable_path/Frameworks, как в моих рамках и параметрах сборки моего приложения
  • скопировал все libswift файлы из моей установки Xcode в локальную копию в моем проекте, и добавлена ​​настраиваемая фаза сборки для копирования этих файлов в папку фреймворков.

В каждом случае я получаю ту же ошибку, когда пытаюсь запустить приложение.

  • Xcode версии 8.1 (8B62)
  • компании Apple Swift версия 3.0.1 (swiftlang-800.0.58.6 лязг-800.0.42.1)
+0

предложение Longshot: добавьте '@executable_path /../ Frameworks' к вашим путям поиска в вашей среде. –

+0

@JoeDaniels - Нет разницы, когда я добавляю это. Спасибо за предложение. –

+0

О, как насчет быстрой языковой версии? это все 3.0? –

ответ

21

В конце концов я получил эту работу, используя комбинацию исправлений. Я не уверен, что все они нужны, но я документирую, что, казалось, работает для меня здесь, на всякий случай, если кто-то может выиграть от того, что я нашел.

  1. Я поставил Always Embed Swift Standard Libraries до значения YES на вкладке Настройки сборки как для моей Swift рамок и в Swift приложения, которое использует рамку.
  2. Я добавил Foundation.framework в раздел «Связанные рамки и библиотеки» общей вкладки как для моей инфраструктуры Swift, так и для приложения Swift, которое использует фреймворк.
  3. Я добавил Foundation.framework в раздел «Встроенные фрагменты» общей вкладки для приложения Swift, которое использует фреймворк.

Со всеми тремя этими настройками на месте я могу создавать и запускать приложение без возникновения этой ошибки.

+0

СПАСИБО! Я потратил два часа на создание демонстрационной функции приложения/рамки производственного приложения, над которым я работаю. Дважды, строя вещи, я столкнулся с этой точной ошибкой. По какой-то причине я мог зацикливаться (перебирать) через массив пользовательских UIButtons в структуре, но в тот момент, когда я пытался получить доступ к чему-либо в цикле, я получил эту ошибку. FYI: Я тестировал каждую вещь, а только *, которую мне нужно было добавить, было №1. Эта новая функция была разработана исключительно в Xcode 8 и работает (я не знаю почему) в ветке от вещей, но не в каком-либо другом недавно созданном проекте - до сих пор. – dfd

+0

Этого было достаточно для выполнения 1-го пункта вашей инструкции. Спасибо. –

+0

Один только пункт 1 решил это для меня. Мне показалось странным, что вы должны поместить его в приложение И в связанную структуру. Управление зависимостями XCode является источником недоумения. Любой другой способ сделать его автоматическим? –

4

Как вы устанавливаете свои зависимости?

У меня была аналогичная проблема:

dyld: Library not loaded: @rpath/libswiftSwiftOnoneSupport.dylib Referenced from: <internal framework> Reason: image not found

Оказалось, что связано с Swift оптимизации целого модуля.

Использование Carthage в качестве менеджера зависимостей, они были скомпилированы для Release и, таким образом, скомпилированы с оптимизацией всего модуля, которую Xcode предложил включить. Запуск приложения на симуляторе компилирует его для Debug.Я предполагаю, что динамические структуры не могут быть на другом уровне оптимизации из приложения, запускающего его.

Решение заключалось в том, чтобы явно указать конфигурацию, которую я хотел создать для Карфагена. (carthage bootstrap --configuration Debug) О, и, конечно, очистка папки с файлами.

+0

Спасибо за предложение, но я не устанавливал никаких зависимостей и не использовал Карфаген. У меня есть структура Swift моего собственного создания в одном проекте Xcode. У меня есть приложение Swift моего собственного создания в другом проекте Xcode. У меня есть оба проекта внутри одного рабочего пространства Xcode, и у меня есть структура, на которую ссылается приложение. –

+0

Попробуйте проверить уровень оптимизации в настройках сборки как вашей инфраструктуры, так и вашего приложения. – weissazool

Смежные вопросы