it-swarm.com.ru

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

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

Правка:

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

enter image description here

246
Tony

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


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

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

Единственный прием - получить старые SDK. Если у вас их нет, вам, как правило, нужно скачать старые версии XCode (все еще доступные на developer.Apple.com ), открыть пакет установщика и поискать нужный вам SDK.

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

Xcode.app/Contents/Developer/Platforms/

202
Rob Napier

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

http://www.4shared.com/Zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.com тестовый аккаунт [email protected]/test)

Есть 2 способа работы с.

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

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

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

Еще одно изменение, которое я сделал, Настройка сборки> Архитектура> стандартная (не 64), поэтому перечислите все версии Deployment Target

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

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

60
AvtarSingh Suchariya

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

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

enter image description here

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

enter image description here

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

34
Jason Lee

Найдите и скачайте старый SDK. Старые SDK находятся здесь .

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

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

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

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

/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
20
karim

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

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

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

11
unspokenblabber

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

enter image description here

11
Smikey
  • Загрузите Xcode 4.6.x из Apple Dev Center: 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
10
autremoi

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

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

enter image description here

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

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

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

enter image description here

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

10
Daniel C.

Можно сделать это, но не совсем необходимо

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

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

enter image description here

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

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

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

enter image description here

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

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

Ссылаясь на документацию Apple

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

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

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

  2. Выберите базовый 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, но при этом использовать новые функции, когда они доступны.

9
MadNik

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

Просто скачайте Xcode 4.6.3 из ссылки на центр разработки, где написано "Ищете старую версию 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, и все готово.

4
nioq

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

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

3
Steven Lu

Соединение 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 для отладки.

2
Ortwin Gentz

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

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

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

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

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

1
Andrea

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

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

1
OneSman7

В настоящее время у меня установлены Xcode 4.6.3 и 5.0. Я использовал следующий скрипт bash, чтобы связать 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
0
Wayne Burkett