Как развернуть проект с iOS base SDK 6.1 на устройство с iOS 7

Я потратил весь свой день на эту проблему и не смог найти решения: я разрабатываю приложение с iOS 6.1 SDK, и весь дизайн основан на пользовательском интерфейсе iOS 6.1. Вчера я обновил свой телефон до iOS 7, и после завершения обновления ранее развернутое приложение, которое вернулось из резервной копии, выглядело и работало так же, как и раньше (на iOS 6.1); все было хорошо. Однако мне пришлось обновить свой Xcode до версии 5, поэтому я могу продолжить развертывание последовательных версий отладки на моем устройстве iOS 7 во время разработки. Перед обновлением до Xcode 5 я сделал резервную копию пакета iPhoneOS6.1.sdk из внутренней папки Xcode; затем обновился до Xcode 5, а затем снова поместил пакет iPhoneOS6.1.sdk в свою папку рядом с iOS 7 SDK, который поставлялся с установкой Xcode 5. Я переключил базовый SDK моего проекта на iOS 6.1, который действительно появился в списке селекторов базового SDK, и убедился в построителе интерфейса, что все мои раскадровки / XIB настроены на сборку как iOS 6.1.

Однако когда я развертываю приложение на своем телефоне, оно выглядит как дерьмо, как показано с элементами пользовательского интерфейса iOS 7. Если я использую устройство с установленной iOS 6.1, все выглядит нормально; похоже, что XCode наплевать на мой выбор базового SDK и связывает приложение с iOS 7, если я выберу отладку на устройстве iOS 7.

Как я могу заставить Xcode развернуть один и тот же материал, связанный с 6.1, на всех устройствах, независимо от установленной версии iOS?


person Tamás Zahola    schedule 19.09.2013    source источник
comment
относительно сбоев Xcode 5: они могут быть вызваны плагинами из Xcode 4.   -  person zeiteisen    schedule 19.09.2013
comment
Я не использовал какие-либо плагины в XCode 4. Так что, если он не поставляется со встроенными плагинами, которые XCode 5 унаследовал при обновлении, нет никаких подключений, которые мешали бы XCode 5 ...   -  person Tamás Zahola    schedule 19.09.2013
comment
Если вы используете стандартные элементы управления, вы не можете сделать свое приложение iOS 6.1 похожим на iOS 6.1 на устройстве iOS 7. Для этого вам нужно создать пользовательские элементы управления пользовательского интерфейса, используя наложения изображений и т. Д.   -  person Yas Tabasam    schedule 19.09.2013
comment
Привет, у меня произошел сбой приложения, когда я обновил xcode до xcode 5 и sdk 7 и протестировал его на устройстве iOS 7. но если пользователи загружают его из магазина на свои устройства iOS 7, он работает с темой 6.1. Сейчас я загружаю xcode 4. Я удалю xcode 5 и установлю старый со старыми настройками. и я постараюсь опубликовать версию с несколькими обновлениями из моего Xcode 4.   -  person hasan    schedule 19.09.2013
comment
@YasKuraishi, это неправда! Вчера я построил свой .ipa с помощью XCode 4.6, и он выглядит полностью так же на iOS 7, как и на iOS 6.1. Я просто не могу воспроизвести это с помощью XCode 5 ...   -  person Tamás Zahola    schedule 19.09.2013
comment
Удалось ли вам исправить эту проблему? У меня такая же проблема, если я свяжу его с 6.1, это будет выглядеть лучше, чем связывание с 7.0, но все же некоторые элементы неверны (например: панели навигации прозрачны)   -  person ksn    schedule 07.10.2013
comment
К сожалению, нет :( Мне пришлось покопаться в наших проектах и ​​вручную переключить каждую панель навигации на полупрозрачную = НЕТ.   -  person Tamás Zahola    schedule 07.10.2013


Ответы (3)


Найдите и скачайте старый SDK. Здесь можно найти более старые SDK, https://developer.apple.com/downloads/index.action?name=Xcode

Я скопировал каталог xcode.app как Xcode_4.6.3.app. Теперь вы можете тестировать и отлаживать обе версии xcode. Их нужно запускать из соответствующих папок или создавать ярлыки на рабочем столе. Когда я создаю из командной строки, я указываю параметр как iPhoneOS6.1 вместо iPhoneOS7.0

У меня это отлично сработало в Xcode5 и iOS. Перейдите в каталог SDK Xcode5. Добавьте символическую ссылку на старый SDK следующим образом:

ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk
person karim    schedule 23.09.2013
comment
Да, это то, что я сделал в первую очередь, однако, несмотря на сборку с iPhoneOS6.1.sdk, поведение некоторых элементов пользовательского интерфейса изменилось (хотя с тех пор мне удалось их исправить, так как в основном это была проблема с UINavigationBars). - person Tamás Zahola; 23.09.2013
comment
да, прозрачная панель навигации создает проблему. - person karim; 23.09.2013

На панели инструментов Xcode 5 для вашей цели вы увидите свое устройство в списке дважды (вы также упомянули об этом в своем вопросе). По какой-то странной причине один построен с внешним видом iOS 6.x, а другой - с внешним видом iOS7. Пытаюсь собрать / запустить на одном из устройств из этого списка. Если вы все еще видите внешний вид iOS7, щелкните остановку на панели инструментов, выберите другое устройство и повторите сборку.

Я не вижу сбоев в Xcode 5, поэтому вы можете переустановить его, если он у вас часто дает сбой.

person rakmoh    schedule 19.09.2013
comment
Извините, это не работает. Но приятно видеть, что я не единственный, кто борется с дублирующимися устройствами. - person Tamás Zahola; 20.09.2013
comment
Я снова начал видеть внешний вид пользовательского интерфейса iOS 7.0 на устройстве iOS 7 (хотя я работаю с iOS 6.1 sdk). Обнаружил кое-что очень странное. Не могли бы вы проверить мой обновленный ответ? - person rakmoh; 20.09.2013
comment
Ладно, это странно. Мой телефон дублируется в списке устройств. Если я выберу нижний, приложение будет выглядеть полным дерьмом (полностью iOS 7). Если я выберу верхний, приложение будет выглядеть менее хреново (в основном iOS 6.1), однако некоторые элементы пользовательского интерфейса по-прежнему ведут себя так же, как в iOS 7. Например, панели навигации полупрозрачны, а представление viewcontrollers находится под панелью навигации, как в iOS 7. Похоже, у меня та же проблема, что и у этого парня: stackoverflow.com/questions/18884272/ - person Tamás Zahola; 20.09.2013
comment
К счастью, все мои взгляды выглядят нормально. Может быть, это потому, что я не использую раскадровку в приложении. Однако меня это беспокоит, и я думаю, что вернусь к 4.6.3, пока не обновлю свои представления для рекомендаций / внешнего вида пользовательского интерфейса iOS7. - person rakmoh; 20.09.2013
comment
Раньше у меня работало ручное копирование в iOS 6.1 SDK, но теперь я также вижу вместо этого элементы пользовательского интерфейса iOS7. Есть какие-нибудь исправления? - person Imran; 24.09.2013
comment
Просто чтобы добавить к @ TamásZahola, кажется, что появляется несколько устройств, потому что SDK 6.1 и 7.0 сидят бок о бок: stackoverflow.com/questions/19054395/ - person John K. Chow; 08.11.2013

Во-первых, вам нужно будет скопировать и вставить iOS 6.1 SDK из предыдущей версии XCode. Я считаю, что другие люди давали инструкции, как это сделать.

Затем, предполагая, что вы намерены продолжить разработку для iOS 6 (например, без нарушения пользовательского интерфейса iOS 6 и не собираетесь использовать новые API), сделайте следующее:

  • XCode должен распознавать 2 устройства каждый раз, когда вы подключаете устройство iOS 7 к компьютеру.
  • Запустите приложение на обоих из них (на самом деле это одно и то же устройство, но на одном из них будет запущено приложение в стиле iOS 6, а другое попытается обновить его до стиля iOS 7)
  • Вспомните тот, который запускает приложение в стиле iOS 6 (для меня это самое верхнее), и выполните Product> Archive на этом устройстве.

Это должно по-прежнему позволять вам создавать свои приложения с пользовательским интерфейсом в стиле iOS 6, в то же время позволяя использовать Xcode 5. Я бы рекомендовал запустить новую ветку разработки исключительно для изменений пользовательского интерфейса, чтобы обеспечить совместимость вашего приложения с пользовательским интерфейсом iOS 7.

person Andrei    schedule 11.10.2013