Подтвердить что ты не робот

Relocatable dylib (например, встроенные фреймворки) поддерживаются только на iOS 8.0 и более поздних версиях (@rpath/libswift_stdlib_core.dylib)

Я только что обновил с Xcode 6 Beta 2 до Xcode Beta 3 и теперь получаю следующее предупреждение при создании моего проекта:

ld: warning: relocatable dylibs (e.g. embedded frameworks) are only supported on iOS 8.0 and later (@rpath/libswift_stdlib_core.dylib)

Это предупреждение, но, похоже, моя текущая настройка не будет работать на iOS 7.1, которая является моей целью развертывания. Как я могу отслеживать, какие фреймворки встроены, и как я могу исправить это для iOS < 8.0?

4b9b3361

Ответ 1

Это, кажется, ошибка Beta 3. Как отметил Apple Engineer на этой странице.

Я также предупреждал об этом при запуске приложений на устройстве iOS 7.1.

Ответ 2

Вы видите и добавляете их на странице проекта, когда вы выбираете целевую: вкладка Общие- > Встраиваемые двоичные файлы (а затем они появляются в Build Phases- > Embed Frameworks).

Example of embedded frameworks

Встроенные фреймворки для OSX были доступны в Xcode 5, но не для iOS.

Сессия WWDC о новых функциях в Xcode 6 специально пообещала динамические рамки для iOS 8 (кто-то, пожалуйста, добавьте цитату, когда центр разработчика снова появится в сети). До сих пор со всеми бета-версиями Xcode 6 у меня не возникало проблем с компиляцией и отладкой приложения с фреймворками на iOS 7.

Но так как это не было обещано, фреймворки для iOS7 - это то, от чего вы не можете зависеть (например, это может перестать работать в более поздних бета-версиях, приложение со встроенной инфраструктурой для iOS 7 может быть отклонено и т.д..). Это может объяснить, почему они добавили явное предупреждение.

Не так много можно сделать, если эта функция оказывается действительно неподдерживаемой, кроме удаления фреймворков из целевого объекта и использования статических библиотек, как в случае с Xcode 5. Или идем только на iOS8.

Ответ 3

После использования XCode 6.1.1 я могу поместить код в iOS 8+ iOS7.1.2 и iOS 6.1.3 Хотя предупреждение все еще существует, но приложение работает абсолютно нормально на всех трех ОС

====================== Lucky guy... Мой проект не удается скомпилировать после того, как я ссылался на структуру PushKit.

Проект - это новый проект, созданный Xcode с тремя новыми функциями для тестирования Push Notification.

Обходной путь заключается в том, чтобы использовать структуру PushKit как "встроенную", но это не очень хорошее решение, так как мой рабочий проект Xcode будет создан из Unity3d. Внесение изменений вручную нарушит процесс автоматической сборки.

Ответ 4

У меня была эта ошибка после добавления в проект рамки С++ (DeepBelief). Добавив в проект пустой файл .cpp, он зафиксировал его.

Я использую Beta4 и нашел ответ на сайте Gibbub DeepBelief:

XCode может пропускать стандартную библиотеку С++, и это необходимо для код DeepBelief.framework. Один способ обхода, который я нашел, - включить пустой файл .mm или .cpp в проекте, чтобы обмануть XCode для обработки это как С++ проект.

Ответ 5

Прочитайте этот пост github из ReactiveCocoa

Ошибка все еще присутствует в XCode6 GM и поэтому окончательный выпуск XCode6:

Ну, я получаю то же самое в xcode6GM, независимо от того, создать фреймворк для быстрого OR objc: - [[[[[[[[[[[[[[[

В соответствии с Руководство по программированию Apple Extension:

Вы можете сделать содержащее приложение доступным для пользователей, работающих под управлением iOS 7 или более ранних версий, но затем должны принять меры предосторожности, чтобы безопасно связывать встроенные фреймворки при работе в iOS 8 или новее.

говорить о расширениях приложений, но если вы его прочитаете, вы можете понять, что это относится к встроенным фреймворкам в целом.

Ответ 6

После использования XCode 6.1.1 я могу поместить код в iOS 8+ iOS7.1.2 и iOS 6.1.3 Хотя предупреждение все еще существует, но приложение работает абсолютно нормально на всех 3 ОС

Да не удается отправить приложение для просмотра. Возможно, изменив современные рамки на Static libs.

Ответ 7

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

это была причина ошибки в xcode 6.1.1

Я использовал xcglogger с целью развертывания ios 8.0 и целевым назначением для развертывания приложения 7.0. установите цель развертывания xcglogger ios 7.0 и решить проблему.