IPhone: минимальная ОС, цель развертывания и база/активный SDK

Я немного запутался в создании приложения для магазина приложений и правильной версии SDK и ОС. Я отправил свое приложение в магазин приложений, а на экране сведений о приложении iTunes подключился:

"Минимальные требования к ОС: 3.1.2"

Я не видел приложений в магазине приложений, у которых 3.1.2 в качестве минимальной ОС, все они говорят 3.0. Я прочитал несколько вещей здесь, прежде чем я его построил, и я думал, что все понял!

В основном, мое приложение не использует какой-либо код, который существует только в > 3.0, поэтому я хотел бы, чтобы минимальная ОС была 3.0. Мои настройки сборки:

Информация о цели

  • Базовый SDK: устройство iPhone 3.0
  • Цель развертывания iPhone для iPhone: iPhone OS 3.0

Главное окно Xcode

  • Активный SDK: устройство iPhone 3.1.2

Я слышал о том, что в Info.plist помещается минимальная версия ОС, но у меня в этом нет ничего подобного.

Я создаю приложение точно так же и отправил его. Правильно ли настроены настройки моего приложения? Отобразит ли мое приложение 3.0 в магазине приложений или 3.1.2? Я немного уверен в том, почему вы устанавливаете Active SDK последним (3.1.2), когда хотите настроить устройства 3,0, 3,1 и 3,12, но это то, что я читал!

Любые советы по оказанию помощи будут очень благодарны!

Ответы

Ответ 1

Хорошо, я сумел выяснить это после большого чтения!

По сути, Active SDK - это просто переопределение базового SDK во время сборки. По умолчанию, когда базовый SDK изменяется, он автоматически меняет цель развертывания на ту же ОС, что и SDK. Поэтому, когда я захотел собрать приложение под SDK 3.1.2, но запустить его на ОС 3.0, я изменил Active SDK на 3.1.2, но это автоматически изменило минимальную ОС (цель развертывания). Я увидел это, посмотрев файл Info.plist в содержимом пакета в моем файле .app.

Поэтому лучше всего установить базовый SDK на последний SDK (в настоящее время 3.1.2), а затем вручную установить целевой объект развертывания на 3.0 ОС. Как только 2 отличаются, он больше не будет автоматически меняться.

Однако это означает, что ваше приложение может быть установлено на устройстве 3.0, которое может иметь 3.0, 3.1 или 3.1.2 SDK. Поэтому любые используемые вами платформы, методы или свойства, которые доступны только в SDK более 3.0, вам придется использовать условно.

Когда вы приступите к созданию приложения, убедитесь, что Active Target установлен так же, как ваш базовый SDK, например Device 3.1.2. Но не забудьте скомпилировать ваше приложение под Device 3.0, Device 3.1 и Device 3.1.2 только для проверки предупреждений компилятора. Это обеспечит отсутствие у вас кода, обращающегося к методам/структурам, которых нет ни в одном SDK, вплоть до вашей цели развертывания.

Я надеюсь, что это поможет любому, кто находится в моем положении и не может найти простое объяснение того, как все это работает.

Руководство по совместимости SDK было очень полезным и информативным. Однако мне потребовалось немного больше, чтобы понять, как мне устроить концепцию и как все работает. Это изображение из руководства полезно:

alt text
(источник: apple.com)

Ответ 2

Перейдите в Project Info- > Постройте и посмотрите свойство IPHONEOS_DEPLOYMENT_TARGET На самом деле я использую 3.1.2 SDK и создаю приложение, которое хорошо работает на каждой ОС выше 2.2.1