Android-разработчик расширенный

Яндекс Практикум
4,7
На практике освоите все этапы Android-разработки — с нуля за 12 месяцев. Получите востребованную IT-профессию и реальный опыт.
4,7
На основании отзывов пользователей
на Отзовике, IRecommend и TutorTop
19 500 /мес
или сразу 233 000
Смотреть курс
Программа обучения

Регулярно обновляем программу, чтобы вы проходили только актуальное

Составили её по реальным задачам, которые решают в Android-разработке. Есть базовый и расширенный форматы — со вторым вы быстрее вырастете до уровня middle.

Знакомство с IDE и Java

1 модуль — бесплатно, чтобы вы почувствовали себя в роли Android-разработчика и поняли, хотите ли развиваться в этом направлении. А после бесплатной части выберете подходящий формат курса: базовый или расширенный.

IDE
Java
Переменные
Строки
Методы
Базовый и расширенный курс
Особенности Android‑разработки

Что делают Android-разработчики, главные языки и инструменты

IDE, эмулятор и запуск проекта

Что такое IDE, установка и настройка, запуск и гайд по проекту

Основы Java: работа с переменными

Переменные в Java, объявление переменных, типы данных в Java, операции с примитивными типами

Основы Java: работа со строками

Ссылочные типы данных, строковые переменные, конкатенация и строковые шаблоны

Основы Java: методы и функции

Что такое методы, как объявлять и вызывать метод, как возвращать значение из метода, особенности оператора return, параметры, аргументы и сигнатура методов, метод main

Найдёте ошибки, допишете код и запустите приложение «Конвертер валют»

Введение в Java
Java
Переменные
Операторы сравнения
Строки
Массивы
Булева алгебра
Методы
Git
История Java

Появление Java в мобильной разработке, что входит в инфраструктуру Java, как связаны Android и Java

Работа со строками

Ссылочные типы данных, строковые переменные, конкатенация и строковые шаблоны

Операторы сравнения

Условия, операторы сравнения, операторы if и switch

Булева алгебра

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

Циклы

Цикл for, основы, движение в обратном направлении и изменение шага, цикл while, бесконечный цикл, вложенные циклы

Методы

Вспомните методы, напишете свой калькулятор, научитесь декомпозировать задачи

Классы и объекты

Что такое объекты, зачем нужны классы, конструкторы, области видимости и ключевое слово this, механизм сборки «мусора»

Git для самых маленьких

Узнаете про контроль версий, GitHub, commit и fork, как скачать репозиторий, создавать ветки и работать в Git командой, создадите первый Pull Request

Запуск кода

Как запустить код на эмуляторе и реальном устройстве, какие ошибки возможны при запуске

Массивы, списки, итераторы

Как работать с массивами, для чего нужна структура данных ArrayList, что делает ассоциативный массив Map, в чём идея множества Set, роль инструмента Iterator и цикла forEach

Научитесь работать со строками, циклами и главными инструментами Android-разработки — Android Studio и Git

Проектная работа на Java
Java
Модификаторы доступа
Наследование
ООП
Интерфейсы
Модификаторы доступа

Что такое модификаторы доступа, зачем они нужны. Модификатор Static, как его применять к другим методам.

Наследование и переопределение

Погрузитесь в объектно ориентированное программирование (ООП). Узнаете, для чего нужны наследования и конструкторы, что такое полиморфизм, ключевые слова final и abstract, объект и object.

Интерфейсы

Узнаете, что такое интерфейсы и какие проблемы они решают.

Анонимные классы и лямбда-выражения

Иерархия вложенных классов, создание анонимных классов, лямбда-выражения.

Дженерики

Синтаксический сахар, создание и наследование дженерик-классов, дженерик-методы и конструкторы, ограничения и wildcard.

Допишете код приложения «Контакты», чтобы сортировать, просматривать и звонить по всем номерам в телефоне с учётом привязки к мессенджерам и почте

Введение в Kotlin
Kotlin
Переменные
Циклы
Классы
Оператор if
Оператор when
История Kotlin

От Java к Kotlin. Для чего создавали Kotlin и чем интересен его код.

Переменные в Kotlin

Типы данных и переменные, приведение типов, операции с простыми типами.

Операторы if и when

Операторы в Kotlin, условные операторы в Java и Kotlin (if и when).

Циклы

Циклы for и while в Kotlin. Чем они отличаются от циклов Java.

Классы

Классы и методы в Kotlin, их свойства, блок init, дефолтные и именованные параметры. Как использовать nullable‑типы, паттерн Singleton и объявление объекта, анонимные и enum‑классы.

Изучите основные конструкции языка программирования Kotlin в теории и на практике

Проектная работа на Kotlin
Функции высшего порядка
Функции расширения
Мультидекларации
Наследование
Массивы
IDE
Git
Наследование и переопределение

Наследование и система типов в Kotlin. Изолированные классы и интерфейсы.

Массивы, списки, итераторы

Массивы и коллекции в Kotlin. Функции kotlin.collections.

Top-level-функции

Функции высшего порядка, расширения и мультидекларации.

Продвинутая IDE

Android Debug Bridge (ADB), Android Debugger. Логирование.

Продвинутый Git и Gitignore

Командная строка. Устройство хранилища Git, создание коммита в Git, манипулирование коммитами и роль gitignore-файла, удалённый репозиторий Git.

Перепишете часть приложения «Контакты», увидите разницу между Kotlin и Java, поработаете с фильтрами и списками

Введение в UI и хранение данных
XML
Вёрстка
ImageView
Навигация
Стили и темы
Context и Intent
EditText
Хранение данных
Вёрстка экранов

Познакомитесь с инструментом вёрстки Figma и языком разметки XML. Сверстаете первый экран. Изучите структуру и синтаксис ресурсных файлов.

ImageView

Изображения в приложениях, величина DPI: от чего она зависит и как влияет на качество картинок на экране. Типы масштабирования.

Навигация

Навигация приложения, компонент Activity для взаимодействия пользователя с приложением, жизненный цикл Activity lifecycle, роль и типы класса Intent.

Стили и темы

Что такое стили и для чего нужны. Синтаксис стилей, эффективное использование стилей, сторонние шрифты. Чем тема отличается от стиля, как она устроена и как её настроить.

Context и Intent

Место Context в Android-разработке, типы Context при создании приложения. Узнаете, как пользоваться API Context, Intent Filters и передавать данные с помощью Intent.

EditText и TextWatcher

EditText в тестовом приложении Prime Number, методы и атрибуты EditText, инструменты Android SDK для работы с вводимым текстом, в чём помогает TextWatcher.

Хранение данных: начало

Данные в жизни приложения и их хранение на практике.

В приложении Playlist Maker сверстаете главный экран, экраны настроек и поиска, добавите новые шрифты и кнопки, адаптируете интерфейс под ночной режим

Продвинутый UI: списки и библиотеки
RecyclerView
ViewHolder
Adapter
Библиотеки
Glide
RecyclerView

Что такое класс RecyclerView, как его создать, без каких вспомогательных классов не работает RecyclerView. LayoutManager и его базовые типы.

ViewHolder

Что такое класс ViewHolder, почему он появился, когда и зачем использовать его основные методы.

Adapter

Adapter как целое и часть RecyclerView. Собираем RecyclerView. Особенности работы с Adapter.

Введение в библиотеки

Что такое библиотеки и для чего они нужны, подключение библиотек к проекту. Библиотека Glide, загрузка изображений из интернета в ImageView.

Создадите первый список в приложении Playlist Maker, начнёте знакомиться с библиотеками

Сеть
Сеть
Сервер
TCP/IP
HTTP
URI
JSON
API
Введение в сеть

Выход в сеть. Кто разрабатывает сервер и как он работает. REST API.

HTTP

Путь данных от клиента на сервер, их трансформация. Типы запросов, формат данных и сетевые ошибки. TCP/IP, HTTP, URI, JSON.

Retrofit

Популярные аннотации в библиотеках Android и их возможности. Библиотеки Gson и Retrofit.

Работа с API на практике

API и ошибки. Авторизация запросов, практика с API крупного сервиса IMDb.

Оживите экран поиска и добавите выполнение настоящих поисковых запросов в Playlist Maker

Хранение данных
Shared Preferences
Jetpack
Шаблоны проектирования
Observer
Безопасное хранение данных
Shared Preferences

Что такое Shared Preferences, что нельзя там хранить. Как обезопасить данные.

Храним данные

Сохранение объектов. Шаблон Observer, подписка на изменения, Jetpack и DataStore.

Научите приложение Playlist Maker сохранять историю поиска

Продвинутый UI: компоненты вёрстки
RelativeLayout
ConstraintLayout
Layout Inspector
RelativeLayout

Влияние LinearLayout на вложенность, проблема вложенных весов. Атрибуты RelativeLayout: центрирование, относительное расположение, выравнивание относительно родительского контейнера, относительное выравнивание. Комбинирование атрибутов, работа с атрибутами в коде.

ConstraintLayout

Возможные проблемы у RelativeLayout и ConstraintLayout. Их решение.

Создадите экран аудиоплеера в приложении Playlist Maker

Многопоточность
Многопоточность
Debounce
ProgressBar
MediaPlayer
Введение в многопоточность

Работа кода программы, создание новых потоков, синхронизация. Жизненный цикл потоков.

Многопоточность в Android

Главный поток, его классы и циклы. Как менять UI не из главного потока.

Улучшаем Playlist Maker

Логика debounce и её реализация с использованием Handler. Новый View‑элемент ProgressBar, инструмент MediaPlayer.

Сделаете удобнее поиск в приложении Playlist Maker, добавите ProgressBar в светлой и тёмной теме, время и воспроизведение отрывка на экране аудиоплеера

Архитектура
Clean Architecture
MVC
MVP
MVVM
Moxy
LiveData
Dagger
Koin
Clean Architecture

Понятие «чистой архитектуры» и её применение в Android.

Шаблон MVP

Сделаете рефакторинг кода, поменяете MVC на MVP. Узнаете, что такое MVP с единым State, какие бывают проблемы MVP и что из себя представляет библиотека Moxy.

Шаблон MVVM

Особенности шаблона MVVM. Создание ViewModel. Класс LiveData, разметка с ViewBinding.

Подготовка проекта к рефакторингу

Осуществите переход с MVP на MVVM и разработаете добавление отдельного фильма в избранное.

Внедрение зависимостей

Теория внедрения зависимостей (Dependency Injection, DI), практика с DI.

Инструменты DI

DI-фреймворки в Android: статические и динамические. Базовые элементы фреймворков Dagger и Koin.

Перепишете код Playlist Maker по шаблону MVVM

Продвинутый UI: фрагменты
Фрагменты
Иерархия экранов
Back Stack
Task
TabLayout
Введение во фрагменты

Навигация и Activity. Управление Back Stack. Фрагменты.

Создание фрагментов

Жизненный цикл. Создание и переключение Fragment.

Особенности работы с фрагментами

Менеджер фрагментов. Передача данных между фрагментами. Сохранение состояния. ViewPager2.

TabLayout и практика

Реализация вкладок с использованием TabLayout и его настройки.

Научите приложение Playlist Maker создавать плейлист, реализуете экран «Медиатека»

Продвинутая навигация на Fragment
Single Activity
Navigation Graph
FragmentManager
Jetpack Navigation Component
BottomNavigationView
NavController
Tabs
Single Activity и кастомный навигатор

Изучите подходы к обработке навигации, особенности работы с библиотеками навигации — существующими и своими. Создадите экран списка актёрского состава, сделаете рефакторинг на подход Single Activity.

Jetpack Navigation Component

Познакомитесь с Jetpack Navigation Component и другими инструментами для навигации. Изучите граф переходов — Navigation Graph и компонент NavController для переходов между экранами. Внедрите Jetpack Navigation Component в приложение.

BottomNavigationView

Изучите паттерны навигации, добавите на экран и настроите BottomNavigationView. Научитесь использовать его в связке с Jetpack Navigation Component.

Переделаете навигацию между экранами «Поиск», «Медиатека», «Настройки» на Fragment

Продвинутая многопоточность и сложный UI
Реактивное программирование
Корутины
RxJava
RxMarbles
CoroutineScope
JVM-потоки
Flow
Реактивное программирование

Императивное, декларативное и асинхронное программирование. Реакция и реактивность.

RxJava

Библиотека для реактивного программирования. Типы Observable, операторы RxJava, многопоточность с RxJava, Rx‑цепочки и ошибки.

Корутины

Корутины против классических потоков. Как запускать корутины. Механизм работы suspend‑функций.

Корутины на практике

Преимущества корутин, debounce и асинхронные задачи. Сетевые запросы и Flow.

Переведёте поиск, отправку поискового запроса и прогресс воспроизведения трека на корутины

Продвинутая работа с сетью и хранением данных
Базы данных
SQL
Room
Рermissions
Dialog
Хранилище
BottomSheetDialog
GridLayoutManager
Базы данных

Хранение данных, типы баз данных и система управления ими. База данных для приложений под Android.

SQL

Реляционные базы данных. Основы языка запросов SQL. Основы работы с базой данных SQLite на Android.

Room

Изучите, чем Room удобнее классического SQLite, ORM и похожих библиотек.

Permissions

Запрос permissions во время работы приложения, типы permissions, Runtime Permissions. Библиотеки для разрешений.

Доступ к файлам

Разберётесь, где хранятся файлы в Android, как запросить разрешение для доступа к чтению и записи файлов. Как сохранить файлы на устройстве.

Диалоги и всплывающие окна

Диалоги, BottomSheet, GridLayoutManager, Drawable в сочетании с View-элементами.

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

Финал Playlist Maker
Иконка приложения
Legacy
Adaptive Icon
Asset Studio
Публикация в Google Play
Релизная сборка
Иконка приложения

Роль иконок приложений. Подходы к их созданию и применению. Создание иконки в Asset Studio в несколько кликов.

Будущие задачи

Научитесь делать релиз приложения в Google Play, настраивать инструменты для сбора аналитики, тестировать приложение. Напишете первый unit-тест.

Создадите иконку приложения Playlist Maker и экран «Плейлист»

Продуктовая и командная разработка
Методология
Декомпозиция
Жизненный цикл продукта
Git
Код-ревью
Жизненный цикл продукта

Изучите все этапы продуктового цикла: сбор требований, дизайн, разработку, тестирование, релиз продукта и оценку результатов.

Методологии

Познакомитесь с методологиями Waterfall и Agile. Поймёте, как оценивать задачи и формировать спринт.

Git для гигантов

Методология работы с Git, исследование истории изменений, merge‑конфликты, работа с Git в итоговом проекте.

Зачем нужен код‑ревью

Узнаете, что такое код‑ревью. Познакомитесь с Code Style. Поймёте, как делать код‑ревью правильно и создавать удобный для ревью код.

Узнаете, какие есть методы работы в команде, научитесь декомпозировать задачи и работать с коллегами над одним проектом в Git

Итоговый проект «Агрегатор вакансий»

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

Карьерный трек: подготовка к трудоустройству

Составите резюме, которое привлечёт внимание рекрутеров, и напишете сопроводительное письмо для откликов на вакансии. Узнаете, как правильно оформлять портфолио, и построите стратегию поиска работы. Обратите внимание: если курс оплачивает ваш работодатель, у вас не будет карьерного трека.

Карьерный трек: акселерация

Акселерация — активный поиск работы с поддержкой HR‑экспертов. Будете откликаться на вакансии, делать тестовые и ходить на собеседования, а мы вас дистанционно поддержим. Например, расскажем, какие ошибки бывают в общении с работодателем и как их избежать. Акселерация может продолжаться до 6 месяцев — обычно этого достаточно, чтобы получить первую работу в IT.

Расширенный курс «Android-разработчик»

У этого курса есть расширенный формат: стоит дороже, но включает в себя больше тем и проектов — чтобы усилить портфолио и повысить шансы на быстрое трудоустройство. Расширенный курс на 3 месяца длиннее, но будут дополнительные каникулы.

Дополнительные темы
Кейс для портфолио
Командная работа
Ещё 3 темы

Фреймворк Jetpack Compose, углублённая работа с UI, BroadcastReceiver, Service

+1 индивидуальный проект

По дополнительным темам, чтобы усилить портфолио

+1 командный проект

Чтобы закрепить пройденный материал и освоить дополнительные навыки, которые повысят ваши шансы на трудоустройство

Больше навыков, которые помогут найти работу и быстрее вырасти до middle