2009-12-17 2 views
10

Я немного запутался в создании приложения для магазина приложений и для правильного SDK & Версия ОС. Я представил мое приложение в магазин приложений, а также в деталях приложения экран подключения ITunes он говорит:iPhone: минимальная ОС, цель развертывания и база/активный SDK

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

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

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

Target Info

  • Base SDK: iPhone устройств 3,0
  • iPhone OS Deployment Target: iPhone OS 3,0

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

  • A ctive SDK: Устройство iPhone 3.1.2

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

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

Любые советы по использованию приветствуются!

+0

Заканчивать этот ответ на подобный вопрос: http://stackoverflow.com/questions/380138/which-iphone-active-sdk-version-should-i -use/385125 # 385125 –

ответ

25

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

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

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

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

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

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

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

alt text http://developer.apple.com/library/mac/documentation/DeveloperTools/Conceptual/cross_development/art/using_sdks.jpg

0

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

+0

Как это работает? Если вы установите для Active/Base SDK значение 3.1.2, то ваша цель развертывания изменится на 3.1.2, фактически не позволяя ему быть установленным на чем-либо ниже 3.1.2? –

+0

Это своего рода волшебство или динамическое время выполнения obj-c. Можно создать приложение, использующее эксклюзивные функции ОС 3.1, но все же совместимые с ОС 2.0. Вам просто нужно избегать вызовов с надписью «Доступно в iPhone OS 3.0 и более поздних версиях» или использовать -ответчикToSelector перед вызовом метода. – vaddieg

Смежные вопросы