Создание мобильного приложения – перспективная идея в 21 веке. В этой статье поговорим о том, как создать приложение под Android или другую мобильную платформу. Предложенная информация пригодится, в основном, новичкам-разработчикам.
Способы программирования
Самостоятельно создать программное обеспечение на телефон или планшет можно несколькими способами. Каждый вариант предусматривает свои собственные преимущества и особенности, зная о которых, разработчик сможет выбрать оптимальное для себя решение.
Давайте познакомимся с существующими способами быстро и качественно создать приложение. Существуют следующие варианты:
- Разработка «с нуля». Это – самый долгий, зато качественный вариант для формирования программ не только на Android, но и на другие платформы. Разработчику предстоит полностью самостоятельно продумывать проект, его механику, физику (если требуется) и другие особенности. Соответствующий подход требует от программиста знания основ (а иногда – углубленных познаний) того или иного языка программирования. Для Android часто пишут на Java и Swift. Эти языки разработки занимают важную нишу в сфере разработки мобильных приложений. Использование данного метода требует привлечения целой команды программистов.
- Через движки. Этот вариант больше подойдет тем, кто хочет быстро написать под Android игру. Движки – это полноценные готовые инструменты для программистов. Они уже включают в себя различные библиотеки, функции, модули и другие важные компоненты – музыку, физику, механику и так далее. Создавать приложения здесь нужно, подставляя свои собственные элементы. Иногда – отдельно прописывая на выбранном языке функциональность. Наиболее распространенными движками для Android являются Unity3D и Cheat Engine4.
- При помощи шаблонов. Разработка на Android и другие операционные системы может осуществляться через «готовые решения». Некоторые новички самостоятельно и быстро делают свои первые приложения при помощи специальных веб-сервисов – конструкторов. Это – наиболее оперативное решение для тех, кто хочет поскорее выложить проект в Google Play. Иногда создатель программы может не обладать вовсе никакими познаниями в сфере программирования, но выпускать достаточно интересные сервисы. На данном варианте будет сделан акцент далее.
При создании приложения для Андроид или iOS не всегда необходимо знать основы программирования. Часто можно просто скачать бесплатно движок или конструктор, подставить в него все необходимые для работы проекта элементы и собрать все это в единый проект. Далее предстоит изучить конструкторы и принципы их применения.
Краткая инструкция по разработке
Создание приложений своими руками позволяет использовать определенные инструкции для формирования контента для телефона, планшета, компьютера или любой другой платформы. В общих чертах процесс можно описать в несколько этапов. Эта инструкция поможет начать создание приложений под Андроид или iOS бесплатно и быстро:
- Продумать общую идею программы. На этом этапе рекомендуется изучить целевую аудиторию. Данный прием позволит лучше понять, на чем стоит акцентировать внимание.
- Выбрать жанр софта, который создается для Android. Это касается не только игр, но и другого контента.
- Придумать и сформировать элементы на экране. Для игр – дополнительно обеспечить сюжет, персонажей, механику и физику. Скачивание конструктора или движка поможет быстрее справиться с этапом.
- Написать код (текст) приложения. Если пользователь решил разрабатывать под Android через конструкторы, обычно достаточно просто подставить все созданные элементы в готовый шаблон. Исходный код будет сформирован автоматически.
- Собрать и протестировать получившееся приложение, создание которого проведено ранее. Желательно к проверке контента привлечь представителей целевой аудитории.
- Отладить программу после теста и сформировать готовый релиз. Теперь загрузите готовый проект в Google Play Market или App Store.
Эта инструкция поможет разработать собственный мобильный проект с нуля. Наиболее сложным вариантом является программирование своими руками. Создатель на формирование исходного кода, тестирование и отладку может потратить немало времени и сил. Именно поэтому соответствующий вариант подходит для более опытных разработчиков или для тех, кто планирует приложение, создание которого сводится к выполнению элементарных функций (небольших проектов).
Огромной популярностью среди начинающих программистов под Android пользуются конструкторы. Именно на них необходимо заострить внимание далее.
Конструктор мобильных приложений – это…
В начале статьи было сказано, что создать приложение можно несколькими способами. За несколько минут сформировать собственный проект под Android или iOS можно за счет конструкторов.
Конструктор мобильных приложений – онлайн-редактор визуального типа на веб-платформе, в котором пользователи смогут создавать, тестировать и продвигать программы для мобильных устройств (для телефона или планшета). Обычно соответствующие инструменты не требуют от создателя знания языков программирования.
Виды
Перед тем как скачать конструктор и создать приложение с его помощью, необходимо грамотно выбрать соответствующее программное обеспечение. Программисты делают с помощью подобного контента игры и другой контент. Он может формироваться несколькими способами – в зависимости от типа конструктора.
На данный момент можно выделить следующие конструкторы:
- Шаблонные. Самый простой вариант для тех, кто хочет создать приложение своими руками. Для Android и других платформ проекты будут формироваться в считанные минуты. Они не требуют от разработчика никаких навыков программирования. Базируется метод на том, что приложения формируются на базе фиксированных шаблонов. Это отличный вариант для тех, кто не хочет долго разбираться в продвинутых онлайн-редакторах. Гибких настроек тут нет. Исключение – создание иконок, а также выбор цветов оформления.
- No-code. Это проектировщики программ под Android, наделенные понятным интерфейсом. Для создания мобильных приложений необходимо расставить готовые элементы и сконструировать логику функций. Знать основы программирования не обязательно. Некоторые сервисы предоставляют доступ к исходному коду приложения. Его можно в будущем отредактировать по мере надобности.
Создать мобильные приложения бесплатно можно и через конструкторы, которые частично требуют знаний в области разработки программного обеспечения. Такие проектировщики обычно предлагают гибкие и функциональные настройки проектов под Android.
Лучшие конструкторы
Чтобы разработать программное обеспечение под Android или iOS, рекомендуется пользоваться конструкторами. Это самое быстрое и простое решение для тех, кто планирует быструю публикацию приложений с минимальными познаниями в области разработки (или их полным отсутствием). Движки при попытке сделать проект под Android гарантированно требуют изучения основ языков программирования. Далее будут представлены лучшие конструкторы, которые используются при создании мобильных приложений. Это не исчерпывающий список, а перечень конструкторов, с которыми должен познакомиться каждый программист.
App Inventor
Универсальный no-code проектировщик от компании Google. Позволяет создать проект для Android и iOS (iPhone). Поддерживает огромное множество готовых модулей. На них базируется разработка контента. Для реализации бизнес-логики используются элементарные алгоритмы.
App Inventor поддерживает возможность предпросмотра итогового контента. В соответствующем окне допускается тестирование и отладка до непосредственной установки на телефон или планшет. Проекты будут сохраняться в облаке. Редактировать их получится с любого устройства, на котором поддерживается подключение к Интернету.
Готовых шаблонов у App Inventor нет, за исключением нескольких демонстрационных примеров для обучения. Для начала работы с проектировщиком требуется только Google-аккаунт. Монетизация здесь допускается при помощи рекламы, внедряемой в код сторонними расширениями. Финальные сборки монетизируются только у Android. Для iOS допускается загрузка исходного кода для самостоятельной дальнейшей компиляции.
AppsGeyser
Мобильные приложения для iOS и Android могут быть созданы через различные проектировщики. Интересным вариантом для тех, кто планирует специализироваться на Андроиде, станет AppsGeyser. С его помощью делают простейшие проекты, базирующиеся на шаблонах. Проект может быть готов в течение пары минут. Достаточно выбрать шаблон, прикрепить к нему созданные элементы и сохранить.
AppsGeyser предусматривает следующие особенности:
- может сконвертировать сайт или ютуб-канал в нативное приложение;
- поддерживает быструю возможность сделать собственный редактор фотографий;
- допускает формирование VPN-сервисов и веб-браузеров;
- обладает множеством готовых шаблонов – на данный момент их более 44 штук;
- допускает монетизацию через встроенные покупки и рекламу;
- имеет пошаговые уроки для новичков, которые делают освоение программы более быстрым.
AppsGeyser позволяет работать бесплатно. Разработать первый проект и опубликовать свое приложение в Play Market получится буквально за несколько минут. Поддержка iOS отсутствует по умолчанию. Чтобы собрать проект под iPhone в IPA-пакет, требуется заплатить. На данный момент тариф составляет 1 000 долларов США.
Draftbit
Задумываясь над тем, как создать свое приложение для Android или iOS за несколько шагов, многие разработчики останавливаются на конструкторах. Их достаточно скачать на устройство, установить и использовать в процессе разработки. Чаще всего такие приложения работают онлайн, через браузеры.
Если программист хочет основательно заняться созданием проектов под Android, ему рекомендуется обратить внимание на Draftbit. Это no-code конструктор. Он наделен гибкой кастомизацией встроенных шаблонов, а также значительной функциональностью. Размещение и настройка модулей внутри окна приводит к тому, что разработчик создает макет будущего приложения.
Кроме онлайн-версии у Draftbit поддерживается компьютерная разработки. Ее нужно скачать и установить на устройство. Сразу после этого начинается разработка под Android или iOS.
У Draftbit предусматриваются следующие особенности:
- выгрузка исходного кода готового проекта для ручного редактирования;
- быстрая сборка прототипов в конструкторе;
- монетизация через рекламу внутри приложения или формирование подписок;
- множество готовых шаблонов.
Платить при использовании пробного периода (14 дней) не придется. Далее предлагается выбрать один из нескольких тарифов.
Kodika
Интересуясь, как создать свои приложения для Android бесплатно, можно отыскать очень много различных mobile free create конструкторов. Интересным вариантом является проектировщик, название которого Kodika.
Это no-code конструктор. Интерфейс в нем базируется на принципе drag-and-drop. Процесс создания мобильного приложения сводится к тому, что разработчик захватывает мышкой готовые элементы интерфейса и размещает их на экране приложения. Скачивай Kodika, если есть планы по формированию не только Android-проектов, но и программ для iOS.
Данный конструктор распространяется как отдельное приложение. Включает в себя:
- блоки и модули;
- иконки;
- шаблоны;
- настройки для каждого элемента;
- поддержку выстраивания простых алгоритмов через языки программирования;
- Zapier – инструмент для автоматизации интеграции между веб-приложениями;
- три тарифных плана.
За размещение готового контента в магазинах приложений в Kodika необходимо платить. Стоимость зависит от выбранного тарифа. В бесплатной версии придется отдать за релиз 80 долларов.
Монетизация допустима через встроенную рекламу, покупку внутри приложения и push-уведомления. Соответствующий функционал отсутствует в бесплатном тарифе.
Shoutem
Создать приложение самостоятельно – это не всегда трудно. Для малого и среднего бизнеса существуют отдельные конструкторы. Они обеспечат создание мобильных проектов с высокой функциональностью за несколько минут.
Shoutem – один из примеров проектировщиков для малого и среднего бизнеса. У него удобный интерфейс, множество элементов для разработки и тестирования. Поддерживает интеграцию с другими сервисами для аналитики, привлечения пользователей, уведомлений и рассылок.
Shoutem имеет инструменты для автоматического тестирования. Интегрирован с системой контроля версий GIT. Монетизация, если создать мобильные приложения, возможна за счет рекламы, покупки внутри приложения, включая подписки. Готовые шаблоны поддерживаются на самые разные цены.
Сервис имеет 14-дневный тестовый период. Далее предстоит купить подписку для создания приложений. В зависимости от выбранной версии будет меняться стоимость релиза проектов. В «Android» доступна публикация только Андроид-проектов за 49 долларов. В «Стандартном» – 99 долларов в месяц или 79 долларов в месяц (при покупке подписки на год). За «Профессиональный» тариф платят соответственно 179 или 149 долларов США. В «платных» версиях допускается создание приложения под iOS.
<!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>Создание программ на Андроид: как и на чем писать OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Создание мобильного приложения – перспективная идея в 21 веке. В этой статье поговорим о том, как создать приложение под Android или другую мобильную платформу. Предложенная информация пригодится, в основном, новичкам-разработчикам. Способы программирования Самостоятельно создать программное обеспечение на телефон или планшет можно несколькими способами. Каждый вариант предусматривает свои собственные преимущества и особенности, зная о которых, разработчик" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/sozdanie-programm-na-android-kak-i-na-chem-pisat/" />
<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\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/#article","name":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u0410\u043d\u0434\u0440\u043e\u0438\u0434: \u043a\u0430\u043a \u0438 \u043d\u0430 \u0447\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c OTUS","headline":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u0410\u043d\u0434\u0440\u043e\u0438\u0434: \u043a\u0430\u043a \u0438 \u043d\u0430 \u0447\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c","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\/2023\/10\/oj-1080x720133-1.jpg","width":2245,"height":1587},"datePublished":"2023-10-08T20:19:19+00:00","dateModified":"2024-01-09T20:07:56+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, Android, iOS"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/#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\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/#listItem","position":2,"name":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u0410\u043d\u0434\u0440\u043e\u0438\u0434: \u043a\u0430\u043a \u0438 \u043d\u0430 \u0447\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c","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\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/#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\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/#webpage","url":"https:\/\/otus.ru\/journal\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/","name":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c \u043d\u0430 \u0410\u043d\u0434\u0440\u043e\u0438\u0434: \u043a\u0430\u043a \u0438 \u043d\u0430 \u0447\u0435\u043c \u043f\u0438\u0441\u0430\u0442\u044c OTUS","description":"\u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u2013 \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u0430\u044f \u0438\u0434\u0435\u044f \u0432 21 \u0432\u0435\u043a\u0435. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0434 Android \u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u0443\u044e \u043c\u043e\u0431\u0438\u043b\u044c\u043d\u0443\u044e \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0443. \u041f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u043d\u0430\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u0441\u044f, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u043d\u043e\u0432\u0438\u0447\u043a\u0430\u043c-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c. \u0421\u043f\u043e\u0441\u043e\u0431\u044b \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0421\u0430\u043c\u043e\u0441\u0442\u043e\u044f\u0442\u0435\u043b\u044c\u043d\u043e \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u043d\u043e\u0435 \u043e\u0431\u0435\u0441\u043f\u0435\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u0442\u0435\u043b\u0435\u0444\u043e\u043d \u0438\u043b\u0438 \u043f\u043b\u0430\u043d\u0448\u0435\u0442 \u043c\u043e\u0436\u043d\u043e \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u0438\u043c\u0438 \u0441\u043f\u043e\u0441\u043e\u0431\u0430\u043c\u0438. \u041a\u0430\u0436\u0434\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u043f\u0440\u0435\u0434\u0443\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u0442 \u0441\u0432\u043e\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u0435 \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u0438 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0438, \u0437\u043d\u0430\u044f \u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0445, \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/#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\/2023\/10\/oj-1080x720133-1.jpg","@id":"https:\/\/otus.ru\/journal\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/#mainImage","width":2245,"height":1587},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/#mainImage"},"datePublished":"2023-10-08T20:19:19+00:00","dateModified":"2024-01-09T20:07:56+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/7676" /><link rel='shortlink' href='https://otus.ru/journal/?p=7676' />
<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%2Fsozdanie-programm-na-android-kak-i-na-chem-pisat%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%2Fsozdanie-programm-na-android-kak-i-na-chem-pisat%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-7676 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-7676" class="the-post post-7676 post type-post status-publish format-standard has-post-thumbnail category-polza tag-android-2 tag-ios">
<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">
Создание программ на Андроид: как и на чем писать
</h1>
<a href="https://otus.ru/journal/sozdanie-programm-na-android-kak-i-na-chem-pisat/" class="date-link" data-wpel-link="internal"><time class="post-date">8 октября, 2023</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720133-1.jpg" 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="Создание программ на Андроид: как и на чем писать" title="Создание программ на Андроид: как и на чем писать" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720133-1-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720133-1-270x180.jpg 270w" data-src="https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720133-1-770x515.jpg" 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%A1%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%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%9A%D1%80%D0%B0%D1%82%D0%BA%D0%B0%D1%8F_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F_%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-3" href="#%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%E2%80%93_%D1%8D%D1%82%D0%BE%E2%80%A6" title="Конструктор мобильных приложений – это…">Конструктор мобильных приложений – это…</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-4" href="#%D0%92%D0%B8%D0%B4%D1%8B" title="Виды">Виды</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="#%D0%9B%D1%83%D1%87%D1%88%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80%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-6" href="#App_Inventor" title="App Inventor">App Inventor</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-7" 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-8" href="#Draftbit" title="Draftbit">Draftbit</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="#Kodika" title="Kodika">Kodika</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#Shoutem" title="Shoutem">Shoutem</a></li></ul></li></ul></nav></div>
<p>Создание мобильного приложения – перспективная идея в 21 веке. В этой статье поговорим о том, как создать приложение под Android или другую мобильную платформу. Предложенная информация пригодится, в основном, новичкам-разработчикам.</p>
<p></p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A1%D0%BF%D0%BE%D1%81%D0%BE%D0%B1%D1%8B_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F"></span>Способы программирования<span class="ez-toc-section-end"></span></h2>
<p>Самостоятельно создать программное обеспечение на телефон или планшет можно несколькими способами. Каждый вариант предусматривает свои собственные преимущества и особенности, зная о которых, разработчик сможет выбрать оптимальное для себя решение.</p>
<p>Давайте познакомимся с существующими способами быстро и качественно создать приложение. Существуют следующие варианты:</p>
<ol>
<li>Разработка «с нуля». Это – самый долгий, зато качественный вариант для формирования программ не только на Android, но и на другие платформы. Разработчику предстоит полностью самостоятельно продумывать проект, его механику, физику (если требуется) и другие особенности. Соответствующий подход требует от программиста знания основ (а иногда – углубленных познаний) того или иного языка программирования. Для Android часто пишут на <a href="https://otus.ru/journal/operatory-v-java-opisanie-osobennosti-ispolzovanie-logicheskih-operatorov/" data-wpel-link="internal">Java и</a> Swift. Эти языки разработки занимают важную нишу в сфере разработки мобильных приложений. Использование данного метода требует привлечения целой команды программистов.</li>
<li>Через движки. Этот вариант больше подойдет тем, кто хочет быстро написать под Android игру. Движки – это полноценные готовые инструменты для программистов. Они уже включают в себя различные библиотеки, функции, модули и другие важные компоненты – музыку, физику, механику и так далее. Создавать приложения здесь нужно, подставляя свои собственные элементы. Иногда – отдельно прописывая на выбранном языке функциональность. Наиболее распространенными движками для Android являются Unity3D и Cheat Engine4.</li>
<li>При помощи шаблонов. Разработка на Android и другие операционные системы может осуществляться через «готовые решения». Некоторые новички самостоятельно и быстро делают свои первые приложения при помощи специальных веб-сервисов – конструкторов. Это – наиболее оперативное решение для тех, кто хочет поскорее выложить проект в Google Play. Иногда создатель программы может не обладать вовсе никакими познаниями в сфере программирования, но выпускать достаточно интересные сервисы. На данном варианте будет сделан акцент далее.</li>
</ol>
<p>При создании приложения для Андроид или iOS не всегда необходимо знать основы программирования. Часто можно просто скачать бесплатно движок или конструктор, подставить в него все необходимые для работы проекта элементы и собрать все это в единый проект. Далее предстоит изучить конструкторы и принципы их применения.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D1%80%D0%B0%D1%82%D0%BA%D0%B0%D1%8F_%D0%B8%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%86%D0%B8%D1%8F_%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>Создание приложений своими руками позволяет использовать определенные инструкции для формирования контента для телефона, планшета, компьютера или любой другой платформы. В общих чертах процесс можно описать в несколько этапов. Эта инструкция поможет начать создание приложений под Андроид или iOS бесплатно и быстро:</p>
<ol>
<li>Продумать общую идею программы. На этом этапе рекомендуется изучить целевую аудиторию. Данный прием позволит лучше понять, на чем стоит акцентировать внимание.</li>
<li>Выбрать жанр софта, который создается для Android. Это касается не только игр, но и другого контента.</li>
<li>Придумать и сформировать элементы на экране. Для игр – дополнительно обеспечить сюжет, персонажей, механику и физику. Скачивание конструктора или движка поможет быстрее справиться с этапом.</li>
<li>Написать код (текст) приложения. Если пользователь решил разрабатывать под Android через конструкторы, обычно достаточно просто подставить все созданные элементы в готовый шаблон. Исходный код будет сформирован автоматически.</li>
<li>Собрать и протестировать получившееся приложение, создание которого проведено ранее. Желательно к проверке контента привлечь представителей целевой аудитории.</li>
<li>Отладить программу после теста и сформировать готовый релиз. Теперь загрузите готовый проект в Google Play Market или App Store.</li>
</ol>
<p>Эта инструкция поможет разработать собственный мобильный проект с нуля. Наиболее сложным вариантом является программирование своими руками. Создатель на формирование исходного кода, <a href="https://otus.ru/journal/testirovanie-ot-a-do-ya/" data-wpel-link="internal">тестирование и</a> отладку может потратить немало времени и сил. Именно поэтому соответствующий вариант подходит для более опытных разработчиков или для тех, кто планирует приложение, создание которого сводится к выполнению элементарных функций (небольших проектов).</p>
<p>Огромной популярностью среди начинающих программистов под Android пользуются конструкторы. Именно на них необходимо заострить внимание далее.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9A%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80_%D0%BC%D0%BE%D0%B1%D0%B8%D0%BB%D1%8C%D0%BD%D1%8B%D1%85_%D0%BF%D1%80%D0%B8%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9_%E2%80%93_%D1%8D%D1%82%D0%BE%E2%80%A6"></span>Конструктор мобильных приложений – это…<span class="ez-toc-section-end"></span></h2>
<p>В начале статьи было сказано, что создать приложение можно несколькими способами. За несколько минут сформировать собственный проект под Android или iOS можно за счет конструкторов.</p>
<p></p>
<p>Конструктор мобильных приложений – онлайн-редактор визуального типа на веб-платформе, в котором пользователи смогут создавать, тестировать и продвигать программы для мобильных устройств (для телефона или планшета). Обычно соответствующие инструменты не требуют от создателя знания языков программирования.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%92%D0%B8%D0%B4%D1%8B"></span>Виды<span class="ez-toc-section-end"></span></h3>
<p>Перед тем как скачать конструктор и создать приложение с его помощью, необходимо грамотно выбрать соответствующее программное обеспечение. Программисты делают с помощью подобного контента игры и другой контент. Он может формироваться несколькими способами – в зависимости от типа конструктора.</p>
<p>На данный момент можно выделить следующие конструкторы:</p>
<ol>
<li>Шаблонные. Самый простой вариант для тех, кто хочет создать приложение своими руками. Для Android и других платформ проекты будут формироваться в считанные минуты. Они не требуют от разработчика никаких навыков программирования. Базируется метод на том, что приложения формируются на базе фиксированных шаблонов. Это отличный вариант для тех, кто не хочет долго разбираться в продвинутых онлайн-редакторах. Гибких настроек тут нет. Исключение – создание иконок, а также выбор цветов оформления.</li>
<li>No-code. Это проектировщики программ под Android, наделенные понятным интерфейсом. Для создания мобильных приложений необходимо расставить готовые элементы и сконструировать логику функций. Знать основы программирования не обязательно. Некоторые сервисы предоставляют доступ к исходному коду приложения. Его можно в будущем отредактировать по мере надобности.</li>
</ol>
<p>Создать мобильные приложения бесплатно можно и через конструкторы, которые частично требуют знаний в области разработки программного обеспечения. Такие проектировщики обычно предлагают гибкие и функциональные настройки проектов под Android.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9B%D1%83%D1%87%D1%88%D0%B8%D0%B5_%D0%BA%D0%BE%D0%BD%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D0%BE%D1%80%D1%8B"></span>Лучшие конструкторы<span class="ez-toc-section-end"></span></h2>
<p>Чтобы разработать программное обеспечение под Android или iOS, рекомендуется пользоваться конструкторами. Это самое быстрое и простое решение для тех, кто планирует быструю публикацию приложений с минимальными познаниями в области разработки (или их полным отсутствием). Движки при попытке сделать проект под Android гарантированно требуют изучения основ языков программирования. Далее будут представлены лучшие конструкторы, которые используются при создании мобильных приложений. Это не исчерпывающий список, а перечень конструкторов, с которыми должен познакомиться каждый программист.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="App_Inventor"></span>App Inventor<span class="ez-toc-section-end"></span></h3>
<p>Универсальный no-code проектировщик от компании Google. Позволяет создать проект для Android и iOS (iPhone). Поддерживает огромное множество готовых модулей. На них базируется разработка контента. Для реализации бизнес-логики используются элементарные алгоритмы.</p>
<p>App Inventor поддерживает возможность предпросмотра итогового контента. В соответствующем окне допускается тестирование и <a href="https://otus.ru/journal/otladka-prilozheniya-chto-dolzhen-pomnit-razrabotchik/" data-wpel-link="internal">отладка</a> до непосредственной установки на телефон или планшет. Проекты будут сохраняться в облаке. Редактировать их получится с любого устройства, на котором поддерживается подключение к Интернету.</p>
<p>Готовых шаблонов у App Inventor нет, за исключением нескольких демонстрационных примеров для обучения. Для начала работы с проектировщиком требуется только Google-аккаунт. Монетизация здесь допускается при помощи рекламы, внедряемой в код сторонними расширениями. Финальные сборки монетизируются только у Android. Для iOS допускается загрузка исходного кода для самостоятельной дальнейшей компиляции.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="AppsGeyser"></span>AppsGeyser<span class="ez-toc-section-end"></span></h3>
<p>Мобильные приложения для iOS и Android могут быть созданы через различные проектировщики. Интересным вариантом для тех, кто планирует специализироваться на Андроиде, станет AppsGeyser. С его помощью делают простейшие проекты, базирующиеся на шаблонах. Проект может быть готов в течение пары минут. Достаточно выбрать шаблон, прикрепить к нему созданные элементы и сохранить.</p>
<p>AppsGeyser предусматривает следующие особенности:</p>
<ul>
<li>может сконвертировать сайт или ютуб-канал в нативное приложение;</li>
<li>поддерживает быструю возможность сделать собственный редактор фотографий;</li>
<li>допускает формирование VPN-сервисов и веб-браузеров;</li>
<li>обладает множеством готовых шаблонов – на данный момент их более 44 штук;</li>
<li>допускает монетизацию через встроенные покупки и рекламу;</li>
<li>имеет пошаговые уроки для новичков, которые делают освоение программы более быстрым.</li>
</ul>
<p>AppsGeyser позволяет работать бесплатно. Разработать первый проект и опубликовать свое приложение в Play Market получится буквально за несколько минут. Поддержка iOS отсутствует по умолчанию. Чтобы собрать проект под iPhone в IPA-пакет, требуется заплатить. На данный момент тариф составляет 1 000 долларов США.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Draftbit"></span>Draftbit<span class="ez-toc-section-end"></span></h3>
<p>Задумываясь над тем, как создать свое приложение для Android или iOS за несколько шагов, многие разработчики останавливаются на конструкторах. Их достаточно скачать на устройство, установить и использовать в процессе разработки. Чаще всего такие приложения работают онлайн, через браузеры.</p>
<p>Если программист хочет основательно заняться созданием проектов под Android, ему рекомендуется обратить внимание на Draftbit. Это no-code конструктор. Он наделен гибкой кастомизацией встроенных шаблонов, а также значительной функциональностью. Размещение и настройка модулей внутри окна приводит к тому, что разработчик создает макет будущего приложения.</p>
<p>Кроме онлайн-версии у Draftbit поддерживается компьютерная разработки. Ее нужно скачать и установить на устройство. Сразу после этого начинается разработка под Android или iOS.</p>
<p>У Draftbit предусматриваются следующие особенности:</p>
<ul>
<li>выгрузка исходного кода готового проекта для ручного редактирования;</li>
<li>быстрая сборка прототипов в конструкторе;</li>
<li>монетизация через рекламу внутри приложения или формирование подписок;</li>
<li>множество готовых шаблонов.</li>
</ul>
<p>Платить при использовании пробного периода (14 дней) не придется. Далее предлагается выбрать один из нескольких тарифов.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Kodika"></span>Kodika<span class="ez-toc-section-end"></span></h3>
<p>Интересуясь, как создать свои приложения для Android бесплатно, можно отыскать очень много различных mobile free create конструкторов. Интересным вариантом является проектировщик, название которого Kodika.</p>
<p>Это no-code конструктор. Интерфейс в нем базируется на принципе drag-and-drop. Процесс создания мобильного приложения сводится к тому, что разработчик захватывает мышкой готовые элементы интерфейса и размещает их на экране приложения. Скачивай Kodika, если есть планы по формированию не только Android-проектов, но и программ для iOS.</p>
<p>Данный конструктор распространяется как отдельное приложение. Включает в себя:</p>
<ul>
<li>блоки и модули;</li>
<li>иконки;</li>
<li>шаблоны;</li>
<li>настройки для каждого элемента;</li>
<li>поддержку выстраивания простых алгоритмов через <a href="https://otus.ru/journal/yazyki-programmirovaniya-harakteristika-opisanie-vidy/" data-wpel-link="internal">языки программирования</a>;</li>
<li>Zapier – инструмент для автоматизации интеграции между веб-приложениями;</li>
<li>три тарифных плана.</li>
</ul>
<p>За размещение готового контента в магазинах приложений в Kodika необходимо платить. Стоимость зависит от выбранного тарифа. В бесплатной версии придется отдать за релиз 80 долларов.</p>
<p>Монетизация допустима через встроенную рекламу, покупку внутри приложения и push-уведомления. Соответствующий функционал отсутствует в бесплатном тарифе.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Shoutem"></span>Shoutem<span class="ez-toc-section-end"></span></h3>
<p>Создать приложение самостоятельно – это не всегда трудно. Для малого и среднего бизнеса существуют отдельные конструкторы. Они обеспечат создание мобильных проектов с высокой функциональностью за несколько минут.</p>
<p>Shoutem – один из примеров проектировщиков для малого и среднего бизнеса. У него удобный интерфейс, множество элементов для разработки и тестирования. Поддерживает интеграцию с другими сервисами для аналитики, привлечения пользователей, уведомлений и рассылок.</p>
<p>Shoutem имеет инструменты для автоматического тестирования. Интегрирован с системой контроля версий GIT. Монетизация, если создать мобильные приложения, возможна за счет рекламы, покупки внутри приложения, включая подписки. Готовые шаблоны поддерживаются на самые разные цены.</p>
<p>Сервис имеет 14-дневный тестовый период. Далее предстоит купить подписку для создания приложений. В зависимости от выбранной версии будет меняться стоимость релиза проектов. В «Android» доступна публикация только Андроид-проектов за 49 долларов. В «Стандартном» – 99 долларов в месяц или 79 долларов в месяц (при покупке подписки на год). За «Профессиональный» тариф платят соответственно 179 или 149 долларов США. В «платных» версиях допускается создание приложения под iOS.</p>
<figure class="wp-block-image"><a href="https://otus.ru/lessons/android-professional/?utm_source=oj&utm_medium=affilate&utm_campaign=android" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external"><img decoding="async" width="970" height="90" src="https://otus.ru/journal/wp-content/uploads/2022/06/AdvAndroid_970x90-2.png" alt="Создание программ на Андроид: как и на чем писать" class="wp-image-3694" srcset="https://otus.ru/journal/wp-content/uploads/2022/06/AdvAndroid_970x90-2.png 970w, https://otus.ru/journal/wp-content/uploads/2022/06/AdvAndroid_970x90-2-300x28.png 300w, https://otus.ru/journal/wp-content/uploads/2022/06/AdvAndroid_970x90-2-150x14.png 150w, https://otus.ru/journal/wp-content/uploads/2022/06/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><a href="https://otus.ru/journal/tag/ios/" rel="tag" data-wpel-link="internal">iOS</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%2Fsozdanie-programm-na-android-kak-i-na-chem-pisat%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%2Fsozdanie-programm-na-android-kak-i-na-chem-pisat%2F&text=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%20%D0%BD%D0%B0%20%D0%90%D0%BD%D0%B4%D1%80%D0%BE%D0%B8%D0%B4%3A%20%D0%BA%D0%B0%D0%BA%20%D0%B8%20%D0%BD%D0%B0%20%D1%87%D0%B5%D0%BC%20%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C" 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%2Fsozdanie-programm-na-android-kak-i-na-chem-pisat%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%2Fsozdanie-programm-na-android-kak-i-na-chem-pisat%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2023%2F10%2Foj-1080x720133-1.jpg&description=%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%20%D0%BD%D0%B0%20%D0%90%D0%BD%D0%B4%D1%80%D0%BE%D0%B8%D0%B4%3A%20%D0%BA%D0%B0%D0%BA%20%D0%B8%20%D0%BD%D0%B0%20%D1%87%D0%B5%D0%BC%20%D0%BF%D0%B8%D1%81%D0%B0%D1%82%D1%8C" 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/bot-v-telegram-osobennosti-i-primery/" 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/bot-v-telegram-osobennosti-i-primery/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%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="Бот в Telegram: особенности и примеры" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720132-1-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720132-1-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720132-1-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720132-1-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720132-1-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720132-1-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Бот в Telegram: особенности и примеры" /> </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/bot-v-telegram-osobennosti-i-primery/" data-wpel-link="internal">Бот в Telegram: особенности и примеры</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/bot-v-telegram-osobennosti-i-primery/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-10-08T10:06:38+00:00">8 октября, 2023</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">10 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/kak-sdelat-igru-na-telefon-v-domashnih-usloviyah/" 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/kak-sdelat-igru-na-telefon-v-domashnih-usloviyah/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%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/2023/10/oj-1080x720134-1-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720134-1-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720134-1-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720134-1-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720134-1-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2023/10/oj-1080x720134-1-150x106.jpg" 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/kak-sdelat-igru-na-telefon-v-domashnih-usloviyah/" data-wpel-link="internal">Как сделать игру на телефон в домашних условиях</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/kak-sdelat-igru-na-telefon-v-domashnih-usloviyah/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2023-10-08T20:39:02+00:00">8 октября, 2023</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":"0"};
/* ]]> */
</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":"0","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\/sozdanie-programm-na-android-kak-i-na-chem-pisat\/"};
/* ]]> */
</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 10:42:41 GMT -->