iPhone: минимальная ОС, цель развертывания и база / активный SDK - PullRequest
10 голосов
/ 17 декабря 2009

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

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

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

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

Целевая информация

  • Базовый SDK: устройство iPhone 3.0
  • Цель развертывания iPhone OS: 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, но это то, что я прочитал!

Любая помощь будет с благодарностью!

Ответы [ 2 ]

25 голосов
/ 19 декабря 2009

Ладно, после долгих чтений мне удалось это выяснить!

По сути, 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, например Устройство 3.1.2. Но не забудьте скомпилировать ваше приложение под Device 3.0, Device 3.1 и Device 3.1.2 только для проверки предупреждений компилятора. Это обеспечит отсутствие у вас кода, обращающегося к методам / структурам, которых нет ни в одном SDK, вплоть до цели развертывания.

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

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

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

0 голосов
/ 17 декабря 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...