Как создают мобильные приложения? Разбор
Сегодня мы углубимся в вопросы разработки приложений для разных мобильных операционных систем и снова попытаемся понять разницу между iOS и Android?
aka_opex 31 августа 2022 в 08:28
Представьте, что у вас во дворе лежит груда железа, вы произносите заклинание и вдруг это железо оживает и превращается в робота. Раньше такие вещи назывались магией, теперь это называется программированием.
Разработчики при помощи кода, по сути, просто текста, заставляет очень глупое сознание — компьютер или смартфон совершать невероятные вещи. Угадывать наши музыкальные вкусы, отслеживать пульс, управлять умным домом и так далее. Поэтому сегодня мы узнаем, что стоит за этой магией.
Разберемся, что такое среда разработки? Узнаем, чем отличаются приложения под iOS и Android? Что лучше, нативные или кросс-платформенные приложения?
И зададим главные вопросы разработчику!
Где разрабатываются приложения?
Итак, разработать приложение — это примерно как сделать табуретку. Для этого вам потребуется необходимый набор инструментов и помещение, где вы будете пилить свою табуретину. На программистском такое помещение с инструментами называется среда разработки или по-научному IDE.
IDE — Integrated development environment — интегрированная (или единая) среда разработки
Для Android такой средой разработки является Android Studio, а для iOS – Xcode.


Среда разработки – это просто программа, где есть всё что вам нужно для создания приложения. Тут есть:
- где писать код,
- где отлавливать баги,
- встроенный эмулятор, в котором вы можете сразу тестировать приложение,
- и даже визуальный редактор интерфейса, в котором вы можете двигать всякие элементы интерфейса прям как в PowerPoint.
Окей, двигаемся дальше.
На каких языках пишутся приложения?
Приложения под разные платформы пишут на разных языках программирования. Большую часть кода под iOS пишут на Objective-C и Swift, а под Android на Java и Kotlin.
Swift и Kotlin – это более современные и дружелюбные языки программирования. Эти языки очень похожи, вплоть до того, что некоторые участки кода могут совпадать на 70% и даже больше.

Вот пример функции которая на основе текущего дня и вида погоды создает сообщение о прогнозе.

Интересно, что Swift создан только для разработки под iOS. А вот на Kotlin можно писать под разные платформы, и под Windows, и под Linux, и даже под iOS. Думаю, это одна из причин радости разработчиков, когда Kotlin добавили в Android Studio. Это было на Google I/O в 2017 году.
Из чего состоят приложения?
С языками и средой разработки разобрались. Но из чего состоят приложения, и как они работают изнутри?
Разберем на примере Android.
Тут все приложения состоят из четырёх основных компонентов, это:
- Активность (activity)
- Сервис (service)
- Широковещательный приемник (broadcast receiver)
- Поставщик содержимого (content provider)
Чтобы вас сильно не грузить, подробнее остановимся на двух из них: Активностях и сервисах.
Начнем с Активностей. По сути, это основной интерфейс приложения. Это пустое окно, в которое мы запихиваем текст, картинки, кнопки и прочие элементы интерфейса. Как правило, активность занимает полный экран, и по своей сути она похоже на веб-страницу.

Активность может быть одна, либо их может быть несколько. И также как мы можем переключаться между веб-страницами при помощи гиперссылок, мы может переключаться между активностями при помощи специального класса Intent (т.е. намерение), попутно передавая информацию о действиях пользователя, то есть его намерениях.
Каждая Активность имеет свой жизненный цикл. Выглядит он вот так сложно:

Но если упростить, активность может находиться в одном из четырех состояний:
- Запущена
- На паузе
- Остановлена
- Уничтожена
А теперь важный момент. Активность, извините за тавтологию, активна только когда пользовательский интерфейс находится на переднем плане. Как только интерфейс другой Активности закрывает собой текущую, первая активность ставится на паузу, или вовсе уничтожается.
Иными словами активность не может работать в фоне. Для этого в Андроиде существует другой компонент — сервис (service)
Сервисы — очень удобная штука. При помощи сервисов в Android очень легко можно реализовать любые фоновые задачи: воспроизведение музыки, скачивание файлов, навигацию и прочее, прочее.
Сложность только одна, можно сильно увлечься с фоновыми процессами и сожрать весь заряд аккумулятора.
iOS и фоновые задачи
А вот в iOS проблемы совсем иного рода. В качестве аналога Сервисов тут есть шутка, которая называется Background Task, то есть буквально фоновая задача.
Вот только все фоновые процессы в iOS строго регламентируются. Разрешены только определенные типы фоновой обработки: типа воспроизведение аудио, если ваше приложение это аудиоплеер, ну или навигация, если вы навигатор или какой-нибудь фитнес-трекер. И то, вам еще предстоит предоставить вескую причину, что вам этот функционал необходим, иначе приложение просто не пройдет строгую проверку Apple.
Из плюсов: вряд ли какое-то приложение сожрет в фоне батарейку на вашем iPhone. Из минусов — вам придется постоянно тыкать в экран пока грузится видосик в Telegram.
Тем не менее, частично такие ограничения можно обойти и реализовать практически тоже самое, что можно сделать на Android.
Иными словами, разработка для iOS и Android очень похожа. Отсюда возникает вопрос, а можем ли мы написать одно приложение, которое будет работать и на iOS и Android? На самом деле можем, но с оговорками.
Когда перед разработчиком стоит задача погнаться сразу за двумя зайцами, то есть разработать приложение сразу под две ОС. У него есть три пути:
- Использовать нативную разработку,
- Использовать кросс-платформенную разработку
- Использовать гибридную разработку.
Нативные, кросс-платформенные и гибридные разработки
Итак, нативная разработка — это самый прямолинейный, понятный, и при этом, наверное, самый затратный путь.
От англ. native — родной, естественный
В этом случае под каждую операционную систему пишется отдельное приложение с использованием родных для этой системы языков и инструментов, то есть для iOS нативные приложения пишутся в среде разработки Xcode на языках Objective-C и Swift. А для Android используют Android Studio и языки Java и Kotlin.

Нативные приложения считаются самыми быстрыми, надежными и вообще чувствуют себя в родной ОС как дома. Каждое такое приложение, как костюм сшитый на заказ. Из преимуществ — такой костюм идеально сидит, из недостатков — для каждой ОС приходится шить свой отдельный костюм.
Поэтому существует очень манящая идея кросс-платформенной разработки. Представляете, вы пишите один код, который работает на разных платформах. Звучит как настоящая мечта для заказчика. Нужно вдвое меньше разработчиков, вдвое меньше времени и, чисто теоретически, вдвое меньше бюджет. Более того есть масса инструментов, то есть фреймворков, которые позволяют это сделать: React Native, Flutter, Xamarin, Cordova, Ionic, Titanium Appcelerator, Vue Native.
Самые популярные — React Native и Flutter.
Естественно, каждый из таких фреймворков обещает, что их кросс-платформенное приложение будет ничем не хуже нативного, но на практике всё не так.
В большинстве случаев, кросс-платформенное приложение будет работать медленнее нативного, при этом будет больше багов и больше проблем с совместимостью, когда выходит новая версия ОС. Поэтому в долгосрочной перспективе, кросс-платформенная разработка может выйти даже дороже нативной.


Ну а гибридный подход совмещает обе эти идеи, когда какие-то куски приложения пишутся как кросс-платформенные, а какие-то как нативные.
Но какой из этих подходов круче?
Нативные приложения — приложения, созданные с помощью инструментов, которые предоставляют владельцы ОС. Обычно они выглядят наиболее органично среди «родных» приложений ОС. Но, для каждой системы нужно делать свою версию приложения, так как у всех разные инструменты для создания таких приложений.
Кросс-платформенные приложения создаются с помощью специальных инструментов, которые позволяют запускать один и тот же код на разных платформах. Задумывалось, что это позволит сократить стоимость разработки за счет компромиссного подхода ко внешнему виду приложения и его производительности.
Гибридные приложения сочетают в себе нативные и кросс-платформенные части. Можно сказать, что они являются проявлением длительного, если не бесконечного, поиска баланса между стоимостью разработки приложения и его способностью приносить пользу для бизнеса.
Любое приложение разрабатывается для достижения какой-то цели. При выборе технологий важно учитывать несколько факторов, которые могут быть не всегда очевидны:
- Можно ли на этой технологии в принципе сделать тот набор фичей, который нужен продукту?
- Можно ли их отнести к стандартным фичам, которые известно как реализовывать? Насколько часто нам нужно выходить за пределы стандартных фичей? Насколько важен внешний вид приложения?
- Насколько критичны требования к производительности приложения? Предполагается ли, что оно должно делать какие-то тяжелые вычисления, обрабатывать большие объемы данных, рисовать сложный пользовательский интерфейс?
- Насколько критична скорость разработки, быстрота найма и стоимость работы разработчиков?
- Каков риск и насколько он критичен в случае, если владельцы технологии поменяют к ней отношение? Они могут снизить затраты или вообще остановить ее разработку, поменять лицензионную политику, ввести какие-то другие ограничения на ее пользователей.
В качестве примера можно рассмотреть гипотетическое приложение для небольшого обучающего портала. Допустим, есть ребята, которые занимаются созданием обучающих видеокурсов и они хотят сделать приложение для того, чтобы пользователи могли смотреть ролики в пути и без интернета.
Кросс-платформенный подход, например React-Native, тут может отлично сработать. Почему?
А потому что задача не сложная. По сути, надо реализовать ряд достаточно простых фич типа: авторизация, просмотр списка доступных курсов, просмотр самих курсов и их покупка. Поэтому шансов, что что-то пойдет не так на разных платформах очень мало. А сэкономить средств получится прилично. Поэтому кросс-платформа для таких случаев очень логичный подход.
Какой подход использовался при разработке приложения «МойОфис Документы»?
Наше приложение можно рассмотреть как показательный пример нативного приложения. Расскажем подробнее, из чего оно состоит.
Приложение “МойОфис Документы” можно разделить на две части:
- Файловый менеджер (ФМ)
- Редактор документов
ФМ — это пример классического набора относительно стандартных функций: авторизация, работа с сетью, показ списка объектов с помощью стандартных UI элементов.
Редакторы — совсем другая история. Их «сердцем» является общее ядро, написанное на C++. За счет этого мы получаем полную унификацию того, как выглядят и ведут себя редакторы на всех платформах на которых мы умеем работать. Цена этой унификации конкретно нашего приложения — необходимость работы с C++, языком который сложно назвать стандартным для мобильной разработки. Что интересно, из-за ядра мы вполне можем назвать наше приложение гибридным, т.к. в нем есть кросс-платформенная часть. Разница лишь в том, что в такой кросс-платформе код ядра работает даже быстрее, чем если бы он был написан на наших «нативных» Java и Kotlin.
Помимо ядра у нас есть нестандартные элементы интерфейса, которые так же критичны к производительности. Я люблю приводить в качестве примера логику рендеринга документов. Этот компонент состоит из двух частей: логика ядра, которая рисует содержимое документа в буфер и логика рисования этого буфера уже на экране. Почему так работает — отдельная история, но сейчас важно, что это позволяет нам находить баланс между скоростью рисования содержимого и эффективным потреблением памяти и CPU. (Тут нужно вставить видео в котором включен developer mode в рендеринге, добавит наглядности)
В общем, наше приложение сложно назвать «тривиальным» с точки зрения разработки. У нас есть как стандартные вещи, так и весьма требовательные к производительности компоненты, проблемы в которых наши пользователи замечают очень быстро. Поэтому, мы изначально делаем наше приложение максимально нативным. Это позволяет сконцентрироваться на бизнес-задачах вместо борьбы с кросс-платформенными фреймворками для того, чтобы выжать из них максимум производительности.
Под какую платформу сложнее программировать iOS или Android?
После совместных обсуждений мы пришли к выводу, что сложность именно в работе примерно одинакова. Обе системы сейчас стремительно движутся в общем направлении как по фичам, так и по подходам к разработке (kotlin ~ swift, ComposeUI ~ SwiftUI). Отличия, конечно, остаются, но они не такие значительные чтобы о них говорить в контексте “сложнее-проще”. Другой вопрос, что порог входа в iOS по прежнему выше, чем в Android: вам нужен мак и айфон для того чтобы начать.
А можно ли написать приложение вообще без кода?
На сегодняшний день, действительно, существуют технологии, которые позволяют создавать некоторый вид приложений буквально не написав ни строчки кода. Чтобы понять как это работает можно вернуться к предыдущей теме. На разработку удобнее смотреть не бинарно (нативное или кросс-платформенное), а как на непрерывный процесс поиска наиболее оптимального способа решать бизнес-задачи. Двигаясь от нативной к полностью кросс-платформенной разработке мы также двигаемся по пути абстрагирования от конкретных платформ и ОС к технологиям которые позволяют сфокусироваться только на бизнес-задачах. Зерокодинг — это пример крайнего положения на спектре разработки. Тут вас ждет огромное количество ограничений: внешний вид, потенциально реализуемые фичи, производительность, полная зависимость от конкретной компании. С другой стороны, вы получаете возможность запустить первую версию приложения буквально за выходные. А в некоторых случаях это может быть крайне важно.

Подписывайтесь на МойОфис ВКонтакте, будьте в курсе новостей разработки приложений.
Установить бесплатные редакторы для решения повседневных задач на домашнем компьютере или мобильном устройстве: ПК, Google Play Store, AppStore.
Android. Собеседование #2. Компоненты приложения


Автор: ivanessence
Вопросы по основным элементам, из которых состоит приложение на Android.
1. Назовите основные компоненты Android приложение
Основными компонентами приложения Android являются:
– Activity
– Service
– Broadcast receiver
– Content provider
Все компоненты Также некоторые относят к ним Intent, но на официальном сайте по разработке на Android он отсутствует.
2. Что такое Activity?
Это компонент приложения, который представляет собой экран, с которым пользователи могут взаимодействовать для выполнения каких-либо действий, например набрать номер телефона, сделать фото, отправить письмо или просмотреть карту. Каждой Activity присваивается окно для прорисовки соответствующего пользовательского интерфейса.
3. Опишите жизненный цикл Activity

Жизненный цикл представляет собой последовательность методов, которые вызываются в определенной последовательности во время создания/уничтожения/приостановки Activity.
– onCreate()
Необходимо обязательно реализовать, поскольку система вызывает его при создании Activity. Важно именно здесь вызвать метод setContentView() для определения пользовательского интерфейса. Вызывается первым, во время создания Activity. Вызывается один раз, после чего наше Activity переходит в состояние Created. В данном методе мы инициализируем интерфейс нашего Activity, а также выполняем некоторую базовую логику, которая необходима нам для корректной работы Activity, например, создаём список с какими-либо данными. Также, в качестве аргумента метода onCreate нам передаётся объект Bundle, который содержит в себе информацию, которая была предварительно сохранена, во время пересоздания Activity.
– onStart()
Переводит нашу Activity в состояние Started, после чего Activity становится видно для пользователя. Метод может использоваться для какой-либо логики, которая взаимодействует с UI.
– onResume()
Наше Activity переходит на передний план приложения (foreground) изменяя своё состояние на Resumed. После вызова данного метода, пользователь может взаимодействовать с Activity. В данном состоянии Activity остается до тех пор, пока не потеряет фокус, это может произойти, например, при переходе на другую Activity, либо при входящем телефонном звонке.
– onPause()
Наше Activity теряет фокус, больше не видно для пользователя и выходит из состояния foreground. При этом Activity не уничтожается и продолжает существовать. В этом методе, например, мы можем приостановить логику связанную с GPS навигацией, чтобы минимизировать расход батареи.
– onStop()
Состояние Activity изменяется на Stopped. Вызывается, когда Activity не видно пользователю, например, при переходе на другой экран или при сворачивании приложения, а также при подготовке к полному уничтожению нашей Activity. системой.
– onDestroy()
Метод вызывается непосредственно перед уничтожением нашей Activity, например, после вызова метода finish(), или переходе на предыдущую Activity, путём нажатия кнопки “назад”.
Если активность завершается, onDestroy() – это последний метод жизненного цикла, который вызывает Activity. Если onDestroy() вызывается в результате изменения конфигурации, система немедленно создает новый экземпляр активности вызывает onCreate() в новом экземпляре и новой конфигурации.
Метод onDestroy() должен освобождать все ресурсы нашей Activity.
При повороте экрана система полностью пересоздаёт экземпляр Activity. Для того, что сохранить какие-либо пользовательские данные и затем восстановить их в нашей Activity, используются следующие методы:
– onSaveInstanceState()
Данный метод вызывается перед тем, как Activity будет уничтожена. Параметром метода является Bundle, в который мы будем складывать необходимые для сохранения данные. Рекомендуется сохранять данным способом информацию, объём которой не превышает 1 мегабайт, в случае превышения лимита мы получим ошибку TransactionTooLargeException.
– onRestoreInstanceState()
Вызывается после метода onStart(). В данный метод мы получим наш Bundle, в котором была сохранена информация.
Стоит заметить, что Bundle с сохранёнными данными мы также получаем в методе onCreate(), но данную ситуацию нужно отдельно обрабатывать, чтобы не получить NullPointerException.
4. Что такое Service?
Service (служба) — это компонент android-приложения без видимого интерфейса, который работает в фоновом режиме. Служба обязательно должна быть объявлена в файле AndroidManifest в теге application:
Service запускается в главном потоке приложения, поэтому если необходимо обработать в нём какую либо тяжёлую логику, необходимо создавать в нём новый поток.
Service бывает нескольких типов:
– Foreground Service;
– Background Service;
– Bound Service.
Дополнительные ответы по Android Services читайте тут.
5. Опишите Broadcast receiver?
Приёмник широковещательных сообщений — это компонент для получения сообщений (Intent) и реагирования на них. Сообщения отправляются при помощи метода sendBroadcast(). Для обработки широковещательных сообщений необходимо создать объект IntentFilter и связать его с Broadcast receiver:
IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("SOME_ACTION"); registerReceiver(receiver, intentFilter);
Либо зарегистрировать его в манифесте при помощи тега .
BroadcastReceiver можно динамически зарегистрировать с помощью метода registerReceiver(), или статически создать его в тэге в файле AndroidManifest приложения. Запускается в главном потоке приложения.
BroadcastReceiver может принимать сообщения от системы, например, если телефон был установлен на зарядку либо система Android была запущена.
6. Способ применения ContentProvider?
Поставщик содержимого представляет собой оболочку над базой данных приложения. Если наше приложение использует базу данных SQLite, то только оно имеет к ней доступ. Поставщик содержимого применяется лишь в тех случаях, когда необходимо использовать данные совместно с другими приложениями, работающими на устройстве. Запускается в главном потоке приложения, поэтому для обработки запросов к базе данных, необходимо использовать другой поток. Например при помощи ContentProvider мы можем получить контакты из записной книги телефона или SMS.
7. Что такое ContentResolver?
ContentResolver необходим для выполнения запросов к ContentProvider другого приложения. ContentResolver включает в себя методы CRUD (create, retrieve, update, delete) для запросов и транзакций. Объекту ContentResolver необходимо передать путь URI, в котором указано, к какому объекту ContentProvider необходимо обращаться.
Из чего состоят Андроид-приложения
Приложение для Андроид состоит из трех основных частей:
Рассмотрим их на примере – установим игру «Ферма».
Приложение
Открываем Плей Маркет, ищем приложение, нажимаем «Установить», загружается установочный файл приложения. После загрузки файл распаковывается в специальный раздел памяти устройства, а в меню появляется ярлык для запуска. Сейчас на устройстве установлена только первая часть – приложение.

Сейчас установлено только приложение
Кеш
Запускаем игру и видим, что требуется загрузить дополнительные файлы: изображения поросят, коз, коров и куриц. Это вторая часть – кеш.

Загружается кеш, 1,76 МБ из 80,11 МБ
Кеш помогает разработчикам уменьшать размер установочного файла.
Плей Маркет устанавливает ограничения по весу файла, а некоторые приложения вместе с кешем занимают несколько гигабайт. Если разработчик не укладывается в эти ограничения, то приходится добавлять основную часть приложения в Плей Маркет, а кеш загружать со своего сервера (компьютер, с которого скачиваются файлы).
Данные
Загрузили кеш, приложение запустилось, мы построили амбар и пекарню, вырастили корову и отключили музыку в игре. Выходим из игры, заходим позднее и видим: постройки стоят, корова жива, музыка отключена. Это произошло благодаря тому, что приложение создало отдельный файл – данные, в котором сохраняются прогресс и настройки игры.
Если мы удалим файл данных или само приложение – потеряем прогресс и настройки.

Зашли в игру через пару часов, все на месте. Спасибо данным!
У такой конструкции есть слабое место: если приложение вдруг перестанет работать или мы захотим поменять смартфон, придется начинать все заново. Некоторые разработчики это понимают, и добавляют в приложения опцию синхронизации.
Рассмотрим ее на примере Уан Нот – приложения компании Майкрософт для создания и хранения заметок.
Синхронизация
Открываем Плей Маркет, ищем приложение, нажимаем «Установить». В меню находим ярлык приложения, запускаем.

Первое, что видим – требование создать аккаунт Майкрософт. Вспоминаем: аккаунт – это личная карточка, которая хранится у Майкрософт.

Частый вопрос: почему нельзя использовать аккаунт Гугл, зачем создавать еще один?
Ответ: аккаунт зависит от разработчика приложения. Если бы приложение написала компания Гугл, то требовался аккаунт Гугл. В этом случае, разработчик – компания Майкрософт, поэтому приходится использовать другой аккаунт.
Создаем аккаунт и добавим пару заметок: рецепт бабушкиных ватрушек и список покупок в магазине автозапчастей. Как мы уже знаем из предыдущего примера, заметки, логин и пароль аккаунта – данные приложения, которые сохраняются в отдельный файл.

Когда смартфон подключен к интернету, и Вы создаете или редактируете заметки, файл данных обновляется в памяти устройства и одновременно его копия отправляется в Майкрософт, где привязывается к Вашему аккаунту.
Если Вы установите такое же приложение на компьютер или другой смартфон, и введете аккаунт, то загрузится последняя копия заметок. Если Вы поменяете заметку или добавите новую, – изменения отобразятся на первом смартфоне. Это называется синхронизацией – неважно, какой компьютер или телефона Вы используете – заметки будут одинаковы.
Синхронизация позволяет писать заметку на одном устройстве, а читать на другом.

Даже если Вы удалите файл данных с памяти смартфона, он останется в Вашем аккаунте.
Благодаря синхронизации можно не беспокоиться, что заметки потеряются, если сломается смартфон или вдруг перестанет работать приложение.
Лучше ставить такие приложения, где данные можно синхронизировать с аккаунтом.
Способы хранения данных зависят от разработчика приложения. Не каждый может позволить себе сервер для хранения данных пользователей, поэтому большая часть приложений сохраняет данные только локально и они теряются при удалении приложения.
Из чего состоит приложение андроид
Android – базирующаяся на ОС Linux операционная система с открытым исходным кодом, предназначенная для мобильных устройств – таких, как, например, смартфоны или планшетные компьютеры. Это руководство предназначено для введения в основные понятия программирования под Android, так что после его изучения вы будете понимать некоторые базовые концепции программирования под эту ОС.
От вас же, в свою очередь, требуется только желание и базовое понимание программирования на языке Java. Не так много, правда? Что ж, начнём!
Среда разработки
Для разработки приложений под Android можно использовать любые из перечисленных операционных систем:
-
Microsoft Windows XP или более поздняя версия
Структура приложений
Поздравляем, ваше оборудование готово к работе! Однако прежде чем приступить к вашему первому приложению, поговорим о том, что из себя представляет приложение на Android и из чего оно состоит.
Компоненты приложения являются своего рода «строительными блоками» для приложения Android. Эти компоненты связаны файлом-манифестом приложения AndroidManifest.xml, который описывает каждый компонент приложения и взаимодействие этих компонентов между собой.
Есть четыре базовых типа компонентов, которые могут быть использованы в приложении Android:
-
Операции (Activities) представляют собой элементы пользовательского интерфейса (одна операция – один экран) и отвечают за взаимодействие пользователя с экраном мобильного устройства;
-
Фрагменты (Fragments) – части пользовательского интерфейса в Операциях (см. выше);
Первое приложение
Итак, давайте приступим к созданию простого Android-приложения, которое будет выводить на экран «Hello World!».
У вас к этому времени уже должен быть установлен Android Studio последней версии. Ниже будет приведена небольшая пошаговая инструкция:
-
Откройте Android Studio.
Запустить приложение можно двумя способами: на реальном устройстве или на эмуляторе в самой среде разработки. В нашем случае мы рассмотрим более универсальный случай – запуск на эмуляторе, полностью имитирующем работу устройства с операционной системой Android.
Запуск приложения на эмуляторе
Попытайтесь запустить приложение кнопкой «Run» – в появившемся диалоговом окне выберите пункт «Create New Virtual Device». В последующих окнах нужно будет выбрать размер экрана и версию Android – помните, что она должна быть не ниже, чем указанная на этапе создания проекта. В случае, если данная версия Android будет отсутствовать на компьютере, Android Studio предложит ее загрузить. Остальные пункты можно оставить без изменений – на данный момент нет необходимости их изменять. После выбора всех настроек нажмите кнопку «Finish», и если вы увидели на своем мониторе экран телефона с названием вашего приложения сверху и с надписью «Hello world!» на экране, значит, вы можете себя поздравить – вы создали свое первое Android-приложение!
Теперь у вас есть базовое понимание и минимальный опыт в создании приложений на Android. Этого, разумеется, совершенно не хватит, чтобы заниматься разработкой, но это необходимый для дальнейшего развития фундамент – продолжайте изучать и практиковаться! Всего наилучшего!
Также можно научиться создавать приложения на Android и другие ОС после прохождения нашего шестимесячного курса «Профессия: Разработчик»
Получить консультацию по курсам для Разработчиков
Java / Android / Javascript / Python
Мы расскажем детали наших курсов, а также забронируем для вас текущую цену курса