Что означает базовый SDK, цель развертывания iOS, Target и Project в xcode

Скажем, я установил базовый SDK на 7, что это значит? Это может означать, что приложение будет работать на iOS 7. Но для чего предназначена цель развертывания iOS.

Также почему я указываю эти 3 значения как для проекта, так и для цели. Это не имеет смысла. Зачем указывать одно и то же дважды?

Ответ 1

Базовый SDK - это то, что вы создаете для своего приложения (например, файлы include и библиотеки и фреймворки). Как вы говорите, это не влияет на цель развертывания, за исключением того, что base sdk >= цель развертывания.

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

Например, у меня есть проекты с объектами OSX и iOS, а некоторые - с ARC, а некоторые - с MRR. Я должен был иметь разные проекты для каждого, если мне не удалось указать настройки сборки с уровнем детализации, который позволяет Xcode.

Ответ 2

В iOS 7 TechTalk, сессия Архитектура современных приложений, часть 2, они объясняют это ясно

enter image description here

Приятного чтения Привет! Я доступен!

Таким образом, современное приложение может использовать iOS 9 в качестве Target SDK и iOS 7 в качестве цели развертывания. Это означает, что вы можете работать на iOS 7, iOS 8 и iOS 9 и что вам доступны любые вызовы iOS 9 при фактической работе на iOS 9.

Вы можете прочитать больше в моем посте SDK и Deployment Target

Ответ 3

Базовый SDK - это SDK, с которым вы ссылаетесь. Цель развертывания - это минимальная требуемая версия iOS, которую вам нужно выполнить. Вы можете создать приложение с SDK 7, которое работает под iOS 6. Но тогда вы должны позаботиться о том, чтобы не использовать какие-либо функции или методы, которые недоступны в iOS 6. Если вы это сделаете, ваше приложение будет аварийно завершено на iOS 6, как только эта функция используется.

Подробнее см. документацию на яблоко: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html

Ответ 4

Base SDK является максимальным, который всегда контролируется инструментами /XCode и независимо от того, какие последние SDK/ОС поддерживают его. Если вы хотите поддерживать максимальную версию SDK/OS (базовый SDK) ниже текущей версии, вам нужно использовать более старую версию Xcode. От Xcode Xcode 10 точная версия будет зависеть от вашей версии Xcode (например, если вы используете Xcode 10.1, iOS будет 12.1). Например, при сборке с помощью Simulator SDK двоичный файл работает только в той же версии операционной системы, что и базовый SDK.

Deployment Target указывает минимальную версию iOS, которую поддерживает ваше приложение. Таким образом, цель развертывания вашего приложения всегда должна быть меньше или равна его базовому SDK. Следует установить самую низкую версию, на которой должен выполняться ваш код.

Ссылка на источник и ссылка