Что означает Base SDK, цель развертывания iOS, Target и Project в xcode
Скажем, я установил базовый SDK на 7, что это значит? Это может означать, что приложение будет работать на iOS 7. Но для этого и предназначена цель развертывания iOS.
Также, почему я указываю эти 3 значения как в проекте, так и в цели. Это не имеет смысла. Зачем указывать одно и то же дважды?
4 ответа
Базовый SDK - это то, против чего вы строите свое приложение (то есть включаете и библиотечные файлы и инфраструктуры) Как вы говорите, это не влияет на цель развертывания, за исключением того, что базовая sdk >= цель развертывания.
Вы указываете параметры сборки на 2 уровнях, так как каждый проект может иметь несколько целей, и вам могут не потребоваться одинаковые настройки для всех целей. Настройки уровня проекта переопределяют настройки по умолчанию, а настройки целевого уровня переопределяют настройки уровня проекта.
Например, у меня есть проекты с целями OSX и iOS, некоторые из них ARC, а некоторые MRR. Мне бы пришлось иметь разные проекты для каждого, если бы я не мог указать параметры сборки с уровнем детализации, который позволяет XCode.
В iOS 7 TechTalk, сессия Архитектура современных приложений, часть 2, они объясняют это ясно
Приятного чтения Привет! Я доступен!
Таким образом, современное приложение может использовать iOS 9 в качестве Target SDK и iOS 7 в качестве цели развертывания. Это означает, что вы можете работать на iOS 7, iOS 8 и iOS 9 и что вам доступны любые вызовы iOS 9 при фактической работе на iOS 9.
Я просто суммирую это SDK и цель развертывания
Базовый SDK - это SDK, на который вы ссылаетесь. Deployment Target - это минимальная требуемая версия iOS, необходимая для запуска приложения. Вы можете создать приложение с SDK 7, который работает под iOS 6. Но тогда вы должны позаботиться о том, чтобы не использовать никакие функции или методы, которые недоступны в iOS 6. Если вы это сделаете, ваше приложение вылетит на iOS 6, как только эта функция используется.
Для получения дополнительной информации см. Документацию Apple: https://developer.apple.com/library/content/documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html
Базовый SDK вашего приложения указывает самую высокую версию iOS, которую поддерживает ваше приложение. Когда ваше приложение запускается на устройстве, на котором выполняется Base SDK вашего приложения, оно запускает полный набор функций, доступных в вашем приложении.
Цель развертывания вашего приложения определяет минимальную версию iOS, которую поддерживает ваше приложение. Таким образом, цель развертывания вашего приложения всегда должна быть меньше или равна его базовому SDK.
В базовом SDK должна быть установлена самая высокая версия ОС, из которой вы хотите использовать API (обычно самая высокая версия, для которой вы разрабатываете, и самая высокая версия, доступная в то время). Для цели развертывания должна быть установлена самая низкая версия, на которой должен выполняться ваш код.
Если у вашего проекта несколько целей, вы можете установить базовый SDK на уровне проекта, и этот параметр наследуется всеми целями. Вы также можете изменить Базовый SDK для конкретной цели на целевом уровне.