2015-03-30 10 views
3

У меня есть приложение с несколькими настраиваемыми динамическими фреймворками, что означает, что я использую iOS 8 в качестве SDK на Xcode 6.2. Мой Mac находится на Йосемити. В структурах есть источники и ресурсы Swift.Пользовательские рамки не загружены dyld: библиотека не загружена: @ rpath/Custom.framework/

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

Приложение устанавливает и работает на iPhone 5 (iOS 8.1.2), iPod Touch (iOS 8.2) и симуляторах НО НО на iPhone 6 (iOS 8.1.2). Ошибка всегда dyld: библиотека не загружена: @ rpath/Custom.framework /. Всякий раз, когда я удалить и добавить рамки назад, чтобы попытаться исправить это другая структура всплывает не загружена на iPhone 6. (почему !!!)

Следующая были установлены:

  • @ executable_path/рамочные
  • Embedded Содержание Содержит Swift код - Да
  • Каркасы во встроенных двоичных файлов
  • Встроенные Каркасы
  • Link Двоичные с библиотеками

Что вызывает эти проблемы и что я могу сделать, чтобы убедиться, что приложение работает последовательно на всех устройствах и версиях iOS 8.

Большинство решений, которые я нахожу, являются пробными и ошибочными предложениями.

ответ

5

Я не переставал выяснять причину проблемы, пока не прочитал об архитектуре. Поэтому мне было предложено создать фреймворки, в то время как iPhone 6 подключен. Я создал проект со всеми значениями по умолчанию. Добавлено несколько фреймворков, включая Alamofire. Построил их, пока подключен iPhone 6. Создал архив, развернул и установил OTA. Когда приложение было установлено, он работал без проблем.

Я попытался подтвердить это, создав против моего iPod (MD717ZP/A). Я не уверен, что это был 5-й генерал. Сначала я очистил папку с производными данными, очистил все проекты, включая фреймворки. Построено и развернуто приложение. Установил его на iPod, в котором он работал. Я установил его на iPhone 6, и он мгновенно разбился.

Я пробовал один и тот же процесс снова и снова. Построенный на iPhone 6, тогда iPod затем устанавливался на обоих. Результаты просто подтвердили, что мне нужно, чтобы он был построен на iPhone 6, поэтому приложение будет работать на этом устройстве и ниже.

Помните, что я ТОЛЬКО добавлял фреймворки к «Встроенным бинарным файлам» (Target> General> Embedded Binaries), а затем построил на iPhone 6, чтобы заставить его работать. Это может означать, что вам нужно иметь новейшее устройство, если вы хотите, чтобы он работал на всех устройствах из-за некоторых требований к архитектуре.

Update: В дополнении к знаниям выше вы можете захотеть, чтобы проверить «Построить Активную Архитектуру Только» раздела в Строительстве Настройки вкладки. Это означает, что он будет строиться на основе подключенного оборудования, если он установлен в YES, иначе он будет строить для поддерживаемых вами архитектур, таких как Valid Architectures.

+0

Тысяча вверх голос брата, если можно. Это ответ: «Помните, что я ТОЛЬКО добавлял фреймворки к« Встроенным двоичным файлам »(Target> General> Embedded Binaries).« – satheeshwaran

+0

Это самый лучший ответ. Спасибо! –

0

Проверьте раздел Linking на вкладке Параметры построения, следующий пункт может не установлен:

Runpath Search Paths = @executable_path/Frameworks 
  • Эта ошибка исправлена ​​для меня:

    dyld: library not loaded: @rpath/CorePlot.framework/CorePlot 
    reason: image not found