Владимир @Voland_CoderMan
Пользователь
Информация
- В рейтинге
- Не участвует
- Откуда
- Россия
- Дата рождения
- Зарегистрирован
- Активность
Специализация
Software Developer, Mobile Application Developer
Senior
От 300 000 ₽
Android SDK
Kotlin
Jetpack Compose
MVVM
Clean Architecture
Retrofit
Room
Coroutines
Android development
Development of mobile applications
Для поиска и анализа, а так же структурирования собранной информации, больше предпочитаю Grok :)
Вы правы: генерация кода добавляет дополнительные классы в проект. Логично предположить, что больше кода = больше размер APK. Но это только на первый взгляд. Сгенерированный код даггера — это статические классы (и очень компактные) с чёткими зависимостями. Инструменты минификации (R8 или ProGuard) могут легко удалить неиспользуемые части кода или оптимизировать их (например, инлайн-функции). Поэтому, хотя сгенерированный код увеличивает исходный байткод, итоговый APK оказывается меньше, чем при использовании Koin, где runtime-рефлексия требует больше ресурсов.
Koin же использует рефлексию в runtime, и его библиотека включает универсальную логику для поиска и создания зависимостей, что занимает больше места и хуже оптимизируется. Так что, несмотря на генерацию, Dagger/Hilt дают меньший APK за счёт отсутствия runtime-оверхеда.