Установите Xcode 3.2.3 с iPhone SDK 4, получите "Отсутствует базовый SDK", другие SDK не видны

Я создал эту вики сообщества, чтобы связать воедино ряд других вопросов и ответов, которые я видел здесь на SO. Если вы здесь, вы, вероятно, установили финальную версию Xcode 3.2.3 с iPhone SDK 4 (ссылка для скачивания, reg reqd), а затем столкнулись с одной или обеими из этих проблем:

  • В вашем ранее работающем проекте Xcode iPhone вы получаете "Отсутствует базовый SDK". Что-то вроде этого:

    Ruh-roh!

  • В связанном, но более общем наблюдении, ни один из ранее доступных вариантов выбора Device или Simulator SDK (например, 3.0, 3.1, 3.1.3,...) не доступен там, где вы их видели.

Ответ 1

Обзор

Я собираюсь объяснить, почему это происходит, а затем как исправить конкретную проблему "Base SDK Missing". Вы можете пропустить снизу только для исправления, хотя я рекомендую прочитать все это. Я также рекомендую John Muchow отлично взять по этой проблеме.

Если вы особенно заинтересованы в обновлении Xcode 3.2.4, который имеет сильно связанную проблему, вы можете пригласить здесь.

Один SDK для управления всеми ними

Здесь сделка: 4.0 - единственная версия SDK, разрешенная для отправки новые или обновленные приложения для iPhone. Это прямо из Apple iOS 4 Контрольный список готовности (reg reqd):

Все новые приложения и обновления для существующих приложений должны быть построенным с iPhone SDK 4. Обратите внимание, что в App Store не будет более длинные приложения поддержки, ориентированные на iOS 2.x.

Предположительно - я угадываю здесь - iPad-only и универсальные приложения должен использовать SDK 3.2. Это, почему 4.0 и 3.2 являются вашим единственным выбором для SDK.

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

(Но) 3 - магическое число

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

Обратите внимание, что теперь вы входите в какой-то сложный ландшафт. Ваш обычный компилятор Xcode 3.2.3 больше не будет применять ваше соответствие только для вызовов с 3,0 и не имеет для них симулятора. И если вы хотите поддерживать функции 4.0, вам придется сделать некоторый условный код, чтобы предотвратить сбои на устройствах 3.0. Весело.

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

FWIW, я планирую сделать именно эту проверку, прежде чем я отправлю.

Какое условие мое условие находится в

Мэтт Галлахер имеет Cocoa с любовным сообщением об условном коде версии "Советы и рекомендации для условного кода iOS3, iOS3.2 и iOS4" . Если вы планируете условно использовать функции 4.0, это хорошая рекомендация по его проверке.

Фиксация "Base SDK Missing"

  • Загрузите проект
  • В меню выберите "Проект" > "Изменить настройки проекта".
  • В разделе Архитектурa > Базовый SDK выберите одно из доступных устройств варианты: iPhone 3.2 или iPhone 4.0. Если вы только для iPhone, 4.0 - это путь.
  • Закройте это окно.
  • В меню выберите "Проект" > "Изменить активный объект" "YourTarget"
  • В разделе Архитектурa > Базовый SDK выберите одно из доступных устройств или симуляторы: iPhone 3.2 или iPhone 4.0.
  • Если вы хотите настроить таргетинг на предыдущие версии iOS, то в том же в разделе "Развертывание" > "Назначение развертывания iPhone для iPhone" выберите самую низкую версию, которую вы хотите поддержать. Обратите внимание, что поддержка версий 2.x через магазин приложений устарел. См. Выше цитату "Контрольный список готовности".

Расположение базового SDK для Xcode 4 и выше

Выполните шаги, описанные выше, но для шага №2 щелкните следующее:

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

    Project navigator     Build Settings

(Этот ответ - слегка адаптированная версия Sherman Lo answer)

Добавление

Более подробную информацию по этому вопросу можно найти в первом ответе на этот question, Там также есть полезная информация здесь.

Ответ 2

Если вы исправите свои настройки и до сих пор видите "Base SDK Missing" и не можете создать, перезагрузите проект. Я вышел из Xcode, но закрытие и повторное открытие, вероятно, также будут работать.

Ответ 3

Ссылки, предоставленные Clay Bridges для загрузки более ранних версий SDK Xcode и iPhone OS, не работают. Однако редактирование этих ссылок для замены первого экземпляра "iphone" на "ios" действительно работает, по крайней мере, для ссылки Snow Leopard (загрузка сейчас).

Правильные ссылки, а также информация об установке старых SDK для iOS в новые установки Xcode, взяты из этой записи в блоге Криса Флетчера: howto install iphone sdk 2.0.3.1 для xcode 3.2 Очень рекомендуется!

Ответ 4

У меня была эта же проблема. У меня также возникла проблема при использовании нескольких целевых объектов, которые вернулись к предыдущему целевому xcode, забыв изменить несколько вещей, например, переход от цели iOS к цели MacOS.

option/alt щелкнуть выпадающее меню

показали некоторые дополнительные опции, которые очень полезны.