Я только что загрузил Xcode 4.2 с пакетом iOS 5 SDK и сразу заметил, что не могу использовать свои iPhone 3G с iOS 4.2.1 для отладки. Я могу отлаживать и тестировать только на своем iphone 4 с установленной iOS 5.
Для любого из моих устройств с iOS ниже 5.0 Xcode просто говорит «Завершено для iPhone3GS» и не запускает его. Моя цель развертывания установлена на 3.0, потому что я не использую никаких функций в моем приложении выше 3.0, и я хочу иметь возможность настраивать таргетинг на все версии 3.0 или выше. У меня установлены и обновлены все мои профили обеспечения.
Я вышел и перезапустил xcode, несколько раз очищал сборку. Я попытался добавить armv6 в настройки сборки архитектуры, но ничто не позволяет мне создать и запустить приложение на моем старом телефоне с ios 4.2.1.
У меня вопрос: можно ли заставить приложения с новым SDK работать для версий iOS ниже 5? Как я могу быть уверен, что мое приложение по-прежнему будет работать на более ранних версиях iOS, если я не могу установить их на свой старый телефон?
Изменить: ОК, похоже, что iOS SDK 5 по умолчанию отказался от поддержки armv6. Что вам нужно сделать, так это добавить armv6 в поле «Архитектуры» в разделе «Параметры сборки» как для вашей цели, так и для вашего проекта. После этого ваше приложение сможет работать на устройствах iPhone 3G. Ответ можно найти здесь Как собрать для архитектур armv6 и armv7 с iOS 5
iOS
версий. Кроме того, добавьте правку в качестве ответа, чтобы вы могли принять найденное решение, и этот вопрос можно было бы отметить как ответ.Ответы:
У меня была такая же проблема, когда я пытался запустить недавно созданный проект Xcode 4.2 на iPhone 3G 4.2.1. Вот как мне удалось запустить его.
1) Измените "Настройки сборки" ==> "Архитектура" цели с "Стандарт (armv7)" на "другое". Добавьте armv6 и armv7.
2) Измените «Настройки сборки» ==> «Действительная архитектура» цели на armv6 и armv7.
3) Измените «Настройки сборки» ==> «Цель развертывания iOS» в цели на iOS 4.2.
4) Откройте проекты * -Info.plist, уберите настройку «Требуемые возможности устройства» (обратите внимание, что требуется armv7)
Кстати, я понял это, когда попытался вручную добавить приложение через органайзер, и он сообщил:
После этого все должно работать. Поговорим о PITA.
источник
Перейдите в Xcode> Настройки> Загрузки и установите поддержку отладки для более старых версий iOS.
источник
mmorris приблизил меня к решению проблемы ... В Info.plist я должен был установить требуемые возможности устройства на armv6, а не armv7. Надеюсь, это поможет и другим.
источник
Вам нужно подключить телефон, а затем зайти в органайзер. Xcode должен автоматически запрашивать старую версию.
См. Страницу разработчика для получения дополнительной информации. Это было описано в примечаниях к бета-версии 4.2.
источник
Я столкнулся с аналогичной проблемой при попытке запустить приложение на старом iPod Touch. Я обновился до Xcode 4.3.3, и приложение больше не работало в отладчике на старом оборудовании.
Я считаю, что другие комментарии здесь по поводу «Архитектур» и «Требуемые возможности устройства» являются важными деталями, которые необходимо правильно указать. К сожалению, их оказалось недостаточно, чтобы решить мою проблему.
В моем случае я обнаружил, что виновата схема сборки. Xcode 4.3.3 побудил меня переключиться с отладчика GDB на LLDB, когда он обновил мой проект. Когда я изменил действие «Выполнить» моей схемы обратно на GDB , я смог снова запустить приложение на моем старом оборудовании из Xcode.
источник
Я узнал, что мне нужно добавить armv6 в архитектуры, но все равно не работает. А теперь я удалил armv7 из необходимых возможностей, и все! Это сработало!
источник
Это сработало для меня и должно сработать для вас, если у вас ранее была более старая версия 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 для меня - мы хотим, чтобы ее подкаталог был создан с соответствующим именем.
источник
В моем случае была избыточная строка в требуемых возможностях устройства
Я только что удалил ...
Надеюсь, это поможет кому-то другому.
источник