Продолжим разговор об Андроид-разработке. Начало здесь.
Какие навыки и знания потребуются
Для того, чтобы создать уникальное приложение под Android, придется разбираться в некоторых областях. Это поможет избежать трудностей при разработке и тестинге.
Для успешного программирования под Android требуется разбираться в:
- языках программирования;
- платформе Android Studio;
- GIT;
- основной массе библиотек, которые помогут быстро реализовывать некоторые функции (Detfofit – получение информации из интернета, а также Glide – загрузка изображений);
- архитектурных элементах Android;
- написании приложений в архитектурах MVP, а также MVVM.
Разработчику пригодятся познания в английском языке, а также усидчивость и целеустремленность. Проекты, особенно крупные, редко с первого раза работают «как надо». Поэтому стоит подготовиться к основательному тестингу получающихся утилит.
Хороший разраб также должен разбираться в графике и их редакторах. Особо актуально для тех, кто планирует создать собственную игру на Андроиде.
Если позволяет бюджет и время, стоит привлечь к разработке целую команду. Такие проекты получаются более качественными и прибыльными. Но на первых порах можно справляться своими силами.
На чем писать
Перед непосредственным коддингом необходимо выбрать язык, на котором будет писаться кодификация приложения под Android. Это – ключевой момент во всей работе. От него зависит функционал, а также движки, которые необходимы при реализации проекта.
Существуют разные способы разработки – кроссплатформенный подход и нативный. Первый является универсальным, вторым – под конкретную операционную систему. У каждого метода имеются свои собственные языки, а также особенности.
Кроссплатформенность в цене
При программировании приложений для телефона можно использовать кроссплатформенную разработку. Она позволяет:
- заучивать самые распространенные языки программирования;
- оснащать утилиты мощным функционалом;
- в отдельных случаях – получать на выходе понятный даже новичкам программный код;
- с легкостью переносить софт из одной платформы на другую.
Этот вариант подходит для утилит, которые планируется запускать не только на Android, но и на других устройствах.
Java
Первый популярный вариант – это Java. Он поддерживается Android Studio, но относится к кроссплатформенным. Связано это с тем, что на Джаве можно создавать контент для совершенно разных устройств.
К основным преимуществам языка относят:
- наличие большого количества туториалов и уроков, а также документации (на русском языке);
- хорошее дружелюбное комьюнити;
- заточка Android Studio под Java, что обеспечивает качественную и функциональную разработку;
- понятный синтаксис;
- наличие библиотек и шаблонов, которые значительно упростят коддинг.
Зная Java, разработчик сможет быстро вникнуть в кроссплатформенный процесс создания утилит.
Python
Еще один универсальный язык программирования. На практике встречается реже Джавы. В основном используется новичками.
Python для Android – это:
- функциональность;
- простой и понятный синтаксис;
- быстрая работа приложений;
- наличие специальных библиотек для разработки под Android – BeeWare и Kivy.
Подойдет такой вариант тем, кто не хочет учить новый язык, но уже знаком с Python.
СИ-семейство
СИ-семейство – языки, которые позволяют программировать крупные проекты. Поддерживают работу с 3D, а также имеют множество библиотек с мощным функционалом.
C++ пользуется немалым спросом у современных разработчиков, но новичкам освоиться в нем бывает проблематично. При выборе разработки приложений под Андроид таким образом, нужно понимать, что часть кода все равно будет написана на Java.
JavaScript
Сделать софт на JavaScript – хорошее решение, если планируется веб-утилита. JS – это скриптовый язык. На нем пишут flash-игры, а также разнообразный контент для Windows. Работать с ним просто и удобно.
JS выделяется следующими моментами:
- более быстрая сборка, чем при использовании Android Studio;
- наличие собственного flexbox для получения качественного UI;
- простой процесс передачи информации по интернету посредством API.
Сгодится для небольших игрушек, а также для «офисных» программ. Крупные проекты развлекательного характера рекомендуется программировать под Android на других языках.
C#
Отдельно в кроссплатформенной разработке нужно выделить C#. Он принадлежит к СИ-семейству, но сильно выделяется. Это – отличный вариант для тех, кто хочет писать на Android качественное программное обеспечение.
C# — это улучшенный Java, обладающий высоким уровнем безопасности, надежностью и мощным функционалом. Единственный недостаток – это то, что для успешного коддинга программеру сначала предстоит освоиться в Java.
Преимущества:
- функциональность;
- быстродействие;
- понятный исходный код;
- поддержка Unity 3D, при помощи которого удастся создавать качественные игры под Android.
Хотя коддинг на C# пока не слишком популярен, он все равно используется программистами.
Нативная разработка
Сделать программу под Android можно и на иных кроссплатформенных языках. Но есть и иной выход из ситуации – нативная разработка.
К таковой можно отнести язык Kotlin. В сочетании с Java становится предельно функциональным и удобным. При желании можно с легкостью перенести Java-код в Kotlin и сделать программный код более понятным «среднестатистическому пользователю».
Преимущества Kotlin:
- востребованность среди разработчиков;
- простой и понятный синтаксис – освоить его удастся быстрее, чем Джаву;
- поддержка компиляции в JMV;
- совместимость с Android Studio.
Единственный недостаток такого варианта – это обязательное знание Java. Без него разобраться с Kotlin будет весьма проблематично.
Выбор платформы
Любое ПО разрабатывается в специальной среде. Многие программеры отдают предпочтение созданию приложений через движки или специальные онлайн/оффлайн платформы, фреймворки. Они позволяют коддить значительно быстрее, чем действовать «с нуля».
Appmakestore
Это – онлайн сервис, который предусматривает готовые шаблоны на самые разные тематики. Предусматривает настройку дизайна, а также меню и поведения пользователя на разных страницах без коддинга. Отличный выбор для тех, кому хочется просто посмотреть, что представляет собой создание утилит под Android.
При применении этого сервиса получится:
- программа для Android;
- приложение под iOS;
- утилита для FaceBook;
- мобильный сайт на HTML5.
Если программер знает JS и HTML5, он сможет значительно расширить функционал программного обеспечения. Но это – платный сервис.
AppyBuilder
Надежный сервис для создания софта под Android. Предусматривает такие преимущества:
- более сотни компонентов, которые можно перетаскивать;
- наличие встроенного конструктора логики поведения;
- переменные, поддерживающие работу в визуальном режиме;
- отсутствие ограничений по дизайну.
Для того, чтобы создавать уникальные проекты через этот сервис, нужно сначала научиться работать с графикой.
AppsGeyser
Бесплатный и надежный сервис, позволяющий разрабатывать собственные простые утилиты под Android. Поддерживается пошаговый режим. Для получения результата достаточно запомнить предлагаемые поля.
Итог – функциональный контент со стандартным дизайном. Неплохой выбор для новичков и тестингов в бизнес-проектах.
iBuildApp
Больше подходит для компаний, чем для обычных разрабов-одиночек. Работа здесь основана на шаблонах. iBuildApp позволяет получать на выходе ПО для Android и iOS. Поддерживает огромное количество виджетов для бизнеса.
За использование придется платить от 3 700 рублей в месяц. Дизайны имеющихся шаблонов устаревает. Это – хорошая площадка для новичков.
Corona SDK
Это – кроссплатформенный надежный движок, который подойдет для создания софта под iOS и Android. Обладает рядом сильных сторон:
- поддержка 2D графики;
- создание сложных функций через API;
- базирование на LUA;
- возможность быстро монетизировать утилиту при помощи Corona Ads;
- простой процесс разработки;
- наличие сервисов и фитч, при помощи которых удается создавать уникальное ПО.
На Corona SDK получаются качественные и быстрые игры. Но в случае с 3D-графикой придется выбрать другой движок.
Unreal Engine
Unreal Engine – популярная платформа для разработки игр кроссплатформенного характера. Имеет как бесплатную версию, так и платную. В основе UE4 заложен C++. Это дает возможность программеру писать утилиты как для мобильных устройств, так и для компьютеров.
Выделяется:
- наличием разных версий на усмотрение разраба;
- базой на C++;
- собственными узкоспециализированными редакторами;
- хорошим взаимодействием всех заложенных подсистем;
- отличной визуализацией;
- функциональность.;
- ультрасовременными шейдерами.
Справиться с этим движком будет проблематично только начинающим. Если человек уже знаком с СИ-семейством – процесс пройдет значительно быстрее.
Unity
Unity – один из лучших кроссплатформенных движков. Позволяет писать уникальные игры – от 2D до 3D. Охват – 24 платформы: от мобильных и VR до веб и консолей.
Выделяется:
- поддержкой C#, JS и Boo (диалекта Python);
- бесплатным распространением;
- простым Drag&Drop интерфейсом;
- элементарной настройкой.
Весь проект здесь будет поделен на сцены – уровни. Они представляют собой отдельные файлы с игровыми мирами, объектами, настройками и иными элементами.
LibGDX
Представлен кроссплатформенным фреймворком, написанным на Java. Функционирует с OpenGL. Предусматривает поддержку нескольких платформ для создания игровых приложений.
У LibGDX отличное дружелюбное комьюнити, а также масса документации на разных языках. Но на практике этот фреймворк встречается не слишком часто. Его вытеснили более популярные кроссплатформенные движки.
Инструкции по разработке
Безопаснее всего создавать ПО при помощи лицензионных движков. И размещать контент официально на мобильных платформах. Чтобы не запутаться в процессе, рекомендуется придерживаться следующего алгоритма:
- Продумать идею будущего приложения под Android. Если это игра – выбрать ее жанр.
- Поработать над графикой и дизайном – тем, как будет выглядеть утилита.
- Определиться с языком, фреймворками, сервисами и движками. От этого зависит качество всего проекта.
- При необходимости – посмотреть в режиме онлайн уроки и туториалы по спорным вопросам реализации приложения.
- Если речь идет о создании игры – придумать баланс, а также физику и механику. О сюжете тоже нельзя забывать.
- Перед выбором жанра и концепции ПО рекомендуется изучить потребности и желания целевой аудитории. Среди мобильных приложений особой популярностью стали пользоваться аркады, головоломки, паззлы и «офисные» программы.
- Написать код.
- Создать графику и анимацию.
- Осуществить тестирование. Его можно сделать самостоятельно, а можно открыть бета-тестинг. В этом случае контент проверит потенциальная целевая аудитория. Затягивать с релизом не нужно – мелкие ошибки многие исправляют после выпуска софта.
- Разместить ПО на площадке Google Play или в любом другом магазине приложений.
Создание программ для Android при правильной подготовке – не самое трудное дело. Придерживаясь предложенного алгоритма, у человека получится написать софт под любую платформу.
Как быстрее научиться
А для того, чтобы быстро научиться создавать собственные игры и иное ПО для Андроид, рекомендуется пройти дистанционные онлайн курсы направления «Android-разработчик». Есть предложения как для новичков, так и для опытных разрабов.
Онлайн курсы позволят быстро влиться в тему, сконцентрировавшись на важных аспектах программирования. Можно освоить сразу несколько направлений. По выпуску пользователь получит сертификат, подтверждающий навыки в выбранной области. А еще – опыт в программировании и свои первые приложения на Android.
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Программы на Android: все о разработке от А до Я. Часть 2 OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Продолжим разговор об Андроид-разработке. Начало здесь. Какие навыки и знания потребуются Для того, чтобы создать уникальное приложение под Android, придется разбираться в некоторых областях. Это поможет избежать трудностей при разработке и тестинге. Для успешного программирования под Android требуется разбираться в: языках программирования; платформе Android Studio; GIT; основной массе библиотек, которые помогут быстро реализовывать некоторые функции" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/#article","name":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 Android: \u0432\u0441\u0435 \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u0442 \u0410 \u0434\u043e \u042f. \u0427\u0430\u0441\u0442\u044c 2 OTUS","headline":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 Android: \u0432\u0441\u0435 \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u0442 \u0410 \u0434\u043e \u042f. \u0427\u0430\u0441\u0442\u044c 2","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2022\/04\/oj-1080x720-23.png","width":1080,"height":720},"datePublished":"2022-04-26T20:04:08+00:00","dateModified":"2022-04-26T20:04:09+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, Android"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/#listItem","position":2,"name":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 Android: \u0432\u0441\u0435 \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u0442 \u0410 \u0434\u043e \u042f. \u0427\u0430\u0441\u0442\u044c 2","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/#webpage","url":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/","name":"\u041f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u044b \u043d\u0430 Android: \u0432\u0441\u0435 \u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043e\u0442 \u0410 \u0434\u043e \u042f. \u0427\u0430\u0441\u0442\u044c 2 OTUS","description":"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u043c \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440 \u043e\u0431 \u0410\u043d\u0434\u0440\u043e\u0438\u0434-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435. \u041d\u0430\u0447\u0430\u043b\u043e \u0437\u0434\u0435\u0441\u044c. \u041a\u0430\u043a\u0438\u0435 \u043d\u0430\u0432\u044b\u043a\u0438 \u0438 \u0437\u043d\u0430\u043d\u0438\u044f \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u044e\u0442\u0441\u044f \u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0443\u043d\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434 Android, \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043e\u0431\u043b\u0430\u0441\u0442\u044f\u0445. \u042d\u0442\u043e \u043f\u043e\u043c\u043e\u0436\u0435\u0442 \u0438\u0437\u0431\u0435\u0436\u0430\u0442\u044c \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0435\u0439 \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0438 \u0442\u0435\u0441\u0442\u0438\u043d\u0433\u0435. \u0414\u043b\u044f \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0433\u043e \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u043e\u0434 Android \u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0432: \u044f\u0437\u044b\u043a\u0430\u0445 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f; \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0435 Android Studio; GIT; \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043c\u0430\u0441\u0441\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0441\u0442\u0440\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0444\u0443\u043d\u043a\u0446\u0438\u0438","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2022\/04\/oj-1080x720-23.png","@id":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/#mainImage","width":1080,"height":720},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/#mainImage"},"datePublished":"2022-04-26T20:04:08+00:00","dateModified":"2022-04-26T20:04:09+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/3421" /><link rel='shortlink' href='https://otus.ru/journal/?p=3421' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-3421 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-3421" class="the-post post-3421 post type-post status-publish format-standard has-post-thumbnail category-polza tag-android-2">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Программы на Android: все о разработке от А до Я. Часть 2
</h1>
<a href="https://otus.ru/journal/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2/" class="date-link" data-wpel-link="internal"><time class="post-date">26 апреля, 2022</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-23.png" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Программы на Android: все о разработке от А до Я. Часть 2" title="Программы на Android: все о разработке от А до Я. Часть 2" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-23-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-23-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-23-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-23-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-23-270x180.png 270w" data-src="https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-23-770x515.png" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%9A%D0%B0%D0%BA%D0%B8%D0%B5_%D0%BD%D0%B0%D0%B2%D1%8B%D0%BA%D0%B8_%D0%B8_%D0%B7%D0%BD%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE%D1%82%D1%80%D0%B5%D0%B1%D1%83%D1%8E%D1%82%D1%81%D1%8F" title="Какие навыки и знания потребуются">Какие навыки и знания потребуются</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#%D0%9D%D0%B0_%D1%87%D0%B5%D0%BC_%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C" title="На чем писать">На чем писать</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-3" href="#%D0%9A%D1%80%D0%BE%D1%81%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D1%86%D0%B5%D0%BD%D0%B5" title="Кроссплатформенность в цене">Кроссплатформенность в цене</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-4" href="#Java" title="Java">Java</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-5" href="#Python" title="Python">Python</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-6" href="#%D0%A1%D0%98-%D1%81%D0%B5%D0%BC%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%BE" title="СИ-семейство">СИ-семейство</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-7" href="#JavaScript" title="JavaScript">JavaScript</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-8" href="#C" title="C#">C#</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="#%D0%9D%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0" title="Нативная разработка">Нативная разработка</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%92%D1%8B%D0%B1%D0%BE%D1%80_%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D1%8B" title="Выбор платформы">Выбор платформы</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-11" href="#Appmakestore" title="Appmakestore">Appmakestore</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-12" href="#AppyBuilder" title="AppyBuilder">AppyBuilder</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-13" href="#AppsGeyser" title="AppsGeyser">AppsGeyser</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-14" href="#iBuildApp" title="iBuildApp">iBuildApp</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-15" href="#Corona_SDK" title="Corona SDK">Corona SDK</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-16" href="#Unreal_Engine" title="Unreal Engine">Unreal Engine</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-17" href="#Unity" title="Unity">Unity</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-18" href="#LibGDX" title="LibGDX">LibGDX</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-19" href="#%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5" title="Инструкции по разработке">Инструкции по разработке</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-20" href="#%D0%9A%D0%B0%D0%BA_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%B5%D0%B5_%D0%BD%D0%B0%D1%83%D1%87%D0%B8%D1%82%D1%8C%D1%81%D1%8F" title="Как быстрее научиться ">Как быстрее научиться </a></li></ul></nav></div>
<p>Продолжим разговор об Андроид-разработке. Начало <a href="https://otus.ru/journal/programmy-na-android-vse-o-razrabotke-ot-a-do-ya/" data-wpel-link="internal">здесь</a>.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA%D0%B8%D0%B5_%D0%BD%D0%B0%D0%B2%D1%8B%D0%BA%D0%B8_%D0%B8_%D0%B7%D0%BD%D0%B0%D0%BD%D0%B8%D1%8F_%D0%BF%D0%BE%D1%82%D1%80%D0%B5%D0%B1%D1%83%D1%8E%D1%82%D1%81%D1%8F"></span>Какие навыки и знания потребуются<span class="ez-toc-section-end"></span></h2>
<p>Для того, чтобы создать уникальное приложение под Android, придется разбираться в некоторых областях. Это поможет избежать трудностей при разработке и тестинге.</p>
<p>Для успешного программирования под Android требуется разбираться в:</p>
<ul><li>языках программирования;</li><li>платформе Android Studio;</li><li>GIT;</li><li>основной массе библиотек, которые помогут быстро реализовывать некоторые функции (Detfofit – получение информации из интернета, а также Glide – загрузка изображений);</li><li>архитектурных элементах Android;</li><li>написании приложений в архитектурах MVP, а также MVVM.</li></ul>
<p>Разработчику пригодятся познания в английском языке, а также усидчивость и целеустремленность. Проекты, особенно крупные, редко с первого раза работают «как надо». Поэтому стоит подготовиться к основательному тестингу получающихся утилит.</p>
<p>Хороший разраб также должен разбираться в графике и их редакторах. Особо актуально для тех, кто планирует создать собственную игру на Андроиде.</p>
<p>Если позволяет бюджет и время, стоит привлечь к разработке целую команду. Такие проекты получаются более качественными и прибыльными. Но на первых порах можно справляться своими силами.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0_%D1%87%D0%B5%D0%BC_%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C"></span>На чем писать<span class="ez-toc-section-end"></span></h2>
<p>Перед непосредственным коддингом необходимо выбрать язык, на котором будет писаться кодификация приложения под Android. Это – ключевой момент во всей работе. От него зависит функционал, а также движки, которые необходимы при реализации проекта.</p>
<p>Существуют разные способы разработки – кроссплатформенный подход и нативный. Первый является универсальным, вторым – под конкретную операционную систему. У каждого метода имеются свои собственные языки, а также особенности.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D1%80%D0%BE%D1%81%D1%81%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%B2_%D1%86%D0%B5%D0%BD%D0%B5"></span>Кроссплатформенность в цене<span class="ez-toc-section-end"></span></h3>
<p>При программировании приложений для телефона можно использовать кроссплатформенную разработку. Она позволяет:</p>
<ul><li>заучивать самые распространенные языки программирования;</li><li>оснащать утилиты мощным функционалом;</li><li>в отдельных случаях – получать на выходе понятный даже новичкам программный код;</li><li>с легкостью переносить софт из одной платформы на другую.</li></ul>
<p>Этот вариант подходит для утилит, которые планируется запускать не только на Android, но и на других устройствах.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="Java"></span>Java<span class="ez-toc-section-end"></span></h4>
<p>Первый популярный вариант – это Java. Он поддерживается Android Studio, но относится к кроссплатформенным. Связано это с тем, что на Джаве можно создавать контент для совершенно разных устройств.</p>
<p>К основным преимуществам языка относят:</p>
<ul><li>наличие большого количества туториалов и уроков, а также документации (на русском языке);</li><li>хорошее дружелюбное комьюнити;</li><li>заточка Android Studio под Java, что обеспечивает качественную и функциональную разработку;</li><li>понятный синтаксис;</li><li>наличие библиотек и шаблонов, которые значительно упростят коддинг.</li></ul>
<p>Зная Java, разработчик сможет быстро вникнуть в кроссплатформенный процесс создания утилит.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="Python"></span>Python<span class="ez-toc-section-end"></span></h4>
<p>Еще один универсальный язык программирования. На практике встречается реже Джавы. В основном используется новичками.</p>
<p>Python для Android – это:</p>
<ul><li>функциональность;</li><li>простой и понятный синтаксис;</li><li>быстрая работа приложений;</li><li>наличие специальных библиотек для разработки под Android – BeeWare и Kivy.</li></ul>
<p>Подойдет такой вариант тем, кто не хочет учить новый язык, но уже знаком с Python.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%98-%D1%81%D0%B5%D0%BC%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%BE"></span>СИ-семейство<span class="ez-toc-section-end"></span></h4>
<p>СИ-семейство – языки, которые позволяют программировать крупные проекты. Поддерживают работу с 3D, а также имеют множество библиотек с мощным функционалом.</p>
<p>C++ пользуется немалым спросом у современных разработчиков, но новичкам освоиться в нем бывает проблематично. При выборе разработки приложений под Андроид таким образом, нужно понимать, что часть кода все равно будет написана на Java.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="JavaScript"></span>JavaScript<span class="ez-toc-section-end"></span></h4>
<p>Сделать софт на JavaScript – хорошее решение, если планируется веб-утилита. JS – это скриптовый язык. На нем пишут flash-игры, а также разнообразный контент для Windows. Работать с ним просто и удобно.</p>
<p>JS выделяется следующими моментами:</p>
<ul><li>более быстрая сборка, чем при использовании Android Studio;</li><li>наличие собственного flexbox для получения качественного UI;</li><li>простой процесс передачи информации по интернету посредством API.</li></ul>
<p>Сгодится для небольших игрушек, а также для «офисных» программ. Крупные проекты развлекательного характера рекомендуется программировать под Android на других языках.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="C"></span>C#<span class="ez-toc-section-end"></span></h4>
<p>Отдельно в кроссплатформенной разработке нужно выделить C#. Он принадлежит к СИ-семейству, но сильно выделяется. Это – отличный вариант для тех, кто хочет писать на Android качественное программное обеспечение.</p>
<p>C# — это улучшенный Java, обладающий высоким уровнем безопасности, надежностью и мощным функционалом. Единственный недостаток – это то, что для успешного коддинга программеру сначала предстоит освоиться в Java.</p>
<p>Преимущества:</p>
<ul><li>функциональность;</li><li>быстродействие;</li><li>понятный исходный код;</li><li>поддержка Unity 3D, при помощи которого удастся создавать качественные игры под Android.</li></ul>
<p>Хотя коддинг на C# пока не слишком популярен, он все равно используется программистами.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0"></span>Нативная разработка<span class="ez-toc-section-end"></span></h3>
<p>Сделать программу под Android можно и на иных кроссплатформенных языках. Но есть и иной выход из ситуации – нативная разработка.</p>
<p>К таковой можно отнести язык Kotlin. В сочетании с Java становится предельно функциональным и удобным. При желании можно с легкостью перенести Java-код в Kotlin и сделать программный код более понятным «среднестатистическому пользователю».</p>
<p>Преимущества Kotlin:</p>
<ul><li>востребованность среди разработчиков;</li><li>простой и понятный синтаксис – освоить его удастся быстрее, чем Джаву;</li><li>поддержка компиляции в JMV;</li><li>совместимость с Android Studio.</li></ul>
<p>Единственный недостаток такого варианта – это обязательное знание Java. Без него разобраться с Kotlin будет весьма проблематично.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%92%D1%8B%D0%B1%D0%BE%D1%80_%D0%BF%D0%BB%D0%B0%D1%82%D1%84%D0%BE%D1%80%D0%BC%D1%8B"></span>Выбор платформы<span class="ez-toc-section-end"></span></h2>
<p>Любое ПО разрабатывается в специальной среде. Многие программеры отдают предпочтение созданию приложений через движки или специальные онлайн/оффлайн платформы, фреймворки. Они позволяют коддить значительно быстрее, чем действовать «с нуля».</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Appmakestore"></span>Appmakestore<span class="ez-toc-section-end"></span></h3>
<p>Это – онлайн сервис, который предусматривает готовые шаблоны на самые разные тематики. Предусматривает настройку дизайна, а также меню и поведения пользователя на разных страницах без коддинга. Отличный выбор для тех, кому хочется просто посмотреть, что представляет собой создание утилит под Android.</p>
<p>При применении этого сервиса получится:</p>
<ul><li>программа для Android;</li><li>приложение под iOS;</li><li>утилита для FaceBook;</li><li>мобильный сайт на HTML5.</li></ul>
<p>Если программер знает JS и HTML5, он сможет значительно расширить функционал программного обеспечения. Но это – платный сервис.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="AppyBuilder"></span>AppyBuilder<span class="ez-toc-section-end"></span></h3>
<p>Надежный сервис для создания софта под Android. Предусматривает такие преимущества:</p>
<ul><li>более сотни компонентов, которые можно перетаскивать;</li><li>наличие встроенного конструктора логики поведения;</li><li>переменные, поддерживающие работу в визуальном режиме;</li><li>отсутствие ограничений по дизайну.</li></ul>
<p>Для того, чтобы создавать уникальные проекты через этот сервис, нужно сначала научиться работать с графикой.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="AppsGeyser"></span>AppsGeyser<span class="ez-toc-section-end"></span></h3>
<p>Бесплатный и надежный сервис, позволяющий разрабатывать собственные простые утилиты под Android. Поддерживается пошаговый режим. Для получения результата достаточно запомнить предлагаемые поля.</p>
<p>Итог – функциональный контент со стандартным дизайном. Неплохой выбор для новичков и тестингов в бизнес-проектах.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="iBuildApp"></span>iBuildApp<span class="ez-toc-section-end"></span></h3>
<p>Больше подходит для компаний, чем для обычных разрабов-одиночек. Работа здесь основана на шаблонах. iBuildApp позволяет получать на выходе ПО для Android и iOS. Поддерживает огромное количество виджетов для бизнеса.</p>
<p>За использование придется платить от 3 700 рублей в месяц. Дизайны имеющихся шаблонов устаревает. Это – хорошая площадка для новичков.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Corona_SDK"></span>Corona SDK<span class="ez-toc-section-end"></span></h3>
<p>Это – кроссплатформенный надежный движок, который подойдет для создания софта под iOS и Android. Обладает рядом сильных сторон:</p>
<ul><li>поддержка 2D графики;</li><li>создание сложных функций через API;</li><li>базирование на LUA;</li><li>возможность быстро монетизировать утилиту при помощи Corona Ads;</li><li>простой процесс разработки;</li><li>наличие сервисов и фитч, при помощи которых удается создавать уникальное ПО.</li></ul>
<p>На Corona SDK получаются качественные и быстрые игры. Но в случае с 3D-графикой придется выбрать другой движок.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Unreal_Engine"></span>Unreal Engine<span class="ez-toc-section-end"></span></h3>
<p>Unreal Engine – популярная платформа для разработки игр кроссплатформенного характера. Имеет как бесплатную версию, так и платную. В основе UE4 заложен C++. Это дает возможность программеру писать утилиты как для мобильных устройств, так и для компьютеров.</p>
<p>Выделяется:</p>
<ul><li>наличием разных версий на усмотрение разраба;</li><li>базой на C++;</li><li>собственными узкоспециализированными редакторами;</li><li>хорошим взаимодействием всех заложенных подсистем;</li><li>отличной визуализацией;</li><li>функциональность.;</li><li>ультрасовременными шейдерами.</li></ul>
<p>Справиться с этим движком будет проблематично только начинающим. Если человек уже знаком с СИ-семейством – процесс пройдет значительно быстрее.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Unity"></span>Unity<span class="ez-toc-section-end"></span></h3>
<p>Unity – один из лучших кроссплатформенных движков. Позволяет писать уникальные игры – от 2D до 3D. Охват – 24 платформы: от мобильных и VR до веб и консолей.</p>
<p>Выделяется:</p>
<ul><li>поддержкой C#, JS и Boo (диалекта Python);</li><li>бесплатным распространением;</li><li>простым Drag&Drop интерфейсом;</li><li>элементарной настройкой.</li></ul>
<p>Весь проект здесь будет поделен на сцены – уровни. Они представляют собой отдельные файлы с игровыми мирами, объектами, настройками и иными элементами.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="LibGDX"></span>LibGDX<span class="ez-toc-section-end"></span></h3>
<p>Представлен кроссплатформенным фреймворком, написанным на Java. Функционирует с OpenGL. Предусматривает поддержку нескольких платформ для создания игровых приложений.</p>
<p>У LibGDX отличное дружелюбное комьюнити, а также масса документации на разных языках. Но на практике этот фреймворк встречается не слишком часто. Его вытеснили более популярные кроссплатформенные движки.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%98%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D0%B8_%D0%BF%D0%BE_%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5"></span>Инструкции по разработке<span class="ez-toc-section-end"></span></h2>
<p>Безопаснее всего создавать ПО при помощи лицензионных движков. И размещать контент официально на мобильных платформах. Чтобы не запутаться в процессе, рекомендуется придерживаться следующего алгоритма:</p>
<ol type="1"><li>Продумать идею будущего приложения под Android. Если это игра – выбрать ее жанр.</li><li>Поработать над графикой и дизайном – тем, как будет выглядеть утилита.</li><li>Определиться с языком, фреймворками, сервисами и движками. От этого зависит качество всего проекта.</li><li>При необходимости – посмотреть в режиме онлайн уроки и туториалы по спорным вопросам реализации приложения.</li><li>Если речь идет о создании игры – придумать баланс, а также физику и механику. О сюжете тоже нельзя забывать.</li><li>Перед выбором жанра и концепции ПО рекомендуется изучить потребности и желания целевой аудитории. Среди мобильных приложений особой популярностью стали пользоваться аркады, головоломки, паззлы и «офисные» программы.</li><li>Написать код.</li><li>Создать графику и анимацию.</li><li>Осуществить тестирование. Его можно сделать самостоятельно, а можно открыть бета-тестинг. В этом случае контент проверит потенциальная целевая аудитория. Затягивать с релизом не нужно – мелкие ошибки многие исправляют после выпуска софта.</li><li>Разместить ПО на площадке Google Play или в любом другом магазине приложений.</li></ol>
<p>Создание программ для Android при правильной подготовке – не самое трудное дело. Придерживаясь предложенного алгоритма, у человека получится написать софт под любую платформу.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%B0%D0%BA_%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%B5%D0%B5_%D0%BD%D0%B0%D1%83%D1%87%D0%B8%D1%82%D1%8C%D1%81%D1%8F"></span>Как быстрее научиться <span class="ez-toc-section-end"></span></h2>
<p>А для того, чтобы быстро научиться создавать собственные игры и иное ПО для Андроид, рекомендуется пройти дистанционные онлайн курсы направления «Android-разработчик». Есть предложения как для новичков, так и для опытных разрабов.</p>
<p>Онлайн курсы позволят быстро влиться в тему, сконцентрировавшись на важных аспектах программирования. Можно освоить сразу несколько направлений. По выпуску пользователь получит сертификат, подтверждающий навыки в выбранной области. А еще – опыт в программировании и свои первые приложения на Android.</p>
<figure class="wp-block-image size-large"><a href="https://otus.ru/lessons/android-professional/?utm_source=oj&utm_medium=affilate&utm_campaign=android" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><img decoding="async" width="970" height="90" src="https://otus.ru/journal/wp-content/uploads/2022/04/AdvAndroid_970x90-2.png" alt="Программы на Android: все о разработке от А до Я. Часть 2" class="wp-image-3423" srcset="https://otus.ru/journal/wp-content/uploads/2022/04/AdvAndroid_970x90-2.png 970w, https://otus.ru/journal/wp-content/uploads/2022/04/AdvAndroid_970x90-2-300x28.png 300w, https://otus.ru/journal/wp-content/uploads/2022/04/AdvAndroid_970x90-2-150x14.png 150w, https://otus.ru/journal/wp-content/uploads/2022/04/AdvAndroid_970x90-2-768x71.png 768w" sizes="(max-width: 970px) 100vw, 970px" /></a></figure>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/android-2/" rel="tag" data-wpel-link="internal">Android</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2%2F&text=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B%20%D0%BD%D0%B0%20Android%3A%20%D0%B2%D1%81%D0%B5%20%D0%BE%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5%20%D0%BE%D1%82%20%D0%90%20%D0%B4%D0%BE%20%D0%AF.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%202" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fprogrammy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2022%2F04%2Foj-1080x720-23.png&description=%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B%20%D0%BD%D0%B0%20Android%3A%20%D0%B2%D1%81%D0%B5%20%D0%BE%20%D1%80%D0%B0%D0%B7%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B5%20%D0%BE%D1%82%20%D0%90%20%D0%B4%D0%BE%20%D0%AF.%20%D0%A7%D0%B0%D1%81%D1%82%D1%8C%202" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/programmy-na-android-vse-o-razrabotke-ot-a-do-ya/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/programmy-na-android-vse-o-razrabotke-ot-a-do-ya/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Программы на Android: все о разработке от А до Я" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-22-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-22-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-22-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-22-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-22-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-22-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-22-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-22.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-22-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Программы на Android: все о разработке от А до Я" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/programmy-na-android-vse-o-razrabotke-ot-a-do-ya/" data-wpel-link="internal">Программы на Android: все о разработке от А до Я</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/programmy-na-android-vse-o-razrabotke-ot-a-do-ya/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2022-04-26T19:59:40+00:00">26 апреля, 2022</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">4 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/esli-razrabotchiki-tak-vostrebovany-to-pochemu-ustroitsya-na-rabotu-v-etoj-sfere-slozhno/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/esli-razrabotchiki-tak-vostrebovany-to-pochemu-ustroitsya-na-rabotu-v-etoj-sfere-slozhno/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="100" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20100%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Если разработчики так востребованы, то почему устроиться на работу в этой сфере сложно?" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-kopiya-2-150x100.png 150w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-kopiya-2-300x200.png 300w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-kopiya-2-1024x683.png 1024w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-kopiya-2-768x512.png 768w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-kopiya-2-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-kopiya-2-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-kopiya-2-370x245.png 370w, https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-kopiya-2.png 1080w" data-src="https://otus.ru/journal/wp-content/uploads/2022/04/oj-1080x720-kopiya-2-150x100.png" data-sizes="(max-width: 150px) 100vw, 150px" title="Если разработчики так востребованы, то почему устроиться на работу в этой сфере сложно?" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/esli-razrabotchiki-tak-vostrebovany-to-pochemu-ustroitsya-na-rabotu-v-etoj-sfere-slozhno/" data-wpel-link="internal">Если разработчики так востребованы, то почему устроиться на работу в этой сфере сложно?</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/esli-razrabotchiki-tak-vostrebovany-to-pochemu-ustroitsya-na-rabotu-v-etoj-sfere-slozhno/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2022-04-28T13:47:11+00:00">28 апреля, 2022</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">8 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/programmy-na-android-vse-o-razrabotke-ot-a-do-ya-chast-2\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 09:55:27 GMT -->