Можно ли ориентироваться на более старые версии iOS при использовании Xcode 4.2 и iOS 5 SDK?

Недавно я загрузил Xcode 4.2 с пакетом SDK iOS 5, и я сразу заметил, что я не могу использовать свои iPhone 3Gs с iOS 4.2.1 для отладки. Я могу только отлаживать и тестировать на своем iphone 4 с установленной iOS 5.

Для любого из моих устройств, на которых работает iOS менее 5.0, Xcode просто говорит "Готово для iPhone3GS" и не запускает его. У меня установлен целевой уровень развертывания 3.0, потому что я не использую какие-либо функции в своем приложении выше 3.0, и я хочу, чтобы таргетинг на все версии 3.0 или выше. У меня есть все мои профили настройки, установленные и обновленные.

Я ушел и перезапустил xcode, я несколько раз очистил сборку. Я попытался добавить armv6 в настройки сборки archtecture, но ничто не позволит мне создавать и запускать мое приложение на моем старом телефоне с ios 4.2.1.

Мой вопрос: возможно ли еще делать приложения с новой работой SDK для версий iOS ниже 5? Как я могу быть уверен, что мое приложение будет работать на более низких версиях iOS, если я не смогу установить их на своем старом телефоне?

Edit: ОК, похоже, что IOS SDK 5 по умолчанию отказался от поддержки armv6. Что вам нужно сделать, так это добавить armv6 в поле "Архитектуры" в разделе "Настройки сборки" для вашей цели и вашего проекта. Тогда ваше приложение сможет работать на устройствах iPhone 3G. Ответ можно найти здесь Как построить архитектуру armv6 и armv7 с iOS 5

Ответ 1

У меня была та же проблема, которая пыталась получить недавно созданный проект Xcode 4.2, работающий на iPhone 3G 4.2.1. Вот как я смог заставить его работать.

1) Измените целевые "Настройки сборки" == > "Архитектура" с "Стандартный (armv7)" на "другое". Добавьте armv6 и armv7.

2) Измените целевые "настройки сборки" == > "Действительная архитектура" на armv6 и armv7.

3) Измените целевые "настройки сборки" == > "Цель развертывания iOS" в iOS 4.2.

enter image description here

4) Откройте проекты * -Info.plist, удалите параметр "Необходимые возможности устройства" (обратите внимание, что ему нужен armv7) enter image description here

btw Я понял это, когда попытался вручную добавить приложение через организатор, и он сообщил:

Невозможно установить приложение

Info.plist для приложения в /Users/.../TestsDebug.app указывает Требования к устройствам, которые не удовлетворяют Dev iPhone 3G

После этого все должно работать. Расскажите о PITA.

Ответ 2

Перейдите в раздел Xcode > Настройки > Загрузка и установите поддержку отладки для более старых версий iOS.

Ответ 3

mmorris заставил меня приблизиться к решению вопроса... В Info.plist мне пришлось установить необходимые устройства для armv6, а не armv7 Надеюсь, это также поможет другим.

Ответ 4

Вам нужно подключить телефон, а затем перейти к организатору. Xcode должен автоматически запрашивать более старую версию.

Дополнительную информацию см. на странице разработчика. Он был описан в примечаниях к 4.2 beta​​p >

Ответ 5

Я узнал, что мне пришлось добавить armv6 в архитектуру, но все равно не работал. И теперь я удалил armv7 из необходимых возможностей, и все! Это сработало!

Ответ 6

У меня возникла аналогичная проблема с попыткой запустить приложение на старом iPod Touch. Я обновился до Xcode 4.3.3, и приложение больше не будет работать в отладчике для меня на более старом оборудовании.

Я считаю, что другие комментарии здесь о "Архитектурах" и "Необходимые возможности устройства" - важная информация для правильного указания. К сожалению, их было недостаточно, чтобы исправить мою проблему.

В моем случае я нашел схему сборки виновной. Xcode 4.3.3 попросил меня переключиться с отладчика GDB на LLDB, когда он обновил мой проект. Когда я изменил действие "Запуск" моей схемы обратно на GDB, я смог снова запустить приложение на своем старом оборудовании из Xcode.

Ответ 7

Это сработало для меня и должно работать для вас, если раньше у вас была более ранняя версия Xcode. Если нет, то вы должны следовать рекомендациям других, чтобы получить SDK из старой версии SDK:

sudo cp -a/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0. SDK

Эта команда немного отличается от той, которая показана другими, но эти команды удалили файлы в самой папке SDK для меня - мы хотим, чтобы подкаталог был создан с соответствующим именем.

Ответ 8

В моем случае была избыточная строка в Требуемые возможности устройства enter image description here

Я просто удалил его...

enter image description here

Надеюсь, это поможет кому-то другому.