Чи можна встановити iOS 6 SDK на Xcode 5?


250

Xcode 5 має панель уподобань, що дозволяє завантажувати тренажер iPhone 6.1, однак я не можу знайти місце, де воно дозволяє завантажувати iOS 6 SDK, тому неможливо встановити активний SDK на iOS 6 при розробці з Xcode 5 Чи існує рішення, яке дозволило б Xcode 5 встановити iOS 6 SDK?

Редагувати:

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

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


41
Щоб скористатися багатьма вдосконаленнями Xcode 5, в той час як ще можна створити додаток для сьогоднішнього магазину додатків.
Тоні

61
Здравствуйте, Мадді, пункт про "прийняття iOS 7 все одно" абсолютно не пов'язаний з випуском GA. Рішення та зусилля щодо перероблення цілої мови дизайну програми та UX, щоб вони відповідали плоскому дизайну та переробленим компонентам інтерфейсу iOS7, не є малим, і не може бути легко з точки зору бізнесу та часу. Побудова проти SDK 6.1 дозволить iOS7 використовувати мову дизайну інтерфейсу iOS 6 та попередні (для зворотної підтримки). Таким чином, може бути дуже обґрунтованим, що ми хочемо розвиватись у Xcode 5 проти 6.1 SDK на якийсь хороший час.
Березень

2
хммм, може, тому, що він очікує, що SDK буде відокремлений від IDE, замість однієї монолітної купи коду?
фрікхед

1
Зараз я працюю з клієнтом, який не готовий прийняти зміни в інтерфейсі IOS7, але може отримати користь від покращення міграції основних даних у XCode 5. Тож у цьому випадку я саме цього хочу.
Дроїд Кріс

Можна подумати, що Xcode, якщо не включає SDK 6.1, принаймні плавно інтегрує його. Але тут є ця проблема .
ДжонК

Відповіді:


203

EDIT: З 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/


чи потрібно видаляти SDK iOS 7 при архівуванні, щоб переконатися, що він створюється за допомогою iK 6 SDK?
охайон

6
Привіт. це близько, але не зовсім для мене. кнопки виглядають як iOS 6, але вміст контролера перегляду все ще піднімається за панель навігації при використанні UINavigationController. будь-які думки про те, як отримати для цього поведінку iOS 6?
matt bezark

2
Немає; ви побачите це лише на пристрої. У симуляторі iOS 7 відсутній режим сумісності iOS 6. Якщо ви хочете побачити, як це виглядає в тренажері, протестуйте на тренажері iOS 6.
Роб Нап'єр

1
Чи можу я надіслати додаток, створене за допомогою Xcode 5 та iOS 6 SDK, у App Store?
hujunfeng

1
Поки iPad 1 все ще підтримується, ви завжди можете припустити, що Apple прийме 5.X iOS. Неможливо оновити.
ahwulf

60

Я також працював з тією ж проблемою, коли я оновив до xcode 5, він видалив старіший sdk. Але я взяв копію старого SDK з іншого комп’ютера, і той самий, який ви можете завантажити за наступним посиланням.

http://www.4shared.com/zip/NlPgsxz6/iPhoneOS61sdk.html
(www.4shared.com test test test@yopmail.com/test)

Є два способи роботи.

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), тому перерахуйте всі версії Цілі розгортання

Не потрібно завантажувати поштовий індекс, якщо ви хотіли лише змінити ціль розгортання.

Ось кілька скріншотів. введіть тут опис зображення введіть тут опис зображення


2
як і де ви завантажили цей ios6.1 sdk? Я шукаю iOS 5 sdk для запуску проти мого Xcode 5. Чи можете ви завантажити або вказати на мене, де я можу сам його завантажити. Дякую
Сем Б

Власне, у мене є і стара система. тому я взяв це зі старого xcode. Те саме, що я намагався для ios sdk 5, але, як це не дуже потрібно, я не намагався вийти з цього. Крім того, якщо ця відповідь здається хорошою, я ціную ваші відгуки з точки зору + або -. Дякую.
AvtarSingh Suchariya

1
Привіт, Автаре, я завантажив твій zip на ios6, розпакував його під вказаним вами маршрутом, повністю закрив xcode 5, повторно перезапустив його, і все ж я все ще бачу лише 7.0 як розгорнуту ціль у спадному варіанті. Я припускаю, що пропущені кроки є, і це ще більше?
Сем Б

Те саме працює і для мене. Лише питання, чи додали ви це у додаток xcode чи створили символічне посилання?
AvtarSingh Suchariya

безпосередньо до самого програми app.
Сем Б

34

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

  1. Знайдіть файл SDK, як-от iPhoneOS6.1.sdk, у своєму старому каталозі Xcode або вашому другові.
  2. Скопіюйте та помістіть його у каталог Xcode 5: /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDK.

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

Тоді ви можете вибрати SDK, як показано нижче:

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

Сподіваюся, це вам допоможе.


2
Я робив те саме, але мій графічний інтерфейс програми змінювався, і це виглядає як графічний інтерфейс iOS 7. Я вибрав iPhone Retina (4-дюймовий 64-розрядний) симулятор для запуску програми. Я нічого не пропускаю після цього.
пітон

20

Знайдіть і завантажте старий SDK. Тут знайдено більш старі SDK .

Я скопіював каталог xcode.app як Xcode_4.6.3.app.

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

Це чудово працювало для мене в Xcode5 та iOS.

Перейдіть до SDK-редактора 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

Ми можемо використовувати цю опцію для тестування нашого додатка, але, ймовірно, після лютого 2014 року будь-який додаток, створений за допомогою iOS 7 sdk, не буде прийнятий у магазині додатків!
Карим

11

Ви можете завантажити старіший SDK і встановити його

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

папку. Вихід + Увійти лише для того, щоб зміни вступили в силу, і ви повинні побачити старіший SDK у своєму новому XCode


Я зробив це (використовуючи посилання для завантаження у попередній відповіді), і вибір sdk iOS 6.1 відображається у xcode 5 у розділі Налаштування збірки> Архітектури> Base SDK. Однак, коли я будую і запускаю на тренажері iOS 7 (або пристрої iOS 7), він все ще використовує кнопки UIKit iOS 7 (не версії iOS 6). Якщо у когось є пропозиції, чому, я буду вдячний ....
Білл Паттерсон

Якщо у вас встановлений TimeMachine, ви можете відкрити вищевказаний шлях (тип терміналу: відкрити "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/") та відновити звідти iOS6.1 SDK .
аванс

11

Для додання, ви можете фактично завантажити старі версії симулятора із самим Xcode 5 - просто перейдіть до налаштувань, і ви знайдете їх у розділі Завантаження:

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


Це, мабуть, сталося з часу виходу бета-версії xcode 5 і тепер є загальним випуском. Приємно знати, дякую Smikey
Тоні

5
@Manni Це не те саме, що компіляція зі старого API. Ви будуєте за допомогою нового API для iOS 6.
oligofren

Ці параметри за умовчанням не відображаються на Xcode 6, навіть якщо ви встановили старішу цільову платформу.
GilesDMiddleton

10
  • Завантажте Xcode 4.6.x з Apple Dev Center: https://developer.apple.com/downloads/index.action
  • Створіть папку під назвою Xcode4 у папці Applications і перетягніть туди завантажений 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

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

  1. Знайдіть старіший SDK, наприклад, наприклад, "iPhoneOS6.1 sdk" в старшій версії xcode, наприклад. Якщо ви цього не зробили, ви можете залишити його на сервері розробника Apple за цією адресою: https://developer.apple.com/downloads/index.action?name=Xcode Коли ви відкриєте xcode.dmg, ви можете знайти його, відкривши Xcode.app (клацніть правою кнопкою миші та "показати вміст") та перейдіть до Зміст / Розробник / Платформи / iPhoneOS.platform / Developer / SDKs / iPhoneOS6.1 sdk введіть тут опис зображення
  2. Простий Скопіюйте папку iPhoneOS6.X sdk та вставте її у свій xcode.app
    • клацніть правою кнопкою миші на вашому xcode.app у папці Applications.
    • Перейти до Змісту / Розробник / Платформи / iPhoneOS.platform / Розробник / SDK /
    • Просто вставте сюди.

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

  1. Закрийте додаток xcode та відкрийте його знову.

Для тестування програми в iOS 6 на вашому тренажері: - Просто виберіть iOS 6.0 у своїй активній схемі. введіть тут опис зображення

Щоб створити додаток в iOS 6, таким чином дизайн вашого додатка буде старішим дизайном для iPhone з iOS 7 також: - Виберіть iOS6.1 в цілях - Base SDK

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

Лише зауважте: Коли ви зміните базовий SDK у своїх цілях, iOS 7.0 більше не буде доступний для побудови на тренажері!


9

Це можна зробити , але не дуже потрібно

Як це зробити

Джейсон Лі отримав відповідь. Встановлюючи xCode, я вважав за краще зберігати попередні установки, а не замінювати їх. Тому я маю їх у своїй папці установки

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

Так /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

Ось моя папка після того, як я її скопіював.

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

Тепер перезапустіть xCode і ви можете встановити попередні версії sdks як базовий sdk.

Чому це не потрібно

Посилання на Apple Documentaion

Щоб використовувати певний SDK для проекту Xcode, зробіть два вибору в налаштуваннях збірки вашого проекту.

  1. Виберіть ціль розгортання .

    Це визначає найдавнішу версію ОС, на якій може працювати ваше програмне забезпечення.

  2. Виберіть базовий SDK

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

Правило: Використовуйте найновіший як базовий пакет SDK та встановіть ціль розгортання для мінімальної версії програми, яка повинна працювати

Наприклад, ви можете використовувати iOS 7 як базовий sdk, а iOS 6 встановити як ціль розгортання. Запустіть на тренажері iOS 6, щоб перевірити, як він працює на iOS 6. Встановіть тренажер, якщо його немає, зі списком тренажерів.

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

Додатково Ви можете беззастережно використовувати функції до 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, але все-таки скористатися новими можливостями, коли вони будуть доступні.


4

Інші відповіді тут також правильні, але я вважаю, що наступні кроки є найпростішими:

Просто завантажте 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 і все закінчено.


3

Мій додаток було легко переведено на Xcode 5, оскільки воно все ще може створюватись за допомогою оригінальної цілі розгортання iOS, яку ви встановили у проекті (у моєму випадку 5.1). Якщо новий SDK не викликає непереборної проблеми, то чому б не побудувати його? Звичайно, є багато поліпшень під кришкою.

Наприклад, я вважаю за краще використовувати Xcode 5 замість Xcode 4.6.3. Чому? Я отримаю набагато більше ресурсу акумулятора, тому що прокрутка користувальницького інтерфейсу по текстових / кодових областях у Xcode 5 більше не пережовує всю нитку процесора.


Причини цього не робити - Xcode 5 на даний момент досить нестабільний. Згортаючи мене щогодини. Також деякі дивні позиційні питання та кольорові проблеми в деяких видах (хоча це не так багато роботи для виправлення)
Nick H247,

2

З'єднання 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 для налагодження.


1

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

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


1

З 1 лютого Apple відкине додаток, створене лише для iOS6 або новіших версій. Ось також офіційне повідомлення від Apple. Краще почати створення для iOS7.

Щоб уточнити моє твердження: Якщо ви створили для iOS6 або новішої версії, Apple відхилить ваш додаток. Якщо ви будуєте для iOS7 AND нижче, все добре, це означає:

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

Зміст електронної пошти Apple у мене досить зрозумілий

"Переконайтеся, що ваші програми безперебійно працюють з інноваційними технологіями в iOS 7. Починаючи з 1 лютого, нові додатки та оновлення додатків, що надсилаються в App Store, повинні бути створені з Xcode 5 та iOS 7 SDK."


Так, але iOS 6 SDK також добре працює з iOS 7. Деякі додатки дуже боляче перемикаються.
Анірудд Джоші

Я вважаю, що ви неправі. Apple вимагає (а) побудованого за останнім Xcode 5 та (b), оптимізованого для iOS 7. Дивіться мій коментар до відповіді Роб Нап'є за посиланнями.
Василь Бурк

Деякі з нас розробляють для розповсюдження Enterprise і потребують націлювання на старі SDK (та пристрої). Корпоративні додатки не проходять процес Apple Review та / або App Store, і це обговорення є досить корисним, залишається актуальним і надалі буде актуальним у майбутньому. Я розумію вашу перспективу, але вона не єдина.
Кевін Омара

Ви абсолютно праві !!! Я не думав про розподіл підприємств. Але не забувайте, що ви все ще можете розгорнути на iOS6 з новим Xcode, просто встановивши ціль розгортання, не піклуючись про оптимізацію ios7 та процес перегляду.
Андреа

0

На даний момент у мене встановлено 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

Зауважте, що оновлення до 5.1 видалило мій SDK 7.0.x і замінило його на 7.1 SDK. У мене є стара установка, з Xcode5-DP6якої я зміг відновити 7.0.x з, але це гарне нагадування про резервне копіювання режимів SDK (або перейменування програми повністю) перед оновленням або встановленням останньої версії Xcode.
Уейн
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.