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 конфигурацией)
Сталкивались ли с такой задачей? Как решали?
Выселяем Carthage из git, или Как мы связали Carthage + Rome + S3 в нашем проекте