Pull to refresh

Comments 6

а зачем делать

Сборка кеша под нужную версию toolchain

если у вас есть уже

Работа с XCFramework

? достаточно сделать всего 1 билд и кешировать его

как бы они уже бинарно совместимые с будущими версиями сдк. пруф. первые 3 мин, но в целом видео полезное.

Для поддержания бинарной совместимости необходимо собирать зависимости с включенным флагом:
BUILD_LIBRARY_FOR_DISTRIBUTION
(почитать про это можно здесь)
Так же включение данного флага накладывает определенные границы по совместимости. В нашем случае проще выполнить одну команду и собрать все зависимости и автоматически залить их на s3, чем в ручном режиме пробовать включать стабильность модуля для каждой зависимости. Так же у есть библиотеки, которые не работают с данным флагом

Для поддержания бинарной совместимости необходимо собирать зависимости с включенным флагом:
BUILD_LIBRARY_FOR_DISTRIBUTION

а что у вас за такие древние версии библиотек, что они не имеют данного флага? а если и нет, то можно сделать такой велосипед https://github.com/Carthage/Carthage/issues/3104#issuecomment-756971172 но если либа не обновлялась, значит можно и форкнуть уже

Так же включение данного флага накладывает определенные границы по совместимости.

какие?

а что у вас за такие древние версии библиотек, что они не имеют данного флага? а если и нет, то можно сделать такой велосипед https://github.com/Carthage/Carthage/issues/3104#issuecomment-756971172 но если либа не обновлялась, значит можно и форкнуть уже

Некоторые библиотеки не собираются с включенным флагом BUILD_LIBRARY_FOR_DISTRIBUTION они просто выдают ошибку.
В целом поддерживать библиотеки (особенно когда их много, и изменения могут вносить другие команды) с Library Evolution тяжело (были попытки). А еще иногда нужно собрать проект не под новый Xcode, а под старый, и тут могут возникнуть сложности если какая либо из библиотек была собрана на более поздней версии. В целом взвесив все за и против мы решили собирать отдельно библиотеки под toolchain (у нас есть автоматизация для этого).

какие?

Вот здесь можно почитать про это. Про frozen структуры и совместимость с Objective-C

Спасибо за статью! В Joom решали очень похожую задачу - кэширование carthage-зависимостей и проверку на актуальность Carthage/Build

В префикс кэша мы дополнительно включаем конфигурацию: Debug / Release. Из-за этого, когда возникает задача проверки актуальности зависимостей в Build , то надо узнать как эти зависимости собраны через Release или Debug конфигурацию (иначе можно, например, собрать Release Candidate с зависимостями собранными с Debug конфигурацией)

Сталкивались ли с такой задачей? Как решали?

Вам, спасибо!
С подобным не сталкивались, т.к. все зависимости собраны с Release конфигурацией, поэтому мы проверяем только наличие данной библиотеки в папке Carthage/Build

Sign up to leave a comment.