Слайд 2
Обо мне
Енютин Вячеслав
Senior Mobile Developer (iOS, Android) опыт разработки высоконагруженных приложений более 5
лет. Разрабатывал приложения для финтех, телемедицины и др. отраслей
Слайд 3
Чем доклад?
Опыт
Боль
И применение
Слайд 4
Для чего мы используем Gradle?
Инспектор зависимости
Инструмент для Автоматической подписи
Для быстрого переключения debug/release
Для различных
Flavors
Для более тонкой настройки проекта
Слайд 5
Слайд 6
Слайд 7
Сборка ресурсов
Main
Paid
Free
debug
release
paidDebug
freeDebug
paidRelease
FreeRelease
Слайд 8
Фича №1
Управление ресурсами
App Feature
App
Network
Слайд 9
Слайд 10
Слайд 11
Представим
App Feature
50 layout 150 drawable (xml)
Слайд 12
App Feature
50 layout 150 drawable (xml)
activity_main_screen.xml
main_screen_content.xml
fargment_*********.xml
adapter_**********.xml
Слайд 13
App Feature
50 layout 150 drawable (xml)
activity_main_screen.xml
main_screen_content.xml
fargment_*********.xml
adapter_**********.xml
Слайд 14
Слайд 15
Решение
Разделение ресурсов
Свободная иерархия
Поддержка Flavors
Слайд 16
Что для этого потребуется?
Слайд 17
Фича №2
Производительность
Слайд 18
Сколько занимает сборка проекта (clean-build)
До 1 минуты
От 1 до 5 минут
От 5 до
10 минут
Более 10 минут
Слайд 19
Новое в gradle
compile
implements VS api
Слайд 20
App Feature
App
Network
api project(:’ app’)
api project(:’ Network’)
Слайд 21
App Feature
App
Network
api project(:’ app’)
api project(:’ Network’)
App Feature будет знать
О библиотеке Network!
Слайд 22
App Feature
App
Network
Измененяем слово
Слайд 23
App Feature
App
Network
Измененяем слово
Recompile
Слайд 24
App Feature
App
Network
Измененяем слово
Recompile
Слайд 25
App Feature
App
Network
Измененяем слово
Recompile
implements
Слайд 26
Сколько занимает ваш Build
./gradlew clean assembleDebug --scan
Слайд 27
Сборка NOT INCREMENTAL
Сборка INCREMENTAL
27 секунд
1 минута 54 секунд
Слайд 28
Как добавить?
В файл
gradle.properties
Добавляем:
org.gradle.parallel=true
Слайд 29
Слайд 30
Что может замедлять сборку?
Dagger 2
Butter Knife
Data Binding
Room
Retrofit
Слайд 31
Что может замедлять сборку?
Dagger 2
Butter Knife
Data Binding
Room
Retrofit
CODE GENARATION
Слайд 32
Annotation processing
IS NOT INCREMETAL
Слайд 33
Dagger android
Не используйте это!
Субкомпоненты Dagger инициализируются внутри родительского компонента
Слайд 34
Основные проблемы
Annotations processing ВСЮДУ
Плохо выстроенная взаимосвязь модулей
Data Binding и Dagger генерации в Application
Модуле
«Жирные» core и модули приложения
Слайд 35
Слайд 36