Pull to refresh

Comments 21

Читая всю эту серию постов очень сильно задумываюсь, стоит ли начинать новый проект на свифте...

Swift сам по себе хорош, но многие системные вещи вгоняют в печаль. Пока они не будут исправлены, делать что-то серьезное — себе дороже. Как вспомню переход на Swift 3, так дурно становится. Мы у себя в компании приняли решение новые проекты делать снова на Obj-C.
Мне помогло решение с Cocoapods. Спасибо за статью :)
Пожалуйста. А с инкрементальной компиляцией у вас не было проблем?
У нас в проекте — никаких. Спасибо огромное :)

Спасибо за статьи. Продолжайте в том же духе!

Спасибо за статью!
Кстати, в случае с Carthage файл может содержать кол-во входных файлов ( переменная $SCRIPT_INPUT_FILE_COUNT ), а скрипт проверять кол-во текущих входных файлов и сохраненное значение после clean & build.

Взял за основу ваш скрипт
FILE="${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Carthage-Installation-Flag"
if [ -f "$FILE" ]; then
echo "!!!! $FILE"
    while read -r line
    do
        if [ "$line" != "$SCRIPT_INPUT_FILE_COUNT" ]; then
            echo "warning: count of Carthage files has changed. Make Clean & Build"
        fi

    done < "$FILE"


    exit 0
fi
touch "$FILE"
echo -e $SCRIPT_INPUT_FILE_COUNT >> "$FILE"

/usr/local/bin/carthage copy-frameworks


image
Идея хороша. Только надо отталкиваться не от количества строк, а от Cartfile.resolved. Иначе что делать в случаях, если количество зависимостей осталось такое же? Или просто изменилась версия?
Согласен, тут нужен более точный анализ того какие зависимости были и какие стали. Чтобы уже наверняка предупреждать о необходимости очистить проект. Как вариант внутрь Carthage-Installation-Flag копировать Cartfile.resolved, а потом уже сравнивать. Если есть отличия — кидать warning.
Если есть отличия, то выполнять copy-frameworks ;)
Правильно ли я понимаю, в User Header Search Path нужно просто указать путь к директории/ям с ObjC?
Очень хотелось бы узнать, как побороть застревание на моменте «compiling swift source files». Интернет говорит, что нужно для этого править код, но проект уже по идее целиком сбилжен.
Уточните, что значит застревание? Зависает или долго выполняет просто шаг?
Застревает. Сейчас билд, после минимальных изменений занимает около минуты, хотя Build Time Analyzer показывает хорошие результаты. Билд без изменения кода занимает от 2 до 7 секунд, хотя раньше было секунд 40, до применения приемов из вашей статьи, за что отдельное спасибо.
Рекомендую открыть лог сборки и посмотреть, что происходит в момент зависания на шаге Compile Swift.
image
Еще, если минуту занимает после минимальных изменений, то проверьте, может быть включен SWIFT_WHOLE_MODULE_OPTIMIZATION на ряду убранным header maps.
Действительно был включен SWIFT_WHOLE_MODULE_OPTIMIZATION, спасибо! Хотя Xcode не подавал виду. После того как я воспользовался некоторым приемом по откату настроек Build Settings (выделил параметр Optimization Level и нажал backSpace) все залетало намного шустрее.
Здорово, что помогло.
Спасибо! Сэкономили мне пару часов жизни)
Sign up to leave a comment.

Articles