Я обновил проект Xcode 6 до Xcode 7 и начал видеть, что предупреждение было создано для более новой версии iOS (5.1.1), чем связанное (5.1).
Как исправить это предупреждение?
Я обновил проект Xcode 6 до Xcode 7 и начал видеть, что предупреждение было создано для более новой версии iOS (5.1.1), чем связанное (5.1).
Как исправить это предупреждение?
В моем случае это предупреждение было создано, потому что iOS-Deployment-Target одного из моих подпроектов XCode была выше (7.1), чем в моем базовом проекте (7.0). Если вы используете cococapods, эта неправильная конфигурация может произойти, если вы укажете неправильную версию платформы iOS в своем подфайле. В моем примере, я указал в моем подфайле
platform :ios, '7.1'
тогда как я установил цель развертывания в свой XCode-проект на iOS 7.0. Установка параметра DeploymentTarget подпроекта в ту же версию iOS, что и BaseProject, устраняет это предупреждение.
Обновление: похоже, разрешено с помощью Xcode 7.3 (7D175). Я удалил флаг -w, предупреждение больше не появляется.
Это, по-видимому, известная ошибка в Xcode 7.0 и 7.1B1 (ошибка # 21813082).
В качестве временного обходного пути для подавления обширных предупреждений флаг -w может быть добавлен в настройки сборки → Другие флаги компоновщика:
Я только добавил это к настройкам сборки Debug и добавил в AppDelegate следующее: как только напоминание:
#ifdef DEBUG
#warning Linker warnings suppressed (-w in build settings)
#endif
Это, по крайней мере, помогает быстро определить реальные предупреждения вместо того, чтобы результаты сборки были залиты одним и тем же предупреждением для каждого источника (в моем случае появилось более 150 предупреждений).
В моем случае я обновил проект до iOS 6, но проблема не исчезла.
Тогда я понял, что цель переопределяет это как iOS 5.1.1. Я очистил настройки цели, и предупреждения исчезли.
Версия XCode 7.0 (7A220).
В моем случае у меня был установлен мой проект 8.4, но все остальные подпроекты/цели все еще находятся на 9.0. Похоже, что это вызвано несоответствиями цели развертывания.
Для тех, кто использует Cocoapods:
Убедитесь, что все они похожи.
попробуйте добавить "-w" в "Linking- > Other Linker Flags".
Это происходит в моем случае, когда mySDK построен с базовым SDK больше, чем целевой объект myProject.
В моем случае цель развертывания в разделе проекта (7.0) отличалась от целевых целей развертывания (8.0). Поэтому проверьте свои цели развертывания для своего проекта, и каждая цель в вашем проекте будет одинаковой.
Первое изменение цели развертывания iOS в рамках проекта затем изменит цель развертывания в рамках целевых значений. Удалить файл в /Users/yourUser/Library/Developer/Xcode/DerivedData (rm -rf yourProject
). Подстройте снова, затем попросите предупредить.
В моем случае я построил библиотеки с новейшими iOS, но цель развертывания приложения ниже. Поэтому я думаю, что я ничего не могу сделать, кроме добавления -w в другой флаг компоновщика
В моем случае я изменил цель развертывания в целях, не меняя ее в проекте.
Чтобы решить эту проблему, я изменил цель развертывания как для проекта, так и для целей, а затем выполняю обновление модуля.
На всякий случай, если кто-то испытывает такое же недоумение, как и я: я обнаружил, что у меня была бета-версия Xcode на внешнем жестком диске, и система выбирала инструменты на этом диске вместо внутреннего. (Предположительно, потому что они были более новыми бета-инструментами?)... Удаление диска решило мою проблему!