Можно ли ориентироваться на более старые версии 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 betap >
Ответ 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]()
Надеюсь, это поможет кому-то другому.