15 шагов, и вы Android-разработчик! Сайт proglib.io рассказал, какой язык выбрать, как научиться писать приложения и на что обратить внимание при разработке программ под мобильные устройства.
Android-разработчик – профессия будущего. Основные тенденции в развитии мобильных технологий в ближайшие годы будут связаны со следующими направлениями:
- Дополненная и виртуальная реальности. AR и VR уже применяются в мобильных играх и при посещении интерактивных музеев. Особый шик придает совместное использование с сервисами геолокации. Мобильные устройства – самый доступный вариант, чтобы воспользоваться этими технологиями.
- Алгоритмы машинного обучения (ML). Мы и не замечаем, сколько различных ML-решений мы уже используем в наших смартфонах: распознавание текста, детектирование лиц, чтение штрихкодов, распознавание достопримечательностей, преобразование аудиозаписей в речь, консультации с чат-ботами и т. д. Все эти технологии делают нашу жизнь проще. По мере роста производительности устройств и большей доступности облачных вычислений будут «входить в моду» всё более ресурсоемкие алгоритмы.
- Облачные вычисления. Доля мобильного трафика растёт, всё больше пользователей с помощью мобильных устройств получают доступ к различным приложениям и ресурсам. Информационный бум требует производительных мощностей, и облачные вычисления – эффективный способ удовлетворить эти потребности.
- Электронные платежи. Покупать товары с помощью смартфонов становится всё проще: и с помощью NFC, и онлайн. А новые технологии, такие, как блокчейн, обеспечивают лучшую безопасность платежей.
- Кибербезопасность. Существенная часть нашей жизни проходит со смартфоном в руке, здесь хранится много важного. Мобильные устройства – привлекательная мишень для хакерских атак. Большинство уязвимостей являются следствием недостаточной проработки концепции защиты. Улучшение качества защиты будет стимулировать развитие рынка.
Но какие навыки нужны, чтобы стать успешным Android-разработчиком? С чего начать?
1. Выберите язык программирования
Два основных языка программирования для разработки приложений на Android – Java и Kotlin. По факту, если вы будете заниматься разработкой серьезно, то вам не обойтись без обоих языков. Однако на конференции Google I/O 2019 было объявлено, что Kotlin является предпочтительным и официальным языком для Android. Использование Kotlin сокращает число ошибок в коде, язык легко интегрируется в существующие приложения.
2. Выберите интерактивную среду для Android-разработки
Выбор среды разработки – дело вкуса. Однако на первом этапе целесообразнее использовать Android Studio. Последняя версия IDE 4.0 от мая 2020 года доступна для загрузки на официальном сайте Android.
3. Изучите манифест и компоненты Android-приложения
Когда вы создадите черновик своего первого проекта в среде проектирования, среда автоматически создаст в папке Android-проекта файл манифеста AndroidManifest.xml.
Файл манифеста содержит уникальный идентификатор приложения и описывает компоненты приложения. Пройдитесь по этому списку компонентов, вам станет понятно, что потребуется изучить:
- Activity – экран приложения с пользовательским интерфейсом. Особое внимание следует уделить изучению жизненного цикла активности (Activity Lifecycle).
- Службы (Service) – компоненты, работающие в фоновом режиме. Например, службы могут обрабатывать сетевые транзакции, воспроизводить музыку, выполнять ввод-вывод файла или взаимодействовать с поставщиком контента.
- Поставщики контента (Content providers). Часто возникают ситуации, когда необходимо получить доступ к информации из другого приложения. Поставщики контента управляют данными: аудио, видео, изображениями и личной контактной информацией (контакты, список вызовов). Это единственный способ совместного использования данных приложениями в Android.
- Приёмник сообщений (Broadcast receiver) – компонент, реагирующий на сообщения системы Android и иных приложений: сообщения о низком заряде батареи, недоступности мобильной сети, появлении в зоне действия Wi-Fi-сетей.
- Intents – объекты, связывающие отдельные компоненты (Activity, Service и Broadcast receiver) во время работы приложения.
4. Изучите основные элементы пользовательского интерфейса Android-приложения
Основные элементы пользовательского интерфейса приложения представляют собой:
- UI Layouts – макеты экранов приложения;
- UI Components – поля ввода/вывода, кнопки, тулбары, элементы отображения и работы с мультимедиа, элементы отображения данных, например, RecyclerView;
- App Resources – ресурсы приложения: строки, шрифты, стили, растровая и векторная графика, иконки и анимация;
- Fragment – модуль пользовательского интерфейса Activity. Особое внимание при разработке пользовательского Fragment следует уделить изучению его жизненного цикла (Fragment Lifecycle);
- Иные элементы пользовательского интерфейса (поисковый интерфейс, диалоговые окна, ProgressBar, Toast/SnackBar).
Макеты экранов приложения (UI Layouts) имеют разную структуру:
- Linear Layout – макет, в котором дочерние элементы представлены в горизонтальных или вертикальных столбцах;
- Relative Layout – макет, в котором можно задавать расположение дочерних объектов относительно друг друга или относительно родительского объекта;
- Constraint Layout – наиболее универсальный и востребованный макет, позволяющий создавать сложные композиции.
5. Изучите хранилища данных Android
Узнайте, как хранить данные приложения и пользователя на устройстве: в парах ключ-значение, базе данных или других типах данных.
Важно также научиться обмениваться данными между приложениями и устройствами. Полезно освоить работу со службами резервного копирования, чтобы пользователи могли хранить информацию в облаке, синхронизировать ее между устройствами и восстанавливать при приобретении нового устройства.
Система предоставляет несколько вариантов хранения данных:
- Хранилище приложения (app-specific storage) хранит файлы, предназначенные только для вашего приложения. Либо в выделенных каталогах на внутреннем накопителе, либо в каталогах внешнего хранилища. Если информация носит конфиденциальный характер, лучше хранить ее во внутреннем хранилище.
- Общее хранилище (shared storage) хранит файлы, которые приложение намеревается предоставить другим приложениям: мультимедиа, документы и другие файлы.
- Настройки (preferences) используются для хранения примитивных данных в парах ключ-значение.
- Базы данных (databases) применяются для хранения структурированных данных в частной базе данных с помощью библиотеки Room.
6. Изучите, как работает сборка Android-приложений и плагин Gradle
Система сборки Android собирает ресурсы приложения и исходный код, упаковывает их в APK-файлы. Их можно тестировать и распространять. Android Studio использует Gradle – продвинутый инструмент автоматизации и управления процессом сборки. Это позволяет определить разные настройки конфигурации для разных проектов.
7. Научитесь создавать многопоточные Android-приложения
Каждый Android-разработчик сталкивается с необходимостью использования потоков. Когда приложение запускается, оно создает основной поток выполнения. Чтобы приложение сохраняло отзывчивость, необходимо избегать использования основного потока для выполнения операций, которые приводят к его блокировке: сетевые операции, обращение к базе данных, загрузка компонентов. Такие процессы выполняются в отдельных потоках. Android предоставляет множество способов создания и управления потоками. При использовании языка Kotlin для этих задач можно использовать Coroutines.
8. Изучите методы отладки Android-приложения
Отладка приложения – это процесс поиска и исправления ошибок и другого некорректного поведения кода. Чтобы разобраться, что происходит, и найти ошибку, мы можем с помощью отладки поставить выполнение программы на паузу в нужном нам месте и посмотреть содержимое объектов и переменных.
Отладка приложения осуществляется стандартными средствами, предоставляемыми средой разработки Android Studio.
9. Научитесь работать со сторонними библиотеками
Далеко не любую задачу можно решить с помощью стандартных средств Android. Для многих задач уже разработаны собственные решения, которыми грех не воспользоваться. Для обработки и загрузки изображений это Glide и Picasso, для внедрения зависимостей (Dependency Injection) – Dagger, Koin, Kodein и Hilt, для сетевых взаимодействий – Retrofit, для многопоточного программирования – RxJava. Не поленитесь также изучить библиотеки Google: Firebase, Google Play Services, Google Maps. Знакомство с устройством сторонних библиотек также научит вас писать более качественный код в собственных проектах.
10. Изучите Android Jetpack – набор библиотек и инструментов, ускоряющих работу Android-разработчика
Android Jetpack – это набор библиотек и инструментов, созданный командой Google для упрощения разработки под Android. Библиотеки, входящие в Jetpack, разделены на четыре вида:
- Foundation – базовые библиотеки, помогающие сократить шаблонный код.
- Architecture Components – библиотеки, используемые для построения архитектуры приложения.
- Behavior – библиотеки-обертки для функциональности, предоставляемой Android SDK. Созданы для улучшения стандартного Android API: Permissions, Notifications, CameraX и другие.
- UI – компоненты для работы с фрагментами, элементами пользовательского интерфейса и анимацией.
11. Изучите архитектурные шаблоны проектирования
По мере роста приложения вы неизбежно столкнетесь с вопросами проектирования, использования наработанных практик и опыта других разработчиков. Вместо того чтобы изобретать велосипед, быстро и элегантно катайтесь на проверенных моделях. Как можно раньше начните разбирать шаблоны проектирования – они описывают типичные способы решения распространенных проблем при проектировании Android-приложений.
По умолчанию, корпорацией Google задокументирована архитектура MVVM, но нужно использовать ту, которая лучше соответствует нашим потребностям.
Распространены три шаблона проектирования:
- MVVM (Model-View-ViewModel) – используется для разделения модели и её представления. Разработчик задаёт логику работы с данными, а дизайнер работает с пользовательским интерфейсом.
- MVP (Model-View-Presenter) – шаблон, облегчающий автоматическое модульное тестирование.
- MVI (Model-View-Intent) – архитектурный шаблон, позволяющий улучшить масштабируемость приложения.
12. Изучите методы тестирования Android-приложений
Тестирование приложения является неотъемлемой частью процесса разработки. Постоянно выполняя тесты, вы можете проверить правильность, функциональность и удобство использования приложения до его публикации.
Тестирование дает следующие преимущества:
- Быстрая реакция в случае сбоя приложения.
- Раннее обнаружение неисправностей.
- Более безопасный рефакторинг кода.
- Стабильная скорость разработки.
13. Изучите вопросы обеспечения безопасности Android-приложения
Android серьезно занимается вопросами обеспечения безопасности платформы и экосистемы Android. Для обеспечения безопасности Android-приложения используются следующие средства и механизмы: Encrypt/Decrypt, Proguard и R8.
14. Изучите работу с сенсорами
Программирование – это круто, но ещё более классно использовать физические компоненты телефона: GPS, камеру, NFC, акселерометр. Работы с этими датчиками по увлекательности близка к высокоуровневому программированию микроконтроллеров – приятно видеть, как написанный тобой абстрактный алгоритм взаимодействует с внешним миром.
15. Опубликуйте приложение на Google Play. Поздравляем, вы Android-разработчик!
Наконец, остается лишь опубликовать приложение. У этого процесса также есть собственный механизм и свои тонкости. Но это уже куда проще, чем написание кода приложения.
С описанным багажом знаний вы смело можете двигаться вперёд! Вопросы, рассмотренные в данной статье, помогут в создании портфолио и трудоустройстве.
[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]