Xcode 8 со старым базовым SDK

Я сталкиваюсь с проблемами совместимости для некоторых внешних платформ, которые я использую в своем проекте. Есть ли способ изменить базовый SDK на Xcode 8? В данный момент в настройках проекта показывается только последний SDK.

Я попытался скопировать старый SDK из другой версии XCode сюда, но это не сработало:

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

3 ответа

Решение

Начиная с Xcode 7.3, помимо копирования в SDK, вы также должны отредактировать определенный файл Info.plist, как описано здесь для macOS в посте agx. Похоже, что есть аналогичный файл для iOS, в

Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Info.plist

Попробуйте изменить значение MinimumSDKVersion там с 10.0 на любую версию SDK, которую вы хотите.

Я не пробовал это с iOS, но, используя этот обходной путь, я просто смог создать цель macOS с macOS 10.6, используя Xcode 8.0 (8A218a) ("GM").

ОБНОВИТЬ

Хак, описанный выше, перестал работать на меня в Xcode 9. Если вы хотите использовать Xcode 9+, см. Мой более свежий ответ от 22 ноября 2017 года.

Мой оригинальный ответ, хотя он работал с Xcode 8, по какой-то странной причине, которая не стоит объяснять, больше не работает с Xcode 9 в старом проекте конкретного клиента. Поэтому я использую альтернативный рабочий процесс, который на самом деле не так уж и плох.

Чтобы работать над этим проектом, я открываю его как в старом Xcode, который может собрать его с необходимым SDK, так и в недавнем Xcode. Я помещаю старое окно XCode в фоновом режиме и делаю свою работу в недавнем XCode. Когда я готов проверить изменения, я делаю Файл > Сохранить все (AllS), затем переключаюсь на старый Xcode и Build (⌘B). Когда сборка завершена, я переключаюсь к последним Xcode и Product > Perform Action > Run at Building (⌃⌘R). Поскольку формат файла dSYM не изменился, точки останова работают должным образом.

Преимущества в том, что взлом Xcode не требуется, и единственное, что мне нужно помнить о старом Xcode (в моем случае это Xcode 3), к счастью: ⌘B.

Одно маленькое предупреждение: в цели данного конкретного проекта в настройках сборки есть собственный путь продуктов сборки. Это типично для того, как приложения Mac создавались много лет назад. Чтобы гарантировать, что оба ваших X-кода работают с одним и тем же продуктом, если ваши старые и последние X-коды находятся между версией, которая изменила Путь продуктов сборки по умолчанию, вам может потребоваться установить Путь продуктов сборки.

Рабочий процесс, вероятно, можно сделать еще проще, написав xcodebuild а также xcode-select инструменты командной строки, но этого достаточно. С объявлением Apple на WWDC в этом году о поддержке 32-битных приложений Mac в ближайшие два года у моего клиента в любом случае впереди будут непростые решения.

Вам просто нужно изменить настройки "цели развертывания". В основном вы используете последний доступный SDK в качестве базового SDK, но выбираете целевую версию OS X. Конечно, это зависит от того, почему вы хотите использовать более старый SDK?

Другие вопросы по тегам