Как стать Android-разработчиком в 2022 году — дорожная карта
Держите дорожную карту Android-разработчика на 2022 год. В ней описаны способы обучения и понимания разработки под Android, а также представлены необходимые ссылки на обучающие материалы. Путь прописан от простого к сложному, причем так, чтобы как можно быстрее перейти к практике и создать свой первый проект. Погнали!
С чего начать изучение разработки под Android?
Все Android-приложения должны быть написаны с использованием Kotlin, Java и/или C/C++. Kotlin и Java — это основные языки, которые разработчиками используют для создания приложений, в то время как C++ используется для написания функций, ориентированных на производительность или аппаратное обеспечение, которые используют Java Native Interface (JNI) для вызова собственных функций.
Java или Kotlin?
Когда более десяти лет назад компания Google представила первую версию своей ОС Android, она приняла Java в качестве основного языка для разработки приложений для Android.
Будучи одним из старейших объектно-ориентированных языков, Java прост в изучении и хорошо работает на виртуальной машине Dalvik, которая была создана на основе Java Virtual Machine (JVM), что делает его переносимым практически для любого устройства и операционной системы. Поэтому, когда компания Google начала создавать систему Android, Java был одним из наиболее подходящих языков.
Язык Kotlin разработала компания JetBrains. Изначально он был создан для среды JVM и сочетает в себе функциональное и объектно-ориентированное программирование. С момента выхода Kotlin стал восходящей звездой в разработке Android и других областях.
Вот несколько причин, почему Kotlin так хорошо сочетается с Android:
- Совместимость: Kotlin на 100% совместим с Java и обеспечивает отличную совместимость со средами JVM;
- Безопасность: согласно документации Android, вероятность сбоев в приложениях Android, содержащих код на Kotlin, на 20% ниже;
- Асинхронность: использование в Kotlin корутин позволяет обеспечить поддержку асинхронного (неблокирующего) программирования.
Поэтому если хотите начать изучать разработку Android прямо сейчас, Kotlin будет отличным выбором.
#1 Основы Java
- введение в программирование на Java;
- объектно-ориентированное программирование в Java;
- разница между примитивным типом и классами в Java.
Основы Android
- 7 ключевых концепций Android;
- лучшие практики Android;
- введение в класс Activity;
- жизненный цикл класса Activity;
- фрагменты в Android.
Практика 1.1: создайте приложение, которое подсчитывает количество нажатий на кнопку мыши и отображает результаты на экране.
Система контроля версий
Практика 1.2: зарегистрируйте репозиторий на GitHub или GitLab
Контроль версий — это практика управления и отслеживания изменений, внесенных в исходный код веб-приложения. Система контроля версий — это программный инструмент, с помощью которого разработчик может сообщать об вносимых в код изменениях с течением времени, и управлять ими. Система контроля версий помогает ускорить проект за счет совместной работы, повышает производительность, снижает вероятность конфликтов и ошибок, а также помогает в случае неполадок восстановить код.
Полезные ссылки:
- что такое система контроля версий;
- управление версиями в Git;
- Git: руководство для начинающих для понимание основных концепций;
- как и когда коммитить.
Пользовательский опыт (UX)
Практика 1.3: создайте приложение scorekeeper — приложения для записи счета и итогов игр.
Полезные ссылки:
Java Code Style (стиль кода)
Это неофициальные, но принятые сообществом разработчиков соглашение по оформлению Java-кода. Правила нужны, чтобы понимать:
- как использовать отступы;
- когда и как ставить скобки всех видов;
- как оформлять комментарии;
- в каком стиле давать названия классам, переменным, константам;
- какой должна быть максимальная длина строки кода.
Коротко о стиле кода Java и Android.
JSON
- введение в JSON;
- что такое JSON и зачем он нужен;
- JSON vs XML.
Запрос App Permission в Android
Практика 1.4: напишите приложение, которое будет запрашивать разрешение на чтение и запись в хранилище при нажатии на кнопку и отображать результат на экране.
Полезные ссылки:
Взаимодействие с пользователем
Полезные ссылки:
создание адаптивного интерфейса с помощью ConstraintLayout;
RecyClerview — компонент RecyClerview — RecyClerview Pro Tip.
#2 Основы Kotlin для Android-разработки
- Java против Kotlin;
- основы Kotlin;
- Kotlin в Android Studio;
- мастер-класс по созданию Android-приложения с помощью Kotlin.
Фоновый режим в Android
Практика 2.1: напишите приложение, которое позволит пользователю запускать, обновлять и отменять поступление уведомления с помощью трех кнопок.
Практика 2.2: создайте приемник широковещательных сообщений (broadcast receiver), который фиксирует изменения состояния телефона. Если на устройство позволят, приемник получит соответствующее уведомление и зарегистрирует сообщение.
Практика 2.3: создайте музыкальный плеер, который будет воспроизводить музыку в фоновом режиме.
Полезные ссылки:
- руководство по фоновому режиму;
- Android-бродкасты;
- службы.
Сохранение пользовательских данных
Практика 2.4: создайте приложение для напоминания задач ToDo.
Полезные ссылки:
- введение в базы данных: Udemy — лекции 177–178;
- данные и хранилище файлов;
- SharedPreferences — постоянное хранилище на платформе Android.
- хранение данных в локальной БД:
- введение в базы данных: Udemy — лекции с 189по 191;
- хранение данных с помощью SQLite;
- хранение данных в Room.
#3 Продвинутый уровень
Jetpack Compose
Практика 3.1: создайте с помощью Compose UI регистрационную форму для входа в систему. UI должен быть как здесь.
Полезные ссылки:
- основы Jetpack Compose;
- установка.
Android Networking
Практика 3.2: получите и отобразите простой список пользователей из web API в Android recyclerview с помощью библиотеки retrofit. Отобразите имени, электронную почты и город в Recyclerview и сделайте так, чтобы пользователя можно было удалить длительным нажатии на элемент.
Полезные ссылки:
#4 Архитектура приложений
- руководство по архитектуре приложений;
- архитектура приложений для Android;
- архитектура Android MVP;
- шаблоны архитектуры Android: Model-View-ViewModel;
- шаблон проектирования Android MVVM.
ViewModel и LiveData
Практика 4.1: проделайте описанные в практике 3.2 действия с помощью LiveData и ViewModel.
Полезные ссылки:
#5 Реактивное программирование на Java и в Android
Практика 5.1: создайте приложение для Android, способное отобразить список фильмов в View Recycler с использованием RxJava и Retrofit с использованием архитектуры MVP. JSON-проект.
Полезные ссылки:
- RxJava и RxAndroid:
- Часть 1: основы;
- Часть 2: оператор;
- Часть 3: преимущества реактивного программирования;
- Часть 4: реактивное программирование в Android.
- RxJava с Retrofit.
Библиотека Hilt
Библиотека Android, которая упрощает внедрение зависимостей (DI) в приложении. Hilt позволяет сосредоточиться только на важных частях определения и инъекции связок, не беспокоясь об управлении всеми настройками DI и настройкой связей (wiring).
Полезные ссылки:
#6 Корутины в Kotlin
- корутины: общие понятия;
- Многопоточность vs корутины;
- Kotlin-корутины в Android;
- обработка фона с помощью корутин: Udemy — лекция 276.
Практика 6.1: создайте приложение «Калькулятор» с возможностью сохранения истории расчетов в базе данных и чтобы пользователи смотреть ее и очищать.
Полезные ссылки:
- Kotlin Flow в Android;
- расширенная программа по корутинам в Kotlin с помощью Kotlin Flow и LiveData.
- StateFlow и SharedFlow;
- реактивные потоки в Kotlin.
Полезные библиотеки:
- Glide — для загрузки и кэширования изображений;
- Timber — для логирования;
- EventBus — упрощает связь между действиями, фрагментами, потоками, службами и т. д. Меньше кода, лучше качество;
- Coil — библиотека загрузки изображений для Android, поддерживаемая Kotlin Coroutines.
Бонус
Визуальная дорожная карта. Каждый узел указывает на отдельные концепции платформы Android, Android SDK и часто используемых библиотек.
Ранее мы публиковали дорожные карты для дата- и DevOps-инженеров, а также React-, Java-, Angular-, фронтенд-, бэкенд-, фулстек-разработчиков и разработчиков игр.
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: