Получи случайную криптовалюту за регистрацию!

Dodo Pizza на Tuist В понедельник мы зарелизили приложение сг | Dodo Mobile

Dodo Pizza на Tuist

В понедельник мы зарелизили приложение сгенерировав проект через Tuist. Ура!

Поделюсь пятью ранними выводами после миграции проекта.

Cocoapods невероятно тормозит. Мы несколько месяцев жили на двух инфраструктурах и наглядно ощутили, насколько проект с подами неповоротливый и медленный. Всегда что-то лишнее собирает, долго линкует и т.д. Проект без подов (хоть через SPM, хоть через xcproj) работает намного лучше. Многое, что мы принимали на тормоза Xcode оказались проблемами cocoapods и конфигурации, которую он создает.

Адаптировать Tuist и легко и сложно одновременно. Легко в том, как он сам по себе устроен: все логично, описывается понятно, Tuist это просто большой DSL для структуры проекта в Xcode, нового там мало.

Сложность в остальном — в количестве вариантов настройки которая нам нужна, в особенностях которые появляются по пути. Очень сложно было запланировать время на внедрение: в любую единицу времени мы понимали следующие 5 задач, которые надо сделать, но при их решении могли появляться новые особенности и подзадачи. В итоге список задач вырос раз в 30, наверное. Если соберетесь мигрировать — готовьтесь заниматься этим долго. У нас неспеша ушло полгода: можно было быстрее, но обстоятельства не позволили:
• начали в сентябре,
• в январе разработчики уже пользовались результатом
• в апреле это дошло до пользователей.

Придется развивать OpenSource. Может быть, вам повезет и все ваши зависимости уже будут адаптированы под ваши нужны, но нам пришлось повозиться с зависимостями: добавить поддержку Carthage и SPM в несколько публичных библиотек, от каких-то отказаться просто потому, что они устарели и проще уже без них. Если либа работает через один менеджер пакетов, то нет никаких гарантий, что с другим все хорошо.

Все менеджеры зависимостей — отстой. Cocoapods тормозит и задает жесткую структуру проекта. Carthage собирает все shared схемы, что очень долго (подключение Firebase – это проблема). SPM зачем-то резолвит зависимости на каждом запуске Xcode, что увеличивает открытие проекта на несколько минут. Прям горько осознавать в каком состоянии iOS разработка даже в 2022 году. Тем не менее, Tuist позволяет сгладить углы, например, убрать этап резолват зависимостей у SPM.

Бывает инфраструктурный долг. Пока мы генерировали проект через cocoapods у нас могли оказаться разные конфигурации в разных .podspec. Tuist предлагает более шаблонный подход, чтобы применять одинаковые правила ко всем модулям. В итоге, на этой накопившейся микро-разнице между модулями и было много сложностей.

Самый большой прикол был в том, что приложение с Tuist выросло на 10 Мб! А потом мы поняли, что это результаты скриншот-тестов попали в релизный бандл

Впереди план максимум: совсем отказаться от структуры подов и начать использовать фичи Tuist на максимум. Это приведет к удивительным штукам, например, мы сможем ускорить холодный старт приложения, что снимет ограничение на количество модулей в нашем приложении.

Если хотите ознакомиться с Tuist подробней, то советую статью Алмаза Tuist: Xcode-проект на стероидах.