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


103

Я только что загрузил 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версий. Кроме того, добавьте правку в качестве ответа, чтобы вы могли принять найденное решение, и этот вопрос можно было бы отметить как ответ.

Ответы:


153

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

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

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

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

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

4) Откройте проекты * -Info.plist, уберите настройку «Требуемые возможности устройства» (обратите внимание, что требуется armv7) введите описание изображения здесь

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

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

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

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


Большое спасибо! Я должен тебе пива! Это действительно решило мои проблемы, действительно PITA: D
Грег Эллис

4
Спасибо! Я читал о настройках архитектуры в другом месте, но, похоже, никто больше не упоминает настройки «Требуемые возможности устройства».
bunnyhero

Добавлю: апгрейд затрагивает как новые, так и старые проекты! Я тестировал свои старые вещи перед поиском в Google, и они тоже не работали! Я тоже должен тебе пива! :)
Эдуардо Коста

1
У меня такая же проблема, но даже если в настройках проекта было установлено «Стандартное armv7» для архитектур, действительные архитектуры уже указывали «armv6 armv7». Кроме того, у меня не было свойства «Требуемые возможности устройства» в Info.plist. Тем не менее попробую уловку, надеюсь, это сработает!
rchampourlier 08

«Требуемые возможности устройства» меня тоже
достали

12

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


Я перешел к настройкам, загрузил и установил поддержку отладки для старых ОС, вышел из xcode, повторно открыл xcode, выполнил чистку и сборку, но приложение по-прежнему не устанавливается на мое старое устройство. Я сейчас в полной растерянности, так как когда я увидел ваш ответ, я подумал, что это решит мою проблему :(
Грег Эллис

1
Я тоже должен тебе пива! Это решило ДРУГОЙ проблему, которая возникла после обновления Xcode 4! Теперь я могу отлаживать свое устройство iOS 4.2 (iPod Touch 2-го поколения)!
Эдуардо Коста

3

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


1

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

См. Страницу разработчика для получения дополнительной информации. Это было описано в примечаниях к бета-версии 4.2.


Я сделал это и нажал «Использовать это устройство для разработки», и казалось, что оно работает так, как предполагалось, но я все еще не могу получить приложение для запуска на моем старом устройстве из xcode.
Грег Эллис,

1

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

Я считаю, что другие комментарии здесь по поводу «Архитектур» и «Требуемые возможности устройства» являются важными деталями, которые необходимо правильно указать. К сожалению, их оказалось недостаточно, чтобы решить мою проблему.

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


1

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


0

Это сработало для меня и должно сработать для вас, если у вас ранее была более старая версия 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 для меня - мы хотим, чтобы ее подкаталог был создан с соответствующим именем.


0

В моем случае была избыточная строка в требуемых возможностях устройства введите описание изображения здесь

Я только что удалил ...

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.