Чи можна орієнтуватися на старіші версії iOS при використанні Xcode 4.2 та iOS 5 SDK?


103

Нещодавно я завантажив Xcode 4.2 з пакетом SDK для iOS 5 і я одразу помітив, що я не можу використовувати свої 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) введіть тут опис зображення

btw Я зрозумів це, коли я намагався вручну додати додаток через органайзер, і він повідомив:

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

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

Всі повинні працювати після цього. Поговоріть про ПІТА.


Велике спасибі! Я тобі завдячую пивом! Це справді вирішило мої проблеми, PITA справді: D
Грег Елліс

4
Дякую! Я читав про налаштування архітектури в іншому місці, але, здається, ніхто ще не згадує налаштування "Необхідні можливості пристрою".
bunnyhero

Треба додати: і нові, і старі проекти впливають на оновлення! Я перевіряв свої старі речі перед гуглем, і вони теж не працювали! Я тобі також завдячую пивом! :)
Едуардо Коста

1
У мене те саме питання, але навіть якщо налаштування проекту були "Стандартні armv7" для архітектури, Дійсні архітектури вже вказували на "armv6 armv7". Крім того, у мене не було властивості "Необхідні можливості пристрою" в Info.plist. Тим не менш, спробуй трюк, сподіваємось, він спрацює!
rchampourlier

"Необхідні можливості пристрою" отримали і мене
codecaffeine

12

Перейдіть до Xcode> Налаштування> Завантаження та встановіть підтримку налагодження для старих версій iOS.


Я перейшов до налаштувань і завантажив та встановив підтримку налагодження для старих ОС, кинув xcode, повторно відкрив xcode зробив чисту і збірну, але додаток все ще не буде встановлено на моєму старшому пристрої. Я зараз у цілковитій втраті, коли, побачивши вашу відповідь, я подумав напевно, що виправить мою проблему :(
Грег Елліс

1
Я тобі також завдячую пивом! Це вирішило ВІНШУ проблему, яку я мав після оновлення Xcode 4! Зараз я можу налагоджувати свій пристрій iOS 4.2 (iPod Touch 2nd gen)!
Едуардо Коста

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.s

Ця команда лише трохи відрізняється від команди, показаної іншими, але ці команди видалили файли в саму папку SDK для мене - ми хочемо, щоб її підкаталог був створений з відповідною назвою.


0

У моєму випадку в потрібних можливостях пристрою була зайва лінія введіть тут опис зображення

Я щойно її зняв ...

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

Сподіваємось, це допоможе комусь іншому.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.