Поддержка iOS 3.x в Xcode 4

Можно ли писать приложения, поддерживающие версии iOS 3.x, с помощью Xcode 4? Если да, то как? И есть ли у Apple какие-либо официальные рекомендации по обратной совместимости приложений?


person jrdioko    schedule 20.05.2011    source источник


Ответы (4)


Чтобы ваше приложение успешно работало на устройстве iOS 3.x, выполните следующие действия (Xcode 4.2):

  1. Нажмите на название своего проекта, выберите цель и в разделе «Настройки сборки»

    а) Установите для параметра «Цель разработки iOS» (в разделе «Развертывание») значение 3.0.

    б). Добавьте "armv6" в список "Архитектур" (в разделе "Архитектуры"). введите описание изображения здесь

    c) Установите «Другие флаги компоновщика» (в разделе «Связывание») на «-weak-lSystem».

  2. В вашем файле Info.plist удалите значение «armv7» из «Требуемых возможностей устройства» (UIRequiredDeviceCapabilities).

  3. В вашем коде:

    а). Не используйте userInterfaceIdiom. Если вам нужно знать, что это за устройство (iPhone или iPad), см. Как заставить UI_USER_INTERFACE_IDIOM () работать с iPhone OS SDK‹ 3.2.

    б) Не используйте window.rootViewController. Вместо этого используйте [window addSubview: self.mainViewController.view];, чтобы добавить вид главного контроллера в окно.

  4. Щелкните имя проекта, выберите цель и в разделе «Фазы сборки» / «Связать двоичный файл с библиотеками» установите для «UIKit.framework» значение «Необязательно». Также установите необязательный любой дополнительный фреймворк, который недоступен в iOS 3. Например, если вы используете фреймворки iAd или Twitter, они должны быть установлены как необязательные. Перед использованием проверьте наличие дополнительных фреймворков в вашем коде.

  5. При запуске на реальном устройстве скомпилируйте приложение с последней версией SDK. Для этого выберите второй элемент в раскрывающемся списке «Схема» (иначе вы получите ошибку компиляции, связанную с дополнительными SDK):

введите описание изображения здесь

person Mike Keskinov    schedule 07.01.2012
comment
Спасибо! Я использую XCode 4.2 с iOS SDK5, и на шаге 3B мое приложение заработало, заменив self.window.rootViewController = self.viewController; на [self.window addSubview: self.viewController.view]; в AppDelegate.m - person Chad von Nau; 12.02.2012
comment
@MikeKeskinov Я выполнил шаги, описанные выше, в Xcode 4.2.1 для Lion, и он работает. Если я открываю тот же проект в Xcode 4.3, я сталкиваюсь с той же ошибкой, что и раньше: когда приложение пытается загрузить наконечник MainWindow, выдается исключение: - [NSKeyedUnarchiver initForReadingWithData:]: непонятный архив (0x4e, 0x49, 0x42, 0x41, 0x72, 0x63, 0x68, 0x69) '. Какие-либо предложения? Я сейчас застрял, поэтому все идеи приветствуются. - person Roberto; 25.02.2012
comment
Используйте: [self.viewController.view setFrame: [[UIScreen mainScreen] applicationFrame]]; в AppDelegate.m, чтобы обойти черный пробел внизу - person Noureddine AMRI; 30.04.2012

Да, вы можете разрабатывать приложения, поддерживающие предыдущие версии iOS, с помощью текущего iOS SDK.

Официальные рекомендации см. В Руководстве по совместимости SDK < / а>.

person Kristopher Johnson    schedule 20.05.2011

Версия Xcode, которую вы используете, не связана с версией iOS, которую может поддерживать ваше приложение. Чтобы выбрать версию iOS, которую поддерживает ваше приложение, просто измените цель развертывания iOS в настройках проекта. Тогда просто убедитесь, что не используете API более поздних версий.

person GendoIkari    schedule 20.05.2011
comment
Также: как ни странно, Apple больше не принимает приложения с целями развертывания ранее, чем 3.1; вполне вероятно, что они уже требовали 4.0, если бы не желание позволить разработчикам поддерживать iOS 3.2 для iPad в универсальных приложениях, учитывая, что iPad долгое время не обновлялся до iOS 4. Если это вообще поможет с ... есть ли у Apple какие-либо официальные рекомендации по этому поводу. - person Tommy; 20.05.2011
comment
Apple поддерживает приложения с целью разработки 3.0 и выше (см. здесь ). - person Mike Keskinov; 07.01.2012

Конечно, вы можете использовать Xcode 4 для нацеливания на iOS 3.x в качестве цели развертывания, но вы не сможете моделировать свою программу на симуляторе iOS 3.x SDK. Таким образом, вы вполне сами по себе (то есть, если вы используете какую-либо функцию только для iOS 4.x, вы не узнаете об этом, пока не протестируете на физическом устройстве).

Вам нужна более старая версия Xcode для отладки с использованием более старого смоделированного SDK.

person sergio    schedule 20.05.2011