Выбор ответа Senior Сборка и публикация в App Store обновлено

Бинарный фреймворк и стабильность модуля

Вопрос

Вы распространяете закрытый SDK как XCFramework. Что включить, чтобы его могли подключать проекты, собранные более новой версией Swift?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: BUILDLIBRARYFORDISTRIBUTION = YES, чтобы получить файл .swiftinterface. ABI-стабильность (Swift 5.0) означает, что бинарники совместимы с рантаймом в ОС.

Варианты ответа

  1. Ничего: стабильность ABI с Swift 5 автоматически решает и импорт модуля
  2. Собрать фреймворк в Debug-конфигурации, чтобы сохранить отладочные символы
  3. BUILD_LIBRARY_FOR_DISTRIBUTION = YES, чтобы получить файл .swiftinterfaceправильный ответ
  4. Положить в XCFramework исходники, чтобы клиент пересобрал их своим Xcode

Разбор

ABI-стабильность (Swift 5.0) означает, что бинарники совместимы с рантаймом в ОС. Но для импорта модуля, собранного другой версией компилятора, нужна ещё module stability: файл .swiftinterface, который появляется с library evolution. Без него клиент с новым Xcode получит ошибку «module compiled with Swift X cannot be imported». Debug-сборка и исходники задачу не решают, а исходники к тому же раскрывают код.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме