Цвет настроения Mobile Meetup #4. Gradle

Содержание

Слайд 2

Обо мне Енютин Вячеслав Senior Mobile Developer (iOS, Android) опыт разработки

Обо мне

Енютин Вячеслав
Senior Mobile Developer (iOS, Android) опыт разработки высоконагруженных приложений

более 5 лет. Разрабатывал приложения для финтех, телемедицины и др. отраслей
Слайд 3

Чем доклад? Опыт Боль И применение

Чем доклад?

Опыт
Боль
И применение

Слайд 4

Для чего мы используем Gradle? Инспектор зависимости Инструмент для Автоматической подписи

Для чего мы используем Gradle?

Инспектор зависимости
Инструмент для Автоматической подписи
Для быстрого переключения

debug/release
Для различных Flavors
Для более тонкой настройки проекта
Слайд 5

Запуск тестов

Запуск тестов

Слайд 6

Как все работает?

Как все работает?

Слайд 7

Сборка ресурсов Main Paid Free debug release paidDebug freeDebug paidRelease FreeRelease

Сборка ресурсов

Main

Paid

Free

debug

release

paidDebug

freeDebug

paidRelease

FreeRelease

Слайд 8

Фича №1 Управление ресурсами App Feature App Network

Фича №1 Управление ресурсами

App Feature

App

Network

Слайд 9

Модульная архитектура?

Модульная архитектура?

Слайд 10

No.

No.

Слайд 11

Представим App Feature 50 layout 150 drawable (xml)

Представим

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

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

App Feature
50 layout 150 drawable (xml)

activity_main_screen.xml

main_screen_content.xml

fargment_*********.xml

adapter_**********.xml

Слайд 14

Решение

Решение

Слайд 15

Решение Разделение ресурсов Свободная иерархия Поддержка Flavors

Решение

Разделение ресурсов
Свободная иерархия
Поддержка Flavors

Слайд 16

Что для этого потребуется?

Что для этого потребуется?

Слайд 17

Фича №2 Производительность

Фича №2 Производительность

Слайд 18

Сколько занимает сборка проекта (clean-build) До 1 минуты От 1 до

Сколько занимает сборка проекта (clean-build)

До 1 минуты
От 1 до 5 минут
От

5 до 10 минут
Более 10 минут
Слайд 19

Новое в gradle compile implements VS api

Новое в gradle

compile

implements VS api

Слайд 20

App Feature App Network api project(:’ app’) api project(:’ Network’)

App Feature

App

Network

api project(:’ app’)

api project(:’ Network’)

Слайд 21

App Feature App Network api project(:’ app’) api project(:’ Network’) App

App Feature

App

Network

api project(:’ app’)

api project(:’ Network’)

App Feature будет знать
О библиотеке Network!

Слайд 22

App Feature App Network Измененяем слово

App Feature

App

Network

Измененяем слово

Слайд 23

App Feature App Network Измененяем слово Recompile

App Feature

App

Network

Измененяем слово

Recompile

Слайд 24

App Feature App Network Измененяем слово Recompile

App Feature

App

Network

Измененяем слово

Recompile

Слайд 25

App Feature App Network Измененяем слово Recompile implements

App Feature

App

Network

Измененяем слово

Recompile

implements

Слайд 26

Сколько занимает ваш Build ./gradlew clean assembleDebug --scan

Сколько занимает ваш Build

./gradlew clean assembleDebug --scan

Слайд 27

Сборка NOT INCREMENTAL Сборка INCREMENTAL 27 секунд 1 минута 54 секунд

Сборка NOT INCREMENTAL

Сборка INCREMENTAL

27 секунд

1 минута 54 секунд

Слайд 28

Как добавить? В файл gradle.properties Добавляем: org.gradle.parallel=true

Как добавить?

В файл
gradle.properties
Добавляем:
org.gradle.parallel=true

Слайд 29

Фича №3 Используй голову

Фича №3 Используй голову

Слайд 30

Что может замедлять сборку? Dagger 2 Butter Knife Data Binding Room Retrofit

Что может замедлять сборку?

Dagger 2
Butter Knife
Data Binding
Room
Retrofit

Слайд 31

Что может замедлять сборку? Dagger 2 Butter Knife Data Binding Room Retrofit CODE GENARATION

Что может замедлять сборку?

Dagger 2
Butter Knife
Data Binding
Room
Retrofit

CODE GENARATION

Слайд 32

Annotation processing IS NOT INCREMETAL

Annotation processing IS NOT INCREMETAL

Слайд 33

Dagger android Не используйте это! Субкомпоненты Dagger инициализируются внутри родительского компонента

Dagger android

Не используйте это!

Субкомпоненты Dagger инициализируются внутри родительского компонента

Слайд 34

Основные проблемы Annotations processing ВСЮДУ Плохо выстроенная взаимосвязь модулей Data Binding

Основные проблемы

Annotations processing ВСЮДУ
Плохо выстроенная взаимосвязь модулей
Data Binding и Dagger генерации

в Application Модуле
«Жирные» core и модули приложения
Слайд 35

Спасибо за внимание!

Спасибо за внимание!

Слайд 36

Спасибо за внимание!

Спасибо за внимание!