👋 Канал OTUS в Telegram!
Посты от приглашенных гостей из IT-тусовки, полезные статьи, подборки вакансий от партнеров ➞
Подробнее

Курсы

Программирование
Архитектор программного обеспечения
-40%
Архитектура и шаблоны проектирования
-40%
Fullstack разработчик JavaScript
-40%
MS SQL Server разработчик
-40%
Android-разработчик. Продвинутый курс
-40%
Android-разработчик. Базовый курс
-40%
Backend-разработка на Kotlin
-30%
Программист 1С
-30%
Symfony Framework
-30%
Разработчик на Spring Framework
-20%
Разработчик Golang
-25%
C# ASP.NET Core разработчик
-25%
iOS-разработчик. Базовый курс
-25%
VOIP инженер Базы данных Web-разработчик на Python Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик игр на Unity Vue.js разработчик Agile Project Manager в IT Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02
Проходил 20 июня 2019 года в 20:00

Открытый вебинар
Dagger 2 для Android-разработчиков

Открытый вебинар онлайн

Знакомимся с DI фреймворком Dagger 2: изучаем, как Dagger2 генерирует код, разбираемся с аннотациями JSR 330 и конструкциями Dagger2, учимся использовать Dagger2 в многомодульном приложении и рассматриваем Dagger Android Injector.
Преподаватель
Антон Казаков

Запись

О курсе

Android-разработчик. Продвинутый курс
70 000 ₽ 42 000 ₽
5 месяцев
Начало 29 июня
Курс рассчитан на Android-разработчиков с опытом работы от 1 года, со знанием Java или Kotlin. Вы научитесь:
  • Глубоко разбираться в Android SDK. Разница между junior- и senior-разработчиками в том, что первый может реализовать какую-то фичу, а второй может объяснить, что скрывается за каждой строкой кода этой фичи, найти потенциальные проблемные места и оптимизировать их. Вы …
Программа курса
Модуль 1
Kotlin
Модуль 2
Architecture
Модуль 3
View
Модуль 4
Data
Модуль 5
Testing
Модуль 6
Build process
Модуль 7
Проектная работа
Kotlin
Освежим знания по Kotlin stdlib. Поговорим о kotlin coroutines, их внутреннем устройстве и API.
Kotlin стандартная библиотека
после занятия вы сможете:
оперировать основными синтаксическими конструкциями языка Kotlin JVM;
объяснить как осуществляется обратная совместимость с Java;
учитывать в своей работе best practices по написанию эффективного и чистого Kotlin кода.
Домашние задания: 1
ДЗ
«Выбор темы и организация проектной работы». Основная цель данной работы - выбор темы проекта над которым вы будете работать на протяжении всего курса, а также создание и оформление репозитория для выбранного проекта. Для ее выполнения необходимо сделать следующее:

⁃ Выбрать тему проекта над которым вы будете работать на курсе. Список тем приложений не ограничен, но в большинстве случаев это клиент серверное приложения.
⁃ Создать репозиторий на Github. Можете сделать его приватным либо публичным. Если репозиторий публичный - необходимо дать права на просмотр наставников и преподавателям:
@antonkazakov
⁃ Заполнить README.md. В нем необходимо указать тему проекта, основную функциональность, стек технологий, список экранов.
Kotlin coroutines
после занятия вы сможете:
использовать корутины для написания асинхронного кода;
разобраться с Channel и Flow.
Выбор темы и организация проектной работы
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом.
Channels & Flow
после занятия вы сможете:
применять для решение повседневных задач горячие каналы и холодные flow
разбираться и тонкостях этих потоков данных
13 июля, 20:00 — 21:30
Лектор: Антон Казаков
Architecture
В этом модуле поговорим про архитектуру в Android приложениях. Рассмотрим популярные архитектурные паттерны и выявим pros & cons каждого из них. Углубимся в ООП паттерны, особое внимание уделим IOC, в частности Dependency Injection: изучим как работает Dagger 2 и используем его для построение многомодульного приложения. Научимся искать явные признаки плохо спроектированного проекта и общие “запахи кода”, и рефакторить проблемные участки кода.
MVP + Clean
после занятия вы сможете:
выстраивать архитектуру в соответствии с принципами Clean Architecture, сформулированными Бобом Мартином;
применять классический MVP в рамках Android проекта.
16 июля, 20:00 — 21:30
Лектор: Евгений Козочкин
Домашние задания: 1
ДЗ
Модуль Architecture. Для выполнения домашней работы по модулю Architecture необходимо выполнить следующие пункты:

⁃ Выбрать архитектурный паттерн для вашего приложения и следовать ему при написании модулей. Выбирайте любой подход который вам нравится, главное придерживайтесь основным требованиям выбранной архитектуры и не забывайте про SOLID и принципы чистого кода
⁃ Выберите и используйте решения для написания многопоточного/асинхронного кода. Рекомендуется использовать либо Coroutine API, либо RxJava
⁃ Использовать Dagger 2 для реализации dependency injection паттерна
⁃ Декомпозировать приложение на Gradle модули. Разделять на модули следует по фичам(например модуль accounts, модуль authorization и т.п)
⁃ Старайтесь проектировать ваши классы масштабируемыми и тестируемыми. Избегайте частых признаков “плохо пахнущего” кода (см. урок Code smells & refactoring)
Design patterns
после занятия вы сможете:
применять на практике часто используемые паттерны проектирования из GoF там, где они действительно необходимы;
разобраться с паттернами многопоточного взаимодействия и синхронизации, кеширования и т.п.
20 июля, 20:00 — 21:30
Лектор: Михаил Валуйский
MVVM + MVI
после занятия вы сможете:
строить архитектуру проекта, используя MVVM/MVI;
проанализировать плюсы и минусы каждого из подходов;
разобраться с фреймворками, которые упрощают реализацию MVVM/MVI.
23 июля, 20:00 — 21:30
Лектор: Евгений Козочкин
RxJava
после занятия вы сможете:
применять ключевые операторы Reactive Streams;
писать собственные операторы;
оценить какие шедулеры и типы стримов лучше подходят под решения конкретных задач.
27 июля, 20:00 — 21:30
Лектор: Михаил Валуйский
Architecture Components
после занятия вы сможете:
применять AAC в своих приложениях;
адаптировать их под конкретно выбранную архитектуру.
30 июля, 20:00 — 21:30
Лектор: Евгений Козочкин
Dagger2
после занятия вы сможете:
организовывать DI в приложении, используя Dagger2.
3 августа, 20:00 — 21:30
Лектор: Антон Казаков
Multimodule project
после занятия вы сможете:
проектировать мультимодульную архитектуру приложения.
6 августа, 20:00 — 21:30
Лектор: Антон Казаков
Code smells + refactoring
после занятия вы сможете:
находить плохие архитектурные решения;
строить roadmap;
проводить рефакторинг.
10 августа, 20:00 — 21:30
Single Activity Application
после занятия вы сможете:
реализовывать Single Activity подход в вашем приложении, узнаете о плюсах и минусах данного подхода
использовать navigation component/cicirone для навигации в вашем приложении
View
Третий модуль посвящен вью и всему что с ними связано. Поговорим о View и ViewGroup которые доступны из коробки, погрузимся в их устройство и сравним быстродействие. Рассмотрим инструменты которые предоставляет Android SDK для рисования/рендеринга своих View. Сделаем наше приложение более отзывчивым используя широкие возможности Animator фреймворка. Научимся использовать инструменты для профилирования чтобы быть уверенными что наши вью попадают в ui rendering frame.
Views
после занятия вы сможете:
применять знания о процессах рендеринга view при создании собственных имплементаций Android View;
проанализировать слабые и сильные стороны VIewGroup из Android SDK.
13 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Модуль View. Для выполнения домашней работы по модулю View необходимо реализовать следующее:
⁃ Реализовать свои View (наследники View/ViewGroup).
⁃ Добавить в приложении любые виды анимаций, которые предоставляет Android sdk.
Canvas
после занятия вы сможете:
использовать возможности Canvas и Path из Android SDK для рисования сложных оптимизированных view;
проанализировать TouchListener для того, чтобы делать View интерактивными.
17 августа, 20:00 — 21:30
Animations
после занятия вы сможете:
сделать View более “живыми”;
использовать возможности ViewPropertyAnimator, Transitions API и тп.
20 августа, 20:00 — 21:30
RecyclerView
после занятия вы сможете:
проанализировать из каких компонентов состоит RecyclerView, как они устроены изнутри;
профилировать и оптимизировать списки.
24 августа, 20:00 — 21:30
UI Profiling
после занятия вы сможете:
использовать различные инструменты для поиска потенциальных узких мест в отрисовке UI;
оптимизировать низкопроизводительные решения для быстрой отрисовки приложений.
27 августа, 20:00 — 21:30
Motion Layout
после занятия вы сможете:
использовать Motion Layout для создания анимаций.
Data
Здесь мы поговорим о том как получать данные, обрабатывать их и безопасно хранить. Рассмотрим способы получения данных по сети, хранение в persistent и secure хранилищах.
Services
после занятия вы сможете:
выбирать необходимую реализацию Android Service, исходя из задачи и версии ОС;
выстраивать коммуникации между сервисами, которые работают в разных процессах.
31 августа, 20:00 — 21:30
Домашние задания: 1
ДЗ
Модуль Data. Все лекции в модуле дата посвящены данным, а именно их получению из источников и хранению в вашем приложении.

⁃ В зависимости от того, откуда ваше приложения получает данные организовать соотвествующие сущности, продумать механизм memory/persistent кэша.
⁃ Если вы храните секретные данные: токены/пароли/ключи организуйте безопасное хранилище.
⁃ Если у вас стоит задача получать данные с заданным периодом/синхронизировать данные то используйте механизмы совместимые с background work и Doze Mode.
Network
после занятия вы сможете:
применять широкие возможности http клиента Retrofit и десериализатора Gson для построения сетевого уровня в своем приложении.
10 сентября, 20:00 — 21:30
Persistent storage
после занятия вы сможете:
выбирать оптимальное решения для хранилища данных на девайсе.
14 сентября, 20:00 — 21:30
Security in Android
после занятия вы сможете:
выбирать оптимальный алгоритм шифрования для случая;
организовать безопасное хранилище секретных данных.
17 сентября, 20:00 — 21:30
Testing
В данном модуле рассмотрим различные виды тестов. Начнем с основания пирамиды тестирования - unit тестов, плавно перейдем на интеграционные тесты и закончим на вершине - автоматизированными UI тестами которые позволяют облегчить и ускорить ручное тестирование. Поговорим о таких инструментах как JUnit, Mockito, Robolectric, Espresso, UIAutomator и т.д. Подробно разберем на практике нюансы различных видов тестирования, слабые и сильные стороны, их стоимость и процессы написания/выполнения.
Юнит тесты
после занятия вы сможете:
покрывать unit тестами классы.
21 сентября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Модуль Testing. Для того чтобы быть уверенным что при добавлении нового кода/изменении старого ничего не сломалось, крайне полезно покрывать приложение тестами. Существует огромное количество различных видов тестирования начиная от необходимой базы - unit тестов на бизнес логику и заканчивая мутационными тестами, которые позволяют тестировать другие тесты. Чтобы закрепить полученный на лекциях знания - построим пирамиду тестирования в нашем приложении. Для выполнения домашней работы по модулю Testing необходимо сделать следующее:

⁃ Покрыть ваше приложения модульными (unit) тестами
⁃ Подключить и настроить Jacoco для измерения процента покрытия пакетов тестами. Выберите значение instruction/branch coverage оптимальное для вашего проекта и придерживайтесь его.
⁃ Покрыть основные пользовательские сценарии автоматизированными UI тестами.
Интеграционное тестирование на Android
после занятия вы сможете:
использовать фреймворки для интеграционного тестирования на Android;
рализовывать различные виды тестовых дублеров;
создавать shadowклассы.
24 сентября, 20:00 — 21:30
Automated UI Testing. Espresso framework, Spoon, MockWebserver
после занятия вы сможете:
писать UI тесты на Espresso в изолированной среде;
запускать UI тесты на нескольких эмуляторах параллельно.
28 сентября, 20:00 — 21:30
Build process
Этот модуль посвящен инфраструктуре, сборке и деплою приложений. Поговорим о системах сборки, контейнерах, инструментах для CI/CD. Напишем свой pipeline для сборки/тестирования/деплоя приложения.
Proguard
после занятия вы сможете:
встроить Proguard обфускацию и оптимизацию в приложение.
1 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Модуль build process. Процесс сборки и доставки вашего кода до потребителей не менее важен чем сам процесс написания этого кода. Поэтому в качестве домашней работы мы применим на практике все знания полученные на уроках для написания пайплайна сборки проекта и доставки его до QA/пользователей.

Для выполнения домашнего задания по модулю build process необходимо реализовать следующие пункты:

⁃ Включить R8/Proguard и сконфигурировать rules.pro написав максимально точные keep директивы
⁃ Написать свои правила на Android Lint/detekt и подключить их к проекту
⁃ Написать свои докерфайлы/взять готовые образы для Android sdk и Jenkins
⁃ Написать Jenkins declarative pipeline в котором должны выполняться: сборка, тестирование, статический анализ(lint & detekt), деплой приложения
Инструменты для проверки качества кода
после занятия вы сможете:
внедрять, настраивать линтеры/чекстайлы для проверки качества кода и поиска потенциальных ошибок.
5 октября, 20:00 — 21:30
Gradle
после занятия вы сможете:
писать свои Gradle Tasks и Gradle Plugin;
подключать их в проект, встраивать в пайплайн.
8 октября, 20:00 — 21:30
Gradle. Best practices and optimisations
после занятия вы сможете:
профилировать и оптимизировать свои сборки.
19 октября, 20:00 — 21:30
Docker
после занятия вы сможете:
собирать докер образ из Dockerfile;
поднимать контейнер из образа;
взаимодействовать с контейнером.
22 октября, 20:00 — 21:30
Jenkins
после занятия вы сможете:
поднимать Jenkins в Docker контейнере;
делегировать ему сборку Android проекта.
26 октября, 20:00 — 21:30
Distribution / Crash overview
после занятия вы сможете:
деплоить .apk файл в системы для дистрибуции приложений.
29 октября, 20:00 — 21:30
Проектная работа
Этот модуль посвящен доработке и защите выпускных работ. Работа над проектом начинается с самого первого модуля.
Консультация по проектам и домашним заданиям
получить ответы на вопросы по проекту, ДЗ и по курсу.
2 ноября, 20:00 — 21:30
Защита проектных работ
защитить проект и получить рекомендации экспертов.
5 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
Сдать ссылку на репозиторий курсового проекта. В репозитории обязательно должен быть заполнен файл Readme.md с описание проекта..

Преподаватель

Антон Казаков
Руководитель направления Android-разработки в Альфа Банк
Окончил магистратуру Казанского авиационного института по специальности «Радиотехника и телекоммуникации».

В Android-разработке с 2013 года. Разрабатывал приложения в небольших стартапах и огромных компаниях, работал в «СберТехе», руководил Android-разработкой в компании «Технократия».

На текущий момент руководит Android-разработкой в «Альфа-Банке». Оптимизирует процессы разработки и поставки фич, работает над тулингом, чтобы облегчить жизнь разработчикам.

Помимо Android-разработки, интересуется бэкенд-разработкой и DevOps-практиками. Любит решать алгоритмические задачи.