9 мобильных приложений для изучения программирования
Содержание:
- Coursera
- Разработка игр под Android. Дж. Ди Марцио
- Программирование для Android (Head First). Дэвид и Дон Гриффитс
- Необходимые инструменты для создания приложения на Android
- Благодарности и ссылки
- Перспективы мобильной разработки в цифрах
- Loftschool
- Сколько зарабатывают Android разработчики?
- XML View и Dynamic Layout Previews
- Полезные материалы для чтения и самоподготовки
- Как стать мобильным разработчиком за семь шагов
- RxJava
- Как новичку выбрать платформу для мобильной разработки
- Но не тут то было…
- Организация поведения объекта с интерфейсами
- Начало
- Ничего страшного, если вам не сделали оффер.
- Dart
- Otus
- Basic
Coursera
Курс создан для тех, кто хочет начать разрабатывать Android — приложения. Соответственно, задачи курса:
- Познакомить с платформой Android.
- Познакомить с интегрированной средой разработки — Android Studio.
- Разобраться в структуре проекта.
- В общем изучить компоненты Android приложения.
- Изучить UI составляющую приложений — Activity, Fragment, их жизненный цикл.
- Изучить элементы интерфейса, предоставляемые Android SDK.
- Разобраться с хранением простых строковых данных в файлах Preferences.
Буквально за 2-3 дня вы разберетесь в основах андроид и создадите собственный проект.
Разработка игр под Android. Дж. Ди Марцио
Книга, знакомящая с процессом создания мобильных игр на основе Android Studio IDE. Изучение ключевых инструментов в Android Studio поможет проанализировать этапы в разработке игр.
Обучение начнётся с установки Android Studio, а продолжится с изучением IDE для создания нового проекта и настройки GitHud в качестве VCS. После этого вы будете подготовлены к решению вопросов в сфере разработки игр, которым посвящена следующие главы в книге.
Заканчивается книга тремя главами – интерактивность приложений. Вы научитесь читать пользовательский ввод, реагируя на него с помощью игрового движения.
Программирование для Android (Head First). Дэвид и Дон Гриффитс
Если у вас появилась идея для создания нового приложения, информация в книге послужит отправной точкой, помогающей построить работающую систему. Вы изучите, как создаётся структура приложения, разрабатываются возможности интерфейса, создаётся база данных – всё то, что помогает приложению работать на смартфонах и планшетах различной комплектации.
По ощущениям похоже на то, что опытный разработчик Android сидит прямо перед вами. Всё, что от вас требуется – несколько Java секретов, чтобы начать качественную работу. Книга содержит визуальный материал, помогающий детально изучить все тонкости работы.
Необходимые инструменты для создания приложения на Android
Прежде чем выяснить, как сделать приложение для андроид, необходимо ознакомиться с перечнем необходимых для написания инструментов. На начальном этапе необходимо установить на свой компьютер программу Android Studio – это официальная платформа для разработки программ и приложений, адаптированных под операционную систему Android.
Программа Android Studio для создания приложений на смартфоны
Дополнительно на ПК должна быть установлена утилита Android SDK, которая представляет собой среду программирования, состоящую из документации, скриптов, библиотеки и исполняемых файлов. Если ранее программа установлена не была, при распаковке Android Studio это будет исправлено.
Важно! Андроид СДК компилирует исходный код со всеми данными в расширении .apk. В генерируемом файле содержится все необходимое для установки программы на устройство на ОС Android
Дополнительно для проверки работоспособности приложения нужно установить и эмулятор андроид. С его помощью можно тестировать продукт по мере его создания. Он поставляется в комплекте с Android Studio.
Как только все необходимые программы и компоненты будут установлены на персональный компьютер, можно начинать программировать.
Благодарности и ссылки
Хочется выразить благодарность:
Автору оригинального проекта: Вадиму Лопатину. Без него не было бы этой истории. Была бы другая, но этой не было бы.
Всем контрибьюторам в исходный код CR. Без них не было бы проекта в том виде, в котором он есть сейчас.
Особенно отмечу авторов доработок оригинальной версии на форуме 4pda: virxkane, S-trace, pkbo. Спасибо вам за вклад в развитие движка, за адаптацию изменений koreader (не путать с KR).
Проекту koreader, за их вклад в движок crengine. Хоть они всё делают и для себя, но это не помешало нам «всё их» применить к себе.
Разработчикам читалок. Это дивный новым мир, в котором со всеми можно делиться идеями и кодом. Очень помогли лидеры проектов Alreader (Alan, спасибо), PocketBookReader (ребята, ваш файл «манифеста» один из лучших), Librera (foobnix, привет).
Проекту FBReader. Хоть мы и не общались напрямую, но кое-какой код был очень кстати, например, отображение словаря Lingvo.
Проекту icons8, который не пожадничал и поделился библиотекой иконок.
Всем, кто пользуется KR и не стесняется писать о возникающих проблемах, помогает тестировать приложение и готовить материалы для FAQ (мир полон неравнодушных людей)
Особенно хочу отметить самых активных пользователей сообщества: Sergey_TSA, SvyatKV.
Виталику (профиль на habr.ru, профиль на 4pda) — человеку, который помог в нужный момент сделать следующий шаг, активно включившись в проект: перенял на себя часть работы с аудиторией на форуме 4pda и за его пределами, занимается публикацией (первичной и обновлений) KR в PlayMarket (тестирует KR, готовит описания, отвечает на отзывы и т.п.), создал сайт KR и поддерживает его в рабочем состоянии (он в плане frontend-разработки подмастерье, так что воспринимайте сайт как его собственный pet-проект), организовал систему доната через Яндекс.Деньги (на сайте опять же), помог мне разобрать, привести в порядок и поддерживать в хорошем состоянии backlog, вычитывал и правил эту статью, а также делает ещё много мелкой, но важной работы, что очень важно для меня и проекта в целом, но обычному пользователю может быть незаметно.
Кошке Маше и коту Коле, с которыми мы провели множество интересных вечеров программирования.
И, наконец, главное. Моей жене — за терпение к многочисленным увлечениям 😉
Перспективы мобильной разработки в цифрах
Мобильных разработчиков нужно всё больше. По данным международной системы аналитики , в апреле 2020 года доля мобильного трафика составляла 57%, хотя еще в 2012 году не превышала 14%. Маркетплейсы тоже растут: в первом квартале 2020 года Google Play предлагал 2,5 млн приложений, AppStore — 1,8 млн (по данным Statista.com).
Количество приложений в разных маркетплейсах. Источник
Вероятно, всё это надолго. Уже появляются док-станции для смартфонов: ноутбук без процессора, превращающий смартфон в полноценный компьютер или компактный настольный девайс, к которому можно подключить смартфон, монитор и клавиатуру с мышью. Два таких проекта — Mirabook и NexDock — получили краудфандинговые инвестиции, а Samsung запустил свою линейку DEX Station.
Loftschool
Курс по андроид-разработке для начинающих. Программа включает в себя:
- Прокачку знаний Java,
- Android SDK,
- Работу с Rest API,
- Использование элементов Material Design,
- Среда разработки Android Studio,
- Базовую работу с Gradle,
- Профилирование и отладка Android Debug Bridge,
- Git & Github.
Когда вы сделаете своё первое приложение такого уровня — сможете считать себя состоявшимся разработчиком. Потому что для этого вы освоите синхронные и асинхронные запросы, многопоточность, работу с БД, подключение библиотек. Такое приложение уже не стыдно включить в портфолио и показать будущему работодателю.
По окончании обучения вы получите сертификат. LoftSchool знают и ценят работодатели, поэтому сертификат станет вашим дополнительным плюсом при трудоустройстве в IT-компанию.
Он будет доступен в электронном виде в личном кабинете – вы легко сможете добавить ссылку на сертификат в резюме и подтвердить свой уровень подготовки.
Сколько зарабатывают Android разработчики?
Новичок (Junior) может рассчитывать на зарплату около 50 тыс. руб. Специалисты с опытом работы от 2 лет (Middle) в среднем зарабатывают от 50 до 100 тыс. руб. в регионах и от 90 до 160 тыс. руб. в Москве. Специалисты с большим опытом (Senior) могут получать зарплату больше 200-300 тыс. руб. в месяц.
На рынке встречаются вакансии, в которых предлагают больше 400 тыс. руб. в месяц. Например, такую зарплату может получать Android Team Lead, то есть человек, который управляет командой разработчиков.
Если говорить о мобильных разработчиках-фрилансерах, то стоимость одного часа разработки на Android у частных специалистов может доходить до 1500-2000 руб. Средней ставкой можно назвать около 1000 руб. за час работы хорошего специалиста.
XML View и Dynamic Layout Previews
Создание макета, с которым пользователи могут взаимодействовать, — важная часть процесса. В Android Studio это можно сделать в редакторе макета. Откройте content_main.xml из res/layout. Во вкладке Design вы можете переносить элементы интерфейса (кнопки, текстовые поля).
Справа от Design есть вкладка Text, которая позволяет редактировать XML непосредственно в макете.
Перед созданием внешнего вида, необходимо определить некоторые значения. Откройте strings.xml во вкладке res/values и добавьте следующее:
<string name="fortune_description">Suggest the question, which you can answer “yes” or “no”, then click on the magic ball.</string>
strings.xml содержит все строки, которые появляются в приложении. Разделение этих строк в отдельные файлы упрощает интернационализацию, т.к. нужен только файл строк для каждого языка, который требуется в приложении. Даже если вы не собираетесь переводить приложение на другие языки, использовать файл строк всегда рекомендуется.
Откройте dimens.xml в res/values и добавьте следующее:
<dimen name="description_text_size">15sp</dimen><dimen name="fortune_text_size">20sp</dimen>
dimens.xml содержит размерные величины, предельные интервалы для макетов, размера текста и пр. Рекомендуется сохранять эти данные в файле, чтобы их можно было использовать для создания макетов в дальнейшем.
Вернитесь в content_main.xml и замените все содержимое файла следующим кодом:
<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior"tools:showIn="@layout/activity_main"tools:context=".MainActivity"> <TextViewandroid:id="@+id/descriptionText"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="@string/fortune_description"android:gravity="center"android:textSize="@dimen/description_text_size"/> <ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/fortunateImage"android:src="@drawable/img_crystal"android:layout_centerHorizontal="true"android:layout_below="@id/descriptionText"android:layout_marginTop="10dp"/> <TextViewandroid:id="@+id/fortuneText"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_below="@id/fortunateImage"android:gravity="center"android:layout_marginTop="20dp"android:textSize="@dimen/fortune_text_size"android:textStyle="bold"android:textColor="@android:color/holo_red_dark"/> <Buttonandroid:id="@+id/fortuneButton"android:layout_width="match_parent"android:layout_height="50dp"android:layout_below="@id/fortuneText"android:text="What's my fortune?"android:layout_centerHorizontal="true"android:layout_marginTop="10dp"/> </RelativeLayout>
Этот довольно большой код создает макет приложения под названием FortuneBall. На верхнем уровне вы добавили RelativeLayout (относительная разметка определяет позицию дочерних компонентов относительно родительского компонента). RelativeLayout можно растянуть, подогнать под размер родительского компонента.
В относительной разметке добавляются две части текста, изображение и кнопка. Все эти детали будут видны в порядке добавления. Их содержимое можно будет прочитать в strings.xml (текст) и в drawable (изображения).
Обновляя content_main.xml, обратите внимание на окно Preview обновляет UI:
Примечание: если не видно окно предпросмотра, во вкладке Text кликните на кнопку Preview на панели редактора разметки справа.
Создайте и запустите.
И вот вы создали макет приложения. Но на данном этапе это только красивое изображение — клик по кнопке ни к чему не приведет.
Полезные материалы для чтения и самоподготовки
Head First. Программирование для Android. Хотя эта книга немного устарела, она объясняет ключевые концепции очень интересным способом. Если вам понравился стиль Head First, вам будет приятно читать эту книгу.
Филлипс Б., Стюарт К., Марсикано К.Android. Программирование для профессионалов. 3-е издание. Действительно неплохая книга, которую можно смело рекомендовать начинающим разработчикам. В ней они смогут найти множество приёмов разработки приложений для Android, самостоятельный путь к которым довольно долог. Книга начинается с «Hello, world» и через теорию, упражнения и написание небольших приложений, обучает основному стеку технологий для создания Android-приложения. Требует среднего знания Java.
Исакова С., Жемеров Д. Kotlin в действии. Книга от создателей языка. Очень хорошо написана, советую.
Нуркевич Т., Кристенсен Б. Реактивное программирование с применением RxJava. Разработка асинхронных событийно-ориентированных приложений. Книга, которая на примере RxJava поможет понять вам, что такое реактивное программирование. Требует неплохого знания Java (по крайней мере, вы должны понимать, что такое обобщённые типы и лямбда-выражения) и предполагает последовательное чтение, так как материал подаётся шаг за шагом. Внимательный читатель получит полное представление об RxJava.
Напоследок — ещё пара статей на английском для тех, кто хочет разработать приложение на Android: «10 вещей, которые узнают новые Android-разработчики» и «12 методов, который должен знать каждый начинающий Android-разработчик».
В этой статье я дал лишь базовые, минимально необходимые сведения, чтобы начать разработку андроид приложений с нуля. Чтобы стать полноценным, квалифицированным Android-разработчиком, эффективней всего будет пройти полноценную учебную программу, например, на факультете Android-разработки GeekUniversity.
Другие полезные статьи для начинающих Android-разработчиков:
- 9 практических советов для начинающего Android-разработчика
- Типичные ошибки начинающего Android-разработчика
Как стать мобильным разработчиком за семь шагов
Вот дорожная карта: на входе — новичок, на выходе — деньги, слава и крутые задачи.
- Освоить Kotlin/Swift: начать писать код, понять простые алгоритмы и функции, разобраться с терминами, закодить несколько простых программок.
- Изучить основы Android SDK / Apple Development Guidelines и написать маленькое простое приложение.
- Сверстать пару прототипов в Figma, Adobe XD или Sketch.
- Опубликовать приложение в Google Play / AppStore.
- Разобраться с системой управления версиями Git и собрать в нём портфолио.
- Написать резюме, показать его знакомым IT-рекрутерам и практикующим разработчикам, внести правки. Рассылать, проходить собеседования, работать над ошибками.
- Profit!
Конечно, всему этому можно учиться самостоятельно — по книгам, видео и мануалам. Но это трудный и долгий путь, особенно для новичков в программировании. Гораздо эффективнее стартовать с опытными наставниками и постоянной обратной связью.
На курсе «Мобильный разработчик» от Skillbox студенты создают полноценные проекты в атмосфере реальной студии, изучают весь необходимый набор технологий и общаются с менторами. Первые полгода можно учиться бесплатно, а деньги за курс отдавать уже с первой зарплаты.
RxJava
RxJava — это Java-реализация ReactiveX API, которая позволяет связывать асинхронные задачи и события в наблюдаемые (англ. observable) последовательности. Пользователи рассчитывают на то, что современные приложения способны отображать данные в режиме реального времени. Другими словами, они хотят, чтобы информация обновлялась автоматически. Именно в этом аспекте вам и пригодится RxJava.
При получении данных в реальном времени становится чрезвычайно сложно объединить несколько запросов API, переключать потоки и обрабатывать ошибки. Именно здесь RxJava отменно проявляет себя, и именно по этой причине мы начали пользоваться этой библиотекой. Я согласен, что RxJava может показаться запутанной и трудной для изучения, но эта библиотека однозначно заслуживает вашего времени. Даже после перехода на Kotlin, мы продолжили использовать RxJava из-за её преимуществ. В сочетании с Kotlin API она становится ещё лучше благодаря дополнительным функциям-расширениям.
Попробуйте сделать что-то похожее на приведённый выше фрагмент с помощью простой Java. Ну же.
Как новичку выбрать платформу для мобильной разработки
Минимальная база для старта в профессии — знание языка программирования и среды разработки. В iOS лучше начать со Swift и Xcode или AppCode, а в Android — с Kotlin и Android Studio. Если пишете в одиночку, желательно хоть немного разбираться в стандартах дизайна и разработки под эти платформы. Но в любом случае придётся глубоко зарываться в официальные руководства.
Вот базовый набор инструментов для старта в Android-разработке, который можно установить для Windows, Linux или MacOS:
- Среда разработки Android Studio (уже включает Kotlin). Инструмент бесплатно загружается с developer.android.com.
- Java Runtime Environment (Kotlin основан на Java, поэтому использует её компилятор). Скачать можно с java.com.
Окно среды разработки Android Studio
Набор для старта в iOS-разработке:
- Компьютер Macintosh. На других платформах не получится полноценно делать приложения под iOS.
- Среда разработки: Xcode или AppCode. Скачать можно с developer.apple.com и jetbrains.com.
Если нет Мака, но попробовать очень хочется, есть три простых варианта:
- GNU/Linux с установленным Swift (есть официальные пакеты под Ubuntu, CentOS и Amazon Linux; скачать можно на официальном сайте языка), текстовый редактор вроде mousepad или gedit, компилятор clang и набор инструментов для работы с Unicode — libicu-dev.
- Windows с неофициальным пакетом Swift for Windows и текстовым редактором вроде Notepad++ или Brackets. Пакет выложен на GitHub.
- Готовая сборка MacOS для виртуальной машины с торрентов (например, под Virtualbox).
Но не тут то было…
В процессе настройки инструментов, тестирования приложений и остальной работы я понял, что это банально, неудобно (все же за столом, с чашкой кофе это удобнее, чем сидя на диване, с постоянно опущенной головой)
И если ты все ещё думаешь, что с телефоном можно долго просидеть в кресле и работать, то ты ошибаешься, ну, конечно, если у тебя не супер накаченная шея. Ведь через пару часов за планшетом она начинает затекать. А если работать по полной, то лучше рабочего места чем кровать тебе не найти, но, это до 30 лет, а после, если ты не двигаешься долгое время, то даже лёжа спина начинает ныть.
Так что стол и хорошее кресло это необходимость. А если всё и так происходит сидя за столом в кресле, то зачем тогда планшет.
К тому же я понял, почему на андроиде так сложно работать. Чувствуешь себя как-то не уверенно, и если у тебя проблема со средой разработки, то никто тебе не поможет, а самому лезть в это без знаний достаточно опасно.
Вроде все просто, но не почувствовав все на себе я, честно сказать, и не задумывался о таких нюансах.
Так что для полноценной работы все же нужно хорошее рабочее место с ПК.
А для «коротких забегов» можно использовать мой набор инструментов.
Например, если ты едешь на работу час или два в общественном транспорте, то это неплохой вариант. Но кого я обманываю. Работать по дороге на работу тяжко. Да и какая дорога на работу в пандемию. Хотя иногда может выручить.
Организация поведения объекта с интерфейсами
В Java
вы можете организовать поведение объектов в так называемых интерфейсах. Хотя
класс определяет объект, интерфейс определяет некоторое поведение, которое
может быть применено к объекту. Например,
мы можем определить интерфейс Swimmer, который предоставляет набор методов,
которые являются общими для всех объектов, которые могут плавать, будь то рыба,
выдры или погружные андроиды. Интерфейс
Swimmer может указывать четыре метода: startSwimming(), stopSwimming(), dive() и surface().
Затем класс, подобный Fish, может реализовать интерфейс
Swimmer (с использованием ключевого слова реализует) и обеспечить реализацию
поведения плавания:
Начало
Поехали делать 2 словаря.
Я нашёл в интернете исходные коды CoolReader — они совершенно спокойно доступны на github. Автор оригинального CR проект к тому времени уже почти забросил, а потому CR обновлялся крайне редко. Попытки скомпилировать CR и запустить (ещё под Eclipse) успехом не увенчались. Это сподвигло на поиски решения, в результате чего на форуме 4pda была найдена доработанная версия от другого энтузиаста, которая уже собиралась под Android Studio. Благодаря ему всё получилось — проект собирается и запускается.
Первая доработка:
- Добавлена настройка «Словарь 2».
- Добавлены действия:
- Перевести в словаре 1;
- Перевести в словаре 2;
- Разово переключить на словарь 2, после чего переводить всё снова в словаре 1.
Где-то в этот же момент на форуме попросили сделать историю поиска в книге по тексту, чтобы можно было быстро повторить ранее выполненный поисковый запрос. Это был более сложный вызов, так как список в Андроиде выводится несколько сложнее. Получилось! Теперь в поиске есть список с историей выполненных поисковых запросов.
Ничего страшного, если вам не сделали оффер.
Просите фидбэк или в идеале поговорите немного с тем, кто вас собеседовал. Это поможет вам лучше подготовиться к следующему собеседованию. Отказ даёт вам не меньше опыта, чем успешно пройденное собеседование. Часто в ту же компанию можно будет пройти собеседование повторно через некоторое время.
И напоследок. Изучить Android-разработку можно и самостоятельно, но если вы хотите как можно быстрее добиться результата — пройдите все курсы и сдайте все домашние задания на факультете Android-разработки. После этого у вас будет и портфолио из нескольких приложений, и опыт разработки (в том числе и командной), и все необходимые знания. Именно таких людей и ищут все крупные компании на позицию Junior-разработчика.
Другие полезные статьи для начинающих Android-разработчиков:
- Как создать приложение для Android самому
- Типичные ошибки начинающего Android-разработчика
Dart
Flutter — относительно новая технология от Google, полноценный SDK, выпущенный в 2018 году.
По ряду параметров считается более удачным решением, чем React Native. Позволяет писать кроссплатформенные приложения, поэтому эффективен в разработке приложений для Android с общей базой кода на языке Dart.
Dart позиционируется как альтернатива JavaScript. Он компилируется в бинарный код, за счёт чего достигается высокая скорость выполнения операций. Вместо XML Dart использует так называемые деревья макетов.
Основные преимущества Dart:
- легко освоить, зная Java;
- высокая производительность программ;
- Hot Reload во Flutter — быстрая перезагрузка с сохранением состояния.
Otus
Otus предоставляет базовый курс для разработчиков. Обучение на Android-разработчика на Kotlin, подготовка качественного портфолио. Курс для программистов с опытом на любом ООП языке.
За время обучения вы:
- научитесь профессионально создавать приложения под Android;
- подготовитесь к собеседованию;
- разработаете портфолио с использованием современных библиотек и фреймворков.
На курсе много продвинутых тем. Например: android architecture component, тестирование мобильных приложений, RxJava, Dagger 2, многопоточность в Android, Koin, Material Design и т.д.
Для обучения требуются дополнительные навыки. Обязательно:
опыт программирования на любом объектно-ориентированном языке программирования.
Будет плюсом:
- знакомство с языком Java;
- знание шаблонов проектирования;
- умение писать чистый код;
- навыки использования git.
Basic
Да-да, речь идёт о старом-добром Бейсике, а точнее, о довольно простом и мощном инструменте для разработки Android-приложений — Basic4Android.
Сам по себе язык Basic4Android очень похож на популярный Visual Basic. Разрабатывая приложения на нём, вы сможете использовать много дополнительных библиотек с разным функционалом, а для выполнения программ специальных runtime-средств не потребуется.
Basic4Android имеет мощный визуальный дизайнер, поддерживающий разные ориентации и размеры экранов. Для отладки приложений подключают эмулятор Android либо реальное устройство (используется USB либо локальная сеть). Язык совместим со всеми версиями Android.
Тут следует добавить, что при выборе языка программирования следует учитывать степень сложности стоящих перед вами задач. Например, для более профессиональных и сложных приложений лучше выбирать более мощный и сложный язык. Но если речь идёт о реализации простых продуктов, то Basic4Android подойдёт вполне. К примеру, создав простую программу со схожим функционалом и на С#, и Basic4Android, вы потратите меньше времени, используя Basic. Как-то так.
По материалам статей:
— «Top Programming Languages for Android App Development»;
— «10 языков для Android-разработчика».