Бинарный фреймворк и стабильность модуля
Вопрос
Вы распространяете закрытый SDK как XCFramework. Что включить, чтобы его могли подключать проекты, собранные более новой версией Swift?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
- Ничего: стабильность ABI с Swift 5 автоматически решает и импорт модуля
- Собрать фреймворк в Debug-конфигурации, чтобы сохранить отладочные символы
BUILD_LIBRARY_FOR_DISTRIBUTION = YES, чтобы получить файл.swiftinterfaceправильный ответ- Положить в XCFramework исходники, чтобы клиент пересобрал их своим Xcode
Разбор
ABI-стабильность (Swift 5.0) означает, что бинарники совместимы с рантаймом в ОС. Но для импорта модуля, собранного другой версией компилятора, нужна ещё module stability: файл .swiftinterface, который появляется с library evolution. Без него клиент с новым Xcode получит ошибку «module compiled with Swift X cannot be imported». Debug-сборка и исходники задачу не решают, а исходники к тому же раскрывают код.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Задача на Swift: сравнение версий для принудительного обновления
Следующий вопрос
Артефакты сборки и публикации