Возможно ли установить iOS 6 SDK на Xcode 5?

Xcode 5 имеет панель настроек, позволяющую загружать iPhone 6.1 симулятор, однако я не могу найти место, где он позволяет загружать iOS 6 SDK, поэтому невозможно установить активный SDK на iOS 6 при разработке с Xcode 5. Есть ли обходной путь, который позволит Xcode 5 установить iOS 6 SDK?

EDIT:

Обходные пути теперь уже не нужны, так как Xcode 5 обычно доступен и позволяет загружать предыдущие версии SDK.

enter image description here

Ответ 1

EDIT: начиная с 1 февраля 2014 года Apple больше не будет принимать приложения до iOS7 для отправки в App Store. Поэтому, пока этот метод все еще работает, он не будет полезен большинству читателей.


Да, это прекрасно. Я все еще строю с iOS 4.3 для одного проекта (прошло некоторое время с тех пор, как мы обновили, но они все еще приняли его после выхода iOS 6), и в настоящее время я создаю 10.5 приложений с Xcode 5.

См. Как указать Xcode на старый SDK, чтобы его можно было использовать в качестве "Базового SDK" ?, чтобы узнать, как его настроить. Вы можете использовать мой fix-xcode script, чтобы связать все для вас каждый раз при обновлении.

Единственный трюк - это получение старых SDK. Если у вас их нет, вам обычно нужно загружать старые версии Xcode (все еще доступные на developer.apple.com), откройте пакет установщика, и охота вокруг, чтобы найти необходимый SDK.

SDK можно найти в пакете установщика по адресу:

Xcode.app/Contents/Developer/Platforms/

Ответ 2

У меня также была такая же проблема, когда я обновил xcode 5, удалив старый sdk. Но я взял копию старого SDK с другого компьютера и тот же, что вы можете скачать по следующей ссылке.

http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.com тестовая учетная запись [email protected]/test)

Есть два способа работы.

1) Разархивируйте и вставьте эту папку в /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDK и перезапустите xcode.

Но это может быть снова удалено Xcode, если вы обновите xcode.

2) Еще один способ - распаковать и вставить, где вы хотите, и перейти в /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDK и создать символическую ссылку здесь, чтобы SDK оставался то же самое, даже если вы обновите Xcode.

Другое изменение, которое я сделал, "Настройка сборки" > "Архитектура" > стандартное (не 64), так что перечислите все версии цели развертывания

Не нужно загружать zip, если вы хотите изменить цель развертывания.

Вот несколько скриншотов. enter image description hereenter image description here

Ответ 3

Да, я просто решил проблему сегодня.

  • Найдите файл SDK, например iPhoneOS6.1.sdk, в вашем или вашем другом старше Xcode.
  • Скопируйте и поместите его в каталог Xcode 5: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs.

enter image description here

Затем вы можете выбрать SDK, как показано ниже:

enter image description here

Надеюсь, это поможет вам.

Ответ 4

Найти и загрузить старый SDK. Старые SDK найдены здесь.

Я скопировал каталог xcode.app как Xcode_4.6.3.app.

Теперь вы можете тестировать и отлаживать обе версии xcode. Вы должны запускать их из соответствующих папок или создавать ярлыки на рабочем столе. При создании из командной строки параметр iPhoneOS6.1 вместо iPhoneOS7.0

Это отлично поработало для меня в Xcode5 и iOS.

Перейдите в каталог Xcode5 SDK. Обычно он располагается по адресу:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

Добавьте символическую ссылку на старый SDK следующим образом:

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk iPhoneOS6.1.sdk

Или более точно из любого места в командной строке,

sudo ln -s /Applications/Xcode_4.6.3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk  /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk

Ответ 5

Вы можете загрузить старый SDK и установить его в

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

папка. Logout + Login, чтобы убедиться, что изменения вступят в силу, и вы увидите старый SDK в новом XCode

Ответ 6

Просто добавьте, вы можете фактически загрузить старые версии симулятора с самим Xcode 5 - просто перейдите в настройки, и вы найдете их в разделе "Загрузки":

enter image description here

Ответ 7

  • Загрузите Xcode 4.6.x из Центра Apple Dev: https://developer.apple.com/downloads/index.action
  • Создайте папку под названием Xcode4 в папке "Приложения" и перетащите туда-вниз загруженный dmg.
  • Откройте окно терминала

    $sudo cp -R /Applications/Xcode4/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
    
  • Вам будет предложено ввести пароль, так как вы находитесь в системной папке

  • Откройте Xcode 5, и теперь вы должны увидеть оба SDK

Ответ 8

Просто для меня самое простое решение:

  • Найдите более старый SDK, например, например, "iPhoneOS6.1 sdk" в старой версии xcode. Если вы этого не сделали, вы можете отключить его с сервера Apple Developer по этому адресу: https://developer.apple.com/downloads/index.action?name=Xcode Когда вы открываете xcode.dmg, вы можете найти его, открыв Xcode.app(щелкните правой кнопкой мыши и "покажите содержимое" ) и перейдите в раздел Содержание/Разработчик/Платформы/iPhoneOS.platform/Разработчик/SDK/iPhoneOS6.1 sdk enter image description here
  • Просто скопируйте папку iPhoneOS6.X sdk и вставьте ее в свой xcode.app
    • щелкните правой кнопкой мыши папку xcode.app в папке Applications.
    • Перейти к содержанию/Разработчик/Платформы/iPhoneOS.platform/Разработчик/SDK/
    • Просто вставьте здесь.

enter image description here

  1. Закройте приложение xcode и снова откройте его.

Чтобы протестировать приложение в iOS 6 на вашем симуляторе:  - Просто выберите iOS 6.0 в своей активной sheme. enter image description here

Чтобы создать приложение в iOS 6, дизайн вашего приложения будет более старым дизайном на iPhone с iOS 7:  - Выберите iOS6.1 в Targets - Base SDK

enter image description here

Просто помните: когда вы меняете базовый SDK в своих целевых сетях, iOS 7.0 больше не будет доступен для создания на симуляторе!

Ответ 9

Может делать это, но не обязательно

Как это сделать

Джейсон Ли получил ответ. При установке xCode я предпочитаю сохранять предыдущие установки, а не заменять их. Поэтому у меня есть это в моей папке установки

enter image description here

So /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs Содержит разные sdks. (Замените Xcode.app с правильным номером) скопируйте предыдущие sdks на

/Applications/Xcode 3.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs

Вот моя папка после того, как я скопировал ее.

enter image description here

Теперь перезапустите xCode, и вы можете установить предыдущие версии sdks в качестве базового sdk.

Почему это не нужно

Ссылка на Apple Documentaion

Чтобы использовать конкретный SDK для проекта Xcode, сделайте два выбора в настройках сборки проектов.

  • Выберите цель развертывания.

    Это определяет самую раннюю версию ОС, на которой может работать ваше программное обеспечение.

  • Выберите базовый SDK

    В вашем программном обеспечении могут использоваться функции, доступные в версиях ОС, вплоть до того, что соответствует базовому SDK. По умолчанию Xcode устанавливает это на новейшую ОС, поддерживаемую Xcode.

Правило Используется последним в качестве базового SDK и задает цель развертывания для приложения с минимальной версией, которое должно запускаться

Например, вы можете использовать iOS 7 в качестве базового sdk и установить iOS 6 в качестве цели развертывания. Запустите симулятор iOS 6, чтобы проверить, как он работает на iOS 6. Установите симулятор, если он недоступен в списке симуляторов.

enter image description here

Дополнительно Вы можете безоговорочно использовать функции до iOS 6. И условно вы можете поддерживать новые функции iOS 7 для новых обновленных устройств, поддерживая предыдущие версии.

Это можно сделать, используя слабосвязанные классы, слабосвязанные методы, Функции и Символы

https://developer.apple.com/library/ios/documentation/developertools/conceptual/cross_development/Using/using.html#//apple_ref/doc/uid/20002000-SW3

Слабая связь

Предположим, что в Xcode вы устанавливаете целевой объект развертывания (минимальную требуемую версию) на iOS6 и целевой SDK (максимально разрешенная версия) на iOS7. Во время компиляции компилятор будет слабо связывать любые интерфейсы, которые были введены в iOS7, в то же время сильно связывая более ранние интерфейсы. Это позволит вашему приложению продолжать работать на iOS6, но при этом они могут использовать новые функции, когда они доступны.

Ответ 10

Другие ответы здесь также верны, но я считаю, что следующие шаги являются самыми легкими:

Просто скачайте Xcode 4.6.3 из ссылки центра dev, в которой говорится: "Ищете более старую версию Xcode?" (в настоящее время указывает здесь) и монтируйте dmg.

Затем в терминале скопируйте файлы SDK:

cp -R /Volumes/Xcode/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/

Наконец, перезапустите Xcode, и все готово.

Ответ 11

Мое приложение было переведено на Xcode 5 без проблем, поскольку оно все равно может быть создано с исходной целью развертывания iOS, установленной вами в проекте (в моем случае 5.1). Если новый SDK не вызывает какой-либо непреодолимой проблемы, почему бы не использовать его? Разумеется, есть много улучшений под капотом.

Например, я предпочитаю использовать Xcode 5 вместо Xcode 4.6.3. Зачем? Я получаю намного больше времени автономной работы, потому что прокрутка пользовательского интерфейса текстовых/кодовых областей в Xcode 5 больше не уничтожает весь поток ЦП.

Ответ 12

Связывание 6.1 SDK с Xcode 5, как описано в других ответах, - это один шаг. Однако это все еще не решает проблему, возникающую при работе с новыми элементами интерфейса iOS 7, контроллеры представлений сделаны полноразмерными и т.д.

Как описано в этом ответе, также требуется переключить интерфейс в прежний режим на iOS 7:

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"UIUseLegacyUI"];
[[NSUserDefaults standardUserDefaults] synchronize];

Остерегайтесь: это недокументированный ключ и не рекомендуется для сборки App Store!

Кроме того, по моему опыту во время тестирования на устройстве я обнаружил, что он работает только во второй раз, когда я запускаю приложение, даже несмотря на то, что я запускаю код довольно рано при запуске приложения в +[AppDelegate initialize]. Также есть тонкие отличия от версии, построенной с использованием Xcode 4.6. Например, прозрачные навигационные панели ведут себя по-разному (что делает просмотр полноразмерным).

Однако, поскольку Xcode 4.6.3 падает на Mavericks (по крайней мере для меня, см. rdar://15318883), это на по крайней мере, решение продолжить использование Xcode 5 для отладки.

Ответ 13

Я загрузил XCode 4 и взял iOS 6.1 SDK от него к XCode 5, как описано в других ответах. Затем я также установил iOS 6.1 Simulator (он был доступен в настройках). Я также переключил Base SDK на iOS 6.1 в настройки проекта.

После всех этих манипуляций проект с 6.1 base sdk работает в режиме совместимости в iOS 7 Simulator.

Ответ 14

С 1 февраля Apple откажется от приложения, созданного только для iOS6 или ниже. Вот также официальное сообщение от Apple. Лучше начать строить для iOS7.

Чтобы прояснить мое утверждение: если вы создадите для iOS6 или ниже, Apple отклонит ваше приложение. Если вы создаете для iOS7 И ниже все нормально, это означает:

  • вы должны использовать xcode5
  • вы должны развернуть на iOS7 по крайней мере.

Содержимое электронной почты Apple довольно ясно на мне

"Убедитесь, что ваши приложения работают с инновационными технологиями в iOS 7. Начиная с 1 февраля новые приложения и обновления приложений, представленные на App Store должен быть построен с Xcode 5 и iOS 7 SDK."

Ответ 15

В настоящее время у меня установлены Xcode 4.6.3 и 5.0. Я использовал следующий bash script, чтобы связать 5.0 с SDK в старой версии:

platforms_path="$1/Contents/Developer/Platforms";
if [ -d $platforms_path ]; then
    for platform in `ls $platforms_path`
    do
        sudo ln -sf $platforms_path/$platform/Developer/SDKs/* $(xcode-select --print-path)/Platforms/$platform/Developer/SDKs;
    done;
fi;

Вам просто нужно предоставить ему путь к .app:

./xcode.sh /Applications/Xcode-463.app