Artur Vasilov

+33
с 2022
0 подписчиков
0 подписок

Под сборкой имеется превращение исходного кода в .apk. Частью этого процесса является генерация кода, компиляция (а еще мерж ресурсов, дексинг, подпись и тд, но не суть), поэтому DI-фреймворк, работающий на основе кодогенерации непосредственно влияет на скорость сборки.
Приставка DI тут не влияет, да. Просто Dagger - это такой фреймворк, который пролезает в проекте везде (потому что он DI-фреймворк как раз) и который работает на кодогенерации. Поэтому он часто и замедляет сборку.

1

Идея правильная, но, к сожалению, донести все это в сам Dagger было бы практически невозможно. Dagger - уже давно выпущенная библиотека с богатой историей, ей пользуются огромное количество людей. И поэтому она должна соблюдать обратную совместимость во всем, что в разы усложняет разработку. Сама команда Dagger-а из-за этого уже очень долго не может поддержать даже KSP, не то что рантайм режим. А поддержать такие изменения в Hilt вообще невозможно.
Мы решили в новом фреймворке не поддерживать устаревшие штуки (типа dagger-android), отказаться от каких-то не очень нужных фичей, написать с нуля сам движок без некоторых проблем даггера, и тем самым все это стало возможно. Поэтому можно было это сделать только отдельным фреймворком.

9

Да, "сборка" напрямую не относится к DI-фреймворку. Dagger2 - самый популярный DI-фреймворк, и функционально он очень хорош и решает все задачи. Однако его активное использование (а вы будете его активно использовать, если проект будет расти), сильно замедляет сборку, в деталях причины можно почитать в статье на хабре https://habr.com/ru/company/yandex/blog/704838/

Поэтому в первую очередь мы решали проблему именно времени сборки, при этом сохраняя по возможности весь функционал Dagger2, чтобы нам и другим людям было проще мигрировать на новый фреймворк.

5

Это специальный режим, который используется только во время работы разработчиков, что позволяет ускорить именно процесс разработки.

Версии приложения для пользователей, конечно, собираются другим способом, без использования этого режима, как раз ради максимальной производительности.

19