Профессия андроид-разработчик: подробное описание и обзор

Введение

Года 2-3 назад в новогодние праздники у меня выдались свободные дни, и я размышлял, чем бы мне заняться. Вообще, в программировании и ИТ я, так или иначе, всю жизнь, но вот на мобильные платформы ничего писать не доводилось. Но тянуло… Всё равно мы все с телефоном чуть ли не 24 часа в сутки. Интересно же под него писать то, что мне нужно? Безумно интересно. Погодите, а что мне нужно? Метания не были долгими и мучительными. Банальный «хэлловорлд» писать скучновато и на один вечер, поэтому поначалу я хотел парсить сайт с расписанием сеансов кино. Но, бегло погуглив, сразу понял, что всё это давно есть. Особняком всегда для меня стояли программы для чтения, я пользовался ими со времён коммуникаторов/наладонных компьютеров для WinCE. Именно поэтому выбор пал на проект CoolReader (далее буду звать его CR).

Что такое CR? Это одна из старейших читалок, которая до сих пор крайне популярна. Суждение отчасти субъективное (я много вижу в автобусах и метро читающих именно на CR до сих пор), а отчасти объективное (попробуйте ввести в поиске PlayMarket слово «reader», и CR будет одним из первых предложений). Когда-то давно я выбрал для себя эту читалку и на долгие годы забыл, что существуют вообще другие (естественно ставил всем друзьям и знакомым). Это сейчас их много разных и интересных, а тогда было не особо. Т.е. для меня использование CR было как само-собой разумеющееся, хотя немного напрягало, что с некоторых пор приложение перестало обновляться. Как-то раз я попытался перейти на другое приложение, и даже купил премиум версию. Но всё-таки не пошло — CR оказался удобнее в плане UI, хоть это раскрывается и не сразу. Пример того, с чем я не смог смириться:

  1. В CR выделить текст можно просто двумя тапами в разное место экрана — текст выделяется между тапами;
  2. Если нужно выделить одно слово, то можно сделать это просто двойным тапом.

Это позволяет выполнить перевод слова или фразы в словаре за доли секунды. Стандартное андроидовское поведение (сделать длинный тап, подвигать указатели начала и конца) для читалок не подходит, неудобно.

Работа со словарями вообще оказалась критичной для меня, а потому я сразу понял, чего мне не хватало от читалки. Мне нужна возможность настройки двух словарей. Один словарь — это классно: выделили слово/фразу и тут же перевели. Но разные словари — это разные словари. Можно настроить GoldenDict или Abbyy для чтения книг на английском (они оба по-своему хороши). Хорош aard2, в который можно залить, например, оффлайновую википедию (да, всю википедию оффлайн!).

Dagger

Наш список 10 лучших библиотек был бы неполным без Dagger. Эта библиотека представляет собой полностью статичный фреймворк внедрения зависимостей во время компиляции. Dagger, так же как и RxJava, действительно сложен для понимания (мне пришлось потратить некоторое время, чтобы понять их пример CoffeeMaker), но определённо заслуживает потраченного времени и усилий.

Внедрение зависимостей (англ. dependency injection) — это способ, позволяющий добавлять небольшие компоненты к другим моделям с минимальными усилиями. Например, если у вас есть модель автомобиля, вы можете добавить к ней шины и с лёгкостью подменить имплементацию шин в будущем — не изменив при этом ни единой строчки кода в моделе автомобиля.

При разработке более сложных приложений вы точно не захотите самостоятельно выполнять задачи по внедрению зависимостей, потому что объём кода быстро увеличивается и становится слишком сложным для поддержки. Dagger избавит вас от этой проблемы, потому что он создает граф внедрения зависимостей во время компиляции посредством обработки аннотаций.

В прошлом году Google добавил отдельный модуль Android Dagger, который позволяет писать меньше шаблонного кода и упрощает внедрение зависимостей.

Какие языки используют для мобильной разработки

В мобильной разработке есть специализация по платформам и языкам программирования. Но строгого разделения на фронт и бэк, как в вебе, здесь нет — программисту нужно уметь работать и с интерфейсом, и с внутренней логикой приложения.

Под Android и iOS можно писать приложения практически на любом языке программирования: C/C++, Fortran, ассемблер, Python, JavaScript. Но есть и официально поддерживаемые языки, которые позволяют использовать все возможности мобильной операционной системы и получать моментальный доступ к новым функциям. Для iOS это Objective-C и Swift, а для Android — Java и Kotlin.

Как сделать приложение для андроид — дерево проекта

Дерево проекта содержит все файлы и ресурсы, необходимые для создания Android-приложения. Если вы знакомы с написанием простых программ на Java, C, Python и т. д., то могли бы подумать, что все будет содержаться только в одном или двух файлах. Но разработка Android-приложений немного сложнее:

appнапример, папкиmanifestsjavaresresources

В “manifests” располагается файл «AndroidManifest.xml», каждое приложение должно содержать его. Это XML-файл с информацией о приложении, включая его название. Часто добавляемым в этот файл элементом является список разрешений, необходимых для приложения. Для этого простого приложения не нужно здесь ничего менять.

В разделе «java» располагается Java-код приложения. Он будет находиться в подкаталоге, с именем com.example.user.myfirstapp. Это имя домена компании, которое вы ввели ранее, только наоборот, плюс название приложения. В этой папке находится файл MainActivity.java. Это точка входа в приложение и единственный файл Java, который нам понадобится.

Продолжаем создавать простое приложение для Андроид. В разделе «res» есть несколько папок для графики, меню и элементов пользовательского интерфейса. Нас интересуют «layout» и «values». В папке «layout» находится файл под названием «activity_main.xml». Это XML-файл, описывающий пользовательский интерфейс. Редактировать его можно двумя способами. Первый — непосредственное редактирование XML-кода, второй — использование встроенного дизайнера пользовательского интерфейса:

valuesXML-файловstrings.xmlJava-кодеstrings.xml

Чтобы создать приложение для Андроид самому, нужно будет изменить файлы MainActivity.java, activity_main.xml и strings.xml.

Сетевые возможности

Всё плохо… Было. Стало:

Прекрасная функциональность каталогов OPDS (а иначе откуда скачивать книги?) — добавлен поиск, добавлена возможность фиксировать избранные папки, предпросмотр аннотаций, обложек.

Добавлена возможность открытия книг с Яндекса/Dropbox.

Добавлена синхронизация позиции чтения между устройствами, а также синхронизация закладок и настроек. Думаю, сделана далеко не хуже пропиетарных решений от Onyx, PocketBook и подобных.
Google.Drive. Они сами виноваты. Изначально сделал, затем они свою библиотеку для андроида посчитали устаревшей, на новую переходить уже не захотелось, кончился кредит доверия.

Отдельно отмечу Яндекс — самые что ни на есть некривые и простые API с которыми «не больно» разбираться и «жить дальше». Все остальное — минимум примеров, все устаревшие, все обросло кучей своих (опять же устаревших) API (да, дропбокс и гугл, я о вас, хоть и победил в конце концов).

Как стать Android разработчиком, что нужно знать и уметь?

Объем знаний и навыков, необходимых специалистам, постоянно растет. Мы укажем в статье только основные навыки:

  1. Знать языки программирования Java и Kotlin. На данных языках ведется разработка большинства мобильных приложений.
  2. Уметь создавать мобильные приложения в Android Studio. Это бесплатная программа, в которой можно настраивать интерфейс приложения и программировать логику его работы.
  3. Знать принципы работы операционной системы Android, файловую структуру и т.д.
  4. Знать основы ООП (объектно-ориентированное программирование).
  5. Уметь работать с популярными фреймворками и библиотеками готовых решений.
  6. Знать принципы работы HTTP и REST – протоколов передачи данных.
  7. Знать HTML, CSS, XML.
  8. Знать общие принципы разработки, например, как называть функции и переменные, разделять текст программы на файлы, оформлять код.
  9. Уметь пользоваться Git и GitHub.
  10. И многое другое.

Освоить азы программирования можно самостоятельно либо на курсах. Часто под руководством опытного наставника процесс обучения идет быстрее, а знания приобретаются системно. Это позволяет повысить качество кода, а значит – быстрее получить хорошую работу.

Основной инструмент Android-разработки

Прежде чем мы перейдём к разговору о языках программирования, следует сказать про главный инструмент, который применяют современные Android-разработчики — Android Studio. Это интегрированная среда разработки от Google, созданная на основе IntelliJ IDEA от JetBrains.

Инструмент является официальным средством разработки Android-приложений. Он поставляется в виде пакета с Android SDK и представляет собой набор специализированных инструментов с соответствующим функционалом. По сути, здесь есть всё, что нужно программисту.

Android Studio поддерживает такие языки программирования, как Kotlin, Java и С++.

Lifecycle 2.3.0

В SavedStateHandle появилась lazy сериализация, т.е. теперь можно задать setSavedStateProvider() для заданного ключа, чтобы сериализовать его лениво, что позволяет сохранять любой тип.

Изменения также затронули Lifecycle: теперь DESTROYED — это терминальное состояние, и после него никаких вызовов происходить не будет. Также теперь все методы Lifecycle вызываются строго на главном потоке, а в противном случаем будет креш. Помимо прочего добавили нового API, чтобы упростить тестирование

Большая новинка ViewTree API, которое позволяет получить LifecycleOwner или ViewModelStoreOwner для заданного View. Аналогичное API добавили для SavedStateRegistry в библиотеки savedstate 1.1.0

AndroidX Lifecycle 2.3.0

Room

Room — это официальный ORM для Android, и этот статус оправдывается рядом причин. Эта библиотека отличается удобным API, похожим на Retrofit. Room также в значительной степени опирается на аннотации и стандартный SQL-синтаксис.

Кроме того, Room по умолчанию включает в себя поддержку Rx и , поэтому вы сможете использовать его, как вам захочется. Основное преимущество Room перед различными ORM — простота. Многие ORM имеют гораздо более сложный API, для использования которого вам потребуется тщательно изучить всю документацию. Благодаря стандартному SQL-синтаксису Room предельно доступен для понимания, что позволяет приступить к работе сразу, не тратя много времени на чтение документации.

AndroidX Activity 1.2.0 | Activity Result API

Activity Result API — это новое API, которое приходит на замену перегрузке метода onActivityResult() и делает его более удобным. Теперь вам нужно просто зарегистрироваться с указанием контракта и callback для получения объекта ActivityResultContract, который вы можете вызвать для получения результата из любой Activity. Самые распространенные контракты такие как получение картинки или выбор файла уже реализованы в библиотеки, но вы легко можете добавить свой. Также важный аспект нового API то, что оно упрощает работу с получением разрешений, так как их механизм основан на .

Следующая новинка — возможность получить до вызова , подписавшись на соответствующее событие. Конечно есть вариант для Coroutine без callback-a.

Поддержка — это значит что теперь работает со всеми новыми API из SavedState и Lifecycle, о которых я расскажу позже.

Сколько зарабатывает мобильный разработчик

Зарплатная вилка Android-разработчика по данным hh.ru на конец июня 2020 года:

  • Начинающему специалисту с минимальным опытом (джуниору) предлагают зарплату от 35–40 тысяч рублей.
  • Опытный специалист (мидл) получает сильно больше — от 100 тысяч.
  • Высококлассный разработчик (синьор) и руководитель команды разработчиков (тимлид) — в среднем от 180 тысяч, но есть вакансии и за 400–500.

Кроме языка программирования, требуется знание Git и специальных библиотек: RxJava, Dagger, Android Architecture Components.

Зарплатная вилка iOS-разработчиков по данным hh.ru на конец июня 2020 года:

  • Стажёрам совсем без опыта предлагают 20–30 тысяч рублей.
  • Джуниорам платят уже от 40 тысяч.
  • Мидлам — в районе 100 тысяч рублей.
  • Синьорам и тимлидам — 150–200 тысяч.

Обычно в вакансиях требуют знание библиотеки RxSwift.

Учебный центр МГТУ им. Баумана

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

Первый уровень даст вам общее знание об архитектуре операционной системы Android, знакомство со средой разработки Android Studio, знание основных паттернов разработки приложений под Android. А главное – возможность создавать приложения, не требующие взаимодействия с внешним миром (через сеть, камеру и другие сенсоры).

Во время обучения вы научитесь разрабатывать несложные мобильные приложения в эмуляторе Android. Узнаете, как сделать удобное с точки зрения юзабилити меню. Будете работать с внутренними системными службами в ОС Android, поставщиками контента и базами данных.

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

По окончании курса вы будете уметь:

  • применять знания об архитектуре ОС Android;
  • понимать особенности среды разработки Android Studio;
  • использовать основные паттерны разработки приложения под Android;
  • пользоваться основными возможностями и ресурсами платформы;
  • создавать Активности;
  • создавать удобное меню с точки зрения юзабилити;
  • обрабатывать события жизненного цикла приложения;
  • работать с пользовательским интерфейсом, представлениями и разметкой;
  • использовать Намерения;
  • работать с базами данных и контент-провайдерами;
  • тестировать созданные приложения для эффективной работы.

Как найти работу начинающему специалисту?

Поскольку профессия востребована, то найти хорошую работу может и новичок, если будет следовать советам:

  1. Освойте необходимые знания и навыки самостоятельно или на курсах.
  2. Начните с выполнения простых задач на Java и переходите к более сложным.
  3. Когда вы почувствуете себя уверенно, попробуйте создать несколько простых приложений.
  4. Используйте данные приложения как портфолио при устройстве на работу. Обязательно выложите их на Google Play. Также полезно выложить свои работы на GitHub.
  5. Составьте резюме, в котором опишите все ваши знания и укажите ссылки на примеры работ.
  6. Найдите вакансии Junior программиста на Андроид и попробуйте пройти собеседования. Если вам откажут, обязательно спросите, каких знаний и навыков не хватило для трудоустройства. Ликвидируйте эти пробелы и пробуйте повторно пройти собеседования.
  7. На старте карьеры вас могут не взять в крупные компании. Пробуйте устроиться на работу в небольшие команды. Так проще найти работу и получить необходимый опыт для дальнейшего роста.

Востребованность языка

Kotlin получил признание ещё до релиза версии 1.0 в феврале 2016 года. Специалисты ценят его за краткость, выразительность и безопасность. После того как Google заявил о полной поддержке этого языка для разработки Android-приложений, популярность Kotlin выросла экспоненциально. Сейчас он используется при создании практически всех новых приложений для этой ОС. Благодаря полной взаимозаменяемости с Java, его подключают и к существующим проектам, если планируется их долгосрочная поддержка. Так что Kotlin сегодня — отраслевой стандарт в Android-разработке. Он востребован, и это его главное преимущество.

Функциональные возможности Android Studio

Основное преимущество использования данной утилиты в том, что в нее включены все необходимые для работы производительные инструменты для создания эффективных, работоспособных и качественных программ. Она позволяет адаптировать утилиты под любые устройства, работающие на ОС Android, например, смартфон, планшет, смарт-часы, автомобили и ТВ. Это официальная разработка от компании Google, поэтому в ней по умолчанию предусмотрено все необходимое: эмуляторы, интеллектуальный редактор, средства анализа характеристик, отладчик и прочее.

Основные возможности инструмента:

  • Интеллектуальный редактор оснащен расширениями, которые позволяют производить анализ кода, также имеется автодополнение и рефакторинг.
  • Бета версия имеет отладчик графического процессора, что позволяет осуществлять захват потока команд OpenGL ES на смартфонах и запускать «конструктор» для анализа.
  • Наличие опции «Мгновенный запуск» — с его помощью удается довольно быстро проверять работоспособность внесенных изменений, запускать рабочие циклы коды и задавать необходимые параметры.
  • Также имеется инспектор макета, предназначенный для просмотра иерархии системных файлов программы во время ее прогона.
  • Многофункциональный и быстрый эмулятор, оснащенный магнитометром, измерителем рабочей температуры процессора девайса, виртуальным акселерометром и большим количеством других датчиков.
  • Бета версия также оснащена модулем записи тестов, он предназначен для создания контента пользовательского интерфейса за счет регистрации взаимодействия с создаваемой утилитой. Она позволяет по мере написания коды выводить их в тесты.
  • Поддержка всех без исключения андроид платформ: планшетов, смартфонов, часов, автомобилей, телевизоров и прочих разработок компании Google.
  • Анализатор АРК, который позволяет вычислять удельные доли отдельных составляющих программы в общем ее объеме.

Также стоит добавить о поддержке таких языков программирования, как С и С++. В программе есть возможность изменять системный код и производить отладку с применением низкоуровневого набора команд. Эти особенности работы позволяют использовать в утилитах составляющие интерфейса для доступа из Java.

Следующий этап — Kotlin

Kotlin максимально совместим с Java, и поэтому процесс его изучения будет для вас гораздо проще и быстрее.

Язык Kotlin считается молодым. Хотя он и существует с 2011 года, только в мае 2019 года Google объявила его приоритетным языком программирования для платформы Android. А учитывая, что именно Google занимается разработкой Android, после этого события популярность Kotlin среди разработчиков стремительно растёт. Следуя тенденциям, многие работодатели также начинают требовать знания Kotlin.

Помимо признания компанией Google, популярность Kotlin в мобильной разработке обусловлена удобством в использовании.

  • Язык обладает полной совместимостью с Java. В принципе, можно даже половину проекта написать на одном языке, а потом перейти на другой. Из-за перехода не теряется доступ к существующему коду, библиотекам и Android SDK.
  • Код на Kotlin гораздо короче и выразительнее, чем на Java. Всё, что можно написать на Java в 4–5 строчек, уместится в одну на Kotlin. Иногда разработчикам хочется ускориться и не быть такими многословными, как с Java.
  • Даже несмотря на то, что новые версии Java постоянно выходят, это не затрагивает мир Android-разработки, где всё застряло на уровне Java 6. И хотя существуют обходные пути для использования новых фич, в Kotlin новые фичи появляются чаще и не требуют от разработчика танцев с бубном.
  • Kotlin является детищем компании JetBrains, создателями Intellij Idea — IDE, лежащей в основе Android Studio. Благодаря этому Kotlin имеет отличную поддержку со стороны IDE: умные подсказки, рефакторинг кода, навигация по файлам и т. д.

С чего начать карьеру

  1. Решайте задачи по Java. Найти их можно на тематическом сайте Javarush, в квестах Java Syntax, Java Collections, Java Core и других. Работайте над задачами ежедневно, чтобы освоить язык.
  2. Переходите на более сложные проекты — разрабатывайте лабиринты, змейку, словари и публикуйте на GitHub. Так вы будете собирать портфолио и сможете показать его работодателю.
  3. Выкладывайте приложения из GitHub на Google Play. Даже если у программ не будет тысяч скачиваний, ссылки на них можно указать в резюме.
  4. Изучите вакансии и посмотрите, какие библиотеки используют в компаниях. Освойте Glide, Retrofit, Room, Fabric — с ними работают многие работодатели.
  5. Выберите потенциального работодателя и идите на собеседование как Junior. Если вас не возьмут на работу сразу, порекомендуют, что изучить и какие пробелы в знаниях и навыках заполнить.

Пример вакансии для junior-уровня

Android KTX

Android KTX — это набор расширений-обёрток для Android API в Kotlin, которые делают его более дружелюбным. Главная цель этой библиотеки — сделать Android API более удобным в использовании. Она содержит множество методов и отличных новых функций Kotlin, таких как именованные параметры, лямбда-функции и параметры по умолчанию.

Android KTX отличается наличием множества функций-расширений, и единственный способ узнать о них — погрузиться в код библиотеки, чтобы увидеть, каким образом функции улучшили Android API. Android KTX упрощает способ использования Android API, и по этой причине эта библиотека должна стать основой каждого Android приложения, написанного на Kotlin.

1. Настройка проекта

Прежде чем приступать к изучению Android Studio, вам сначала нужно ее 

Обратите внимание, что вам необходимо установить JDK 6 или более поздней версии. Если вы работаете в Windows, запустите файл .exe и следуйте инструкциям мастера установки

Если вы используете OS X, смонтируйте образ диска, дважды щелкнув его и перетащите Android Studio в папку Application.

Если вы успешно выполнили вышеуказанные шаги, необходимо правильно настроить среду разработки. Теперь вы готовы создать свое первое приложение для Android с помощью Android Studio. Когда вы впервые запускаете Android Studio, вам должен быть представлен экран приветствия, предлагающий вам несколько вариантов для старта.

В этом уроке мы собираемся выбрать вариант New Project. Однако вы можете выбрать Import Project, если вы хотите импортировать проект, например, из Eclipse в Android Studio. Android Studio преобразует проект Eclipse в проект Android Studio, добавив для вас необходимые файлы конфигурации.

Если вы выберете Open Project из списка параметров, вы можете открывать проекты, созданные с помощью Android Studio или IntelliJ IDEA. Выбрав Check out from Version Control, вы можете развернуть копию проекта, который находится под системой управлением версиями. Это отличный способ быстро ускорить работу с существующим проектом.

Чтобы начать работу, выберите New Project в списке параметров. Это покажет вам список параметров для настройки вашего нового проекта. В этом уроке мы собираемся создать простое приложение, чтобы показать вам некоторые из самых важных функций Android Studio. Я уверен, что вы согласны с тем, что нет лучшего названия для нашего проекта, чем HelloWorld.

Как вы можете видеть на скриншоте выше, я назвал свое приложение HelloWorld и установил имя модуля HelloWorld. Если вы не знакомы с IntelliJ IDEA, вам может быть интересно, что такое модуль. Модуль представляет собой дискретную единицу функциональности, которая может быть скомпилирована, запущена, протестирована и отлажена независимо. Модули содержат исходный код, скрипты сборки и все остальное, необходимое для их специфичных задачи.

При создании нового проекта вы также можете указать имя пакета проекта. По умолчанию Android Studio устанавливает последний элемент имени пакета проекта в имя модуля, но вы можете изменить его на все, что захотите.

Другими параметрами являются местоположение проекта на вашем компьютере, минимальный и целевой SDK, SDK, с которым будет скомпилирован ваш проект, и тема проекта. Вы также можете сообщить Android Studio о создании класса и специальной иконки запуска а так-же поддержку проектов GridLayout, Fragments, Navigation Drawer или Action Bar.

Мы не будем создавать пользовательских иконок для этого приложения, вы можете снять галочку с надписью Create custom launch icon. Нажмите Next, чтобы продолжить настройку своего проекта.

Поскольку мы отметили флажок Create activity на предыдущем шаге, вам предлагается настроить класс , который будет создан для вас Android Studio.

Поскольку мы начнем с пустого класса , вы можете нажать Next, чтобы перейти к следующему этапу процесса настройки, в котором вас попросят указать имя класса , основной лэйаут и лэйаут фрагмента. Вы также можете установить тип навигации, который мы оставим в None для этого проекта. Посмотрите следующий скриншот, чтобы увидеть, как выглядят настройки.

После нажатия кнопки Finish вам будет представлен пользовательский интерфейс Android Studio с проводником проекта слева и рабочее пространство справа. С вашим проектом, настроенным в Android Studio, пришло время изучить некоторые из ключевых особенностей Android Studio.

Но не тут то было…

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

И если ты все ещё думаешь, что с телефоном можно долго просидеть в кресле и работать, то ты ошибаешься, ну, конечно, если у тебя не супер накаченная шея. Ведь через пару часов за планшетом она начинает затекать. А если работать по полной, то лучше рабочего места чем кровать тебе не найти, но, это до 30 лет, а после, если ты не двигаешься долгое время, то даже лёжа спина начинает ныть.

Так что стол и хорошее кресло это необходимость. А если всё и так происходит сидя за столом в кресле, то зачем тогда планшет.

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

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

Так что для полноценной работы все же нужно хорошее рабочее место с ПК.

А для «коротких забегов» можно использовать мой набор инструментов.

Например, если ты едешь на работу час или два в общественном транспорте, то это неплохой вариант. Но кого я обманываю. Работать по дороге на работу тяжко. Да и какая дорога на работу в пандемию. Хотя иногда может выручить.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector