iPhone: минимальная ОС, цель развертывания и база / активный SDK
Я немного озадачен созданием приложения для магазина приложений и для правильной версии 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 ответа
Хорошо, я сумел выяснить это после большого чтения!
По сути, 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 было очень полезным и информативным. Однако мне потребовалось немного больше времени, чтобы понять, как мне устроить концепцию и как все работает. Это изображение из руководства полезно:
Перейдите в Project Info->Build и посмотрите на свойство IPHONEOS_DEPLOYMENT_TARGET. На самом деле я использую 3.1.2 SDK и создаю приложение, которое хорошо работает на каждой ОС выше 2.2.1.