Встановіть Xcode 3.2.3 з iPhone SDK 4, отримайте “Базовий SDK відсутній”, інші SDK не відображаються


80

Я створив цю вікі-спільноту, щоб зв’язати ряд інших запитань / відповідей, які я бачив тут на SO. Якщо ви тут, ви, ймовірно, встановили остаточну версію Xcode 3.2.3 з iPhone SDK 4 ( посилання для завантаження , reg reqd), а потім зіткнулися з однією або обома з цих проблем:

  • У вашому раніше працюючому проекті Xcode iPhone ви десь отримуєте повідомлення "Базовий SDK відсутній". Щось на зразок цього:

    Ру-ро!

  • У відповідних, але більш загальних спостереженнях, жоден з раніше доступних варіантів вибору SDK для пристроїв або симуляторів (наприклад, 3.0, 3.1, 3.1.3, ...) не доступний там, де ви їх бачили раніше.

Відповіді:


165

Огляд

Я збираюся пояснити, чому це відбувається, а потім, як виправити конкретну проблему "Відсутній базовий SDK". Ви можете пропустити донизу лише виправлення, хоча я рекомендую прочитати все це. Я також рекомендую чудовий погляд Джона Мухова на цю тему.

Якщо вас особливо цікавить оновлення Xcode 3.2.4, яке має суттєву проблему, ви можете порадитись тут .

Один SDK, щоб керувати ними всіма

Ось угода: 4.0 - це єдина версія SDK, дозволена для надсилання нових або оновлених програм лише для iPhone. Це безпосередньо з контрольного списку готовності Apple iOS 4 (reg reqd):

Усі нові програми та оновлення існуючих додатків повинні створюватися за допомогою iPhone SDK 4. Зверніть увагу, що App Store більше не підтримуватиме програми, націлені на iOS 2.x.

Імовірно - я здогадуюсь тут - лише для iPad та універсальних додатків слід використовувати 3.2 SDK. Ось чому 4.0 та 3.2 - це ваш єдиний вибір для SDK.

Ось чому ваш проект зараз зламаний, оскільки SDK, на який він раніше був зіставлений, застарілий , gones-ville.

(Але) 3 - це магічне число

Розслабтесь. Ви все ще можете націлити на пристрої, що працюють під управлінням iPhone OS 3.0 (але не нижче). SDK, який ви використовуєте для компіляції , не обмежує, аніж вниз, яку версію iOS ви можете запрограмувати чи підтримати. Після того, як ви виправили речі у своєму проекті тощо (див. Наступний розділ), ви можете встановити "Ціль розгортання ОС iPhone" на нижчу версію iOS. Для короткого знімка, як це зробити, див. крок 7 у наступному розділі.

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

Ви все ще можете завантажити (від Apple!) Та встановити попередню версію Xcode або SDK (див. Тут ). Так, ви можете встановити кілька версій Xcode у різні каталоги, тобто помістити лише одну версію в / Developer. Ви можете використовувати старий Xcode, щоб перевірити відповідність вашого додатка порівняно з 3.x SDK, переклавши важку роботу на вигадливий компілятор та симулятор. Але ви більше не можете використовувати продукти попередніх SDK для надсилання до магазину програм.

FWIW, я планую зробити саме цю перевірку, перш ніж відправити.

В якому стані мій стан

Метт Галлахер має допис про какао з любов’ю у умовному коді версії під назвою "Поради та підказки для умовного коду iOS3, iOS3.2 та iOS4" . Якщо ви плануєте умовно використовувати функції 4.0, настійно рекомендуємо це перевірити.

Виправлення "Відсутній базовий SDK"

  1. Завантажте свій проект
  2. У меню виберіть Проект> Редагувати налаштування проекту ...
  3. У розділі Архітектура> Базовий SDK виберіть один із доступних параметрів пристрою: iPhone 3.2 або iPhone 4.0. Якщо ви лише для iPhone, 4.0 - це шлях.
  4. Закрийте це вікно.
  5. У меню виберіть Проект> Редагувати активну ціль "YourTarget"
  6. У розділі Архітектура> Базовий SDK виберіть один із доступних варіантів пристрою або симулятора: iPhone 3.2 або iPhone 4.0.
  7. Якщо ви хочете націлити попередні версії iOS, то в цьому ж вікні в розділі Розгортання> Ціль розгортання ОС iPhone виберіть найнижчу версію, яку ви хочете підтримувати. Зверніть увагу, що підтримка версій 2.x через магазин програм застаріла. Див. Цитату "Контрольний список готовності" вище.

Базове розташування SDK для Xcode 4 і вище

Виконайте наведені вище дії, але для кроку 2 натисніть наступне:

  • Виберіть навігатор проекту, використовуючи піктограму папки ліворуч на бічній панелі навігатора
  • Виберіть проект, який буде у верхній частині цього подання.
  • Конфігурація проекту з'явиться на головній панелі редактора; виберіть "Параметри побудови" вгорі, а внизу буде розділ "Архітектура".

      Навігатор проекту           Параметри побудови

(Ця відповідь є злегка адаптованим варіантом Sherman Lo «S відповіді )

Додаток

Більш детальну інформацію з цієї теми також можна знайти в першій відповіді на це питання . Там також корисна інформація тут .


3
Коротке зауваження для таких сліпих, як я, які вважають, що пункт Параметри проекту не існує, це Проект> Редагувати налаштування проекту.
Lou Zell

1
"Ви все ще можете завантажити (від Apple!) Та встановити попередню версію Xcode (наприклад, 3.1.4: Leopard, Snow Leopard)." це посилання насправді для 3.1.3 sdk, а не 3.1.4.
Remover

Люди: це вікі, тому сміливо виправляйте речі самі.
Clay Bridges

2
Зверніть увагу, що цільові параметри замінюють параметри проекту; не обов’язково встановлювати його в обох місцях. Я б рекомендував вам не встановлювати його у своїх цільових налаштуваннях (і видаляти, якщо він є), а потім встановлювати лише у налаштуваннях проекту. ДО: Якщо ви все-таки встановите це у налаштуваннях проекту, переконайтеся, що вибрані всі конфігурації. (Або скористайтеся вкладкою "Загальні" та встановіть її за допомогою спливаючого вікна "Базовий SDK для всіх конфігурацій").
геовойна

1
Можливо, ви захочете оновити цю відповідь, включивши новий Останній SDK.
Стівен Фішер

8

Якщо ви виправили свої налаштування і все ще бачите "Базовий SDK відсутній", і не можете створити, перезавантажте проект. Я вийшов з Xcode, але закриття та повторне відкриття, можливо, також спрацювало б.


чому це? здається дивним доводиться закривати xcode і завантажувати резервну копію лише б / к зміни налаштування: O
RyBolt

Гарне запитання RyBolt, але все так воно і є. Apple, мабуть, десь щось кешує, і перезавантаження скидає це, але це лише здогадки.
Джон Стівен

5

Посилання, надані Clay Bridges для завантаження попередніх версій SDK Xcode та iPhone OS, не працюють. Однак редагування цих посилань для заміни першого екземпляра "iphone" на "ios" справді працює, принаймні для посилання Snow Leopard (завантаження зараз).

Правильні посилання, а також інформація про встановлення старих SDK для iOS у новіші інсталяції Xcode, з’явилися в цій статті в блозі Кріса Флетчера: як встановити iphone sdk 2.0.3.1 для xcode 3.2 Настійно рекомендуємо!


Хороша інформація, Стів. Я думаю, що моя відповідь - це вікі спільноти. Будь-який шанс ви можете відредагувати його за допомогою правильної інформації Дякую.
Clay Bridges

Я новачок у StackOverflow, і я думаю, що мені потрібно більше "балів", перш ніж сайт дозволить мені редагувати дописи, зроблені іншими. Інтерфейс користувача не дає мені жодного очевидного способу сказати "редагувати цю публікацію" для своєї публікації. Вибачте.
SteveCaine

3

У мене була така сама проблема. У мене також виникла проблема, коли при використанні кількох цілей перехід до попередньої цілі xcode забув би змінити кілька речей, наприклад, перехід з цілі iOS на ціль MacOS.

option / alt, клацнувши спадне меню

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

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