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?