Как создать свое первое приложение для Android. Пошаговая инструкция для новичков

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

Приложения для Android создаются на языке программирования Java. Сейчас как альтернатива Java продвигается еще и относительно новый более простой язык Kotlin (язык назван в честь острова? на котором расположен город Кронштадт). Наш пример будет на Java.

Сперва мы проверим, установлен ли на вашем компьютере (под управлением Windows) JDK. Java Development Kit – это комплект разработчика приложений от компании Oracle. Без него среда разработки не сможет правильно функционировать.

Для этого нажмите на клавиатуре Win + R. Введите cmd и нажмите Enter. Откроется командная строка. Далее в консоли необходимо набрать:

java -version

Скорее всего, вы увидите версию Java:

Это значит, что у вас уже установлен JDK. В противном случае его необходимо скачать (150 Мб).

После установки JDK переходим к основному инструменту разработки для ОС Android – Android Studio. Загрузить его можно здесь (944 Мб).

Android Studio – это свободно распространяемая среда разработки от Google. Это такой огромный комбайн для разработки приложений, в который вошли различные инструменты для тестирования, сборки приложений, а также шаблоны, удобный редактор макетов и многое другое. Android Studio постоянно обновляется, как и его многочисленные компоненты.

Версии Android Studio есть не только под Windows, но и для Mac OS и Linux. Системные требования для Android Studio: Windows 7/8/10, 3 Гб оперативной памяти минимум, 8 Гб RAM рекомендовано, 4 Гб на жестком диске.

Итак, вы скачали инсталлятор Android Studio.

Запускаем его.

Жмем Next, выбираем путь для установки. Настройки желательно не менять.

 

Затем запустится мастер настройки Android Studio. Здесь можно выбрать цветовую тему среды разработки, скачать дополнительные файлы. Тип установки выбираем стандартный.

После скачивания необходимых компонентов будет предложено выбрать тип вашего проекта. Выбираем Empty Activity и кликаем Next.

На следующем экране даем название проекту и выбираем, начиная с какой версии Android будет работать ваше приложение. Лучше всего выбрать – c Android 4.0.3 – так наше приложение будет работать на максимальном количестве устройств. Стоит отметить, что Android Studio настолько универсальна, что позволяет создавать приложения не только для смартфонов, но и для смарт-часов и телевизоров!

Далее у нас открывается основное окно Android Studio. Слева мы видим несколько разделов. Это структура нашего проекта. В папке manifests находится файл AndroidManifest.xml, который отвечает за информацию о приложении, импортируемые библиотеки, компоненты и другие параметры. В папке java находится непосредственно код (файл MainActivity в папке com.example.myapplication). В папке res находятся ресурсы приложения – кнопки, файлы, которые определяют дизайн интерфейса (например, activity_main.xml).

Acitivity – это отдельный экран, с которым взаимодействует пользователь. Примеры: экран с фото, набор номера, ввод текста. У нас будет один Acitivity (экран). Поэтому сразу идем по пути appsrcmainreslayout и открываем файл activity_main.xml. Переключаемся в режим Design.

Выбираем раздел Button и перетягиваем его на экран приложения. У нас появилась кнопка. Вводим текст на ней (kv.by).

Чтобы увеличить размер шрифта – переключаемся в режим Text и в коде в разделе Button добавляем такую строчку:

android:textSize="25sp"

В режиме Design жмем правой кнопкой мыши и выбираем Constrain, далее выбираем все пункты по очереди. Это «привяжет» вашу кнопку, чтобы она не могла сместиться.

Далее редактируем надпись Hello, World – меняем на свою собственную («Мое первое приложение на Android»).

Следующий этап – добавляем картинку. Сначала мы должны ее добавить в проект. Картинка будет к примеру, эта:

Скачайте ее и перетяните прямо в проект в папку res – drawable. Она добавится в проект. Теперь открываем activity_main.xml и переключаемся в режим Design. Выбираем Common – ImageView. Перетягиваем на наш экран. Откроется окно выбора картинки. Переходим в раздел Project. Там видим логотип kv.by. Выбираем его и помещаем в середине окна нашего приложения. На картинке также применяем Constrain.

В итоге у вас должен получится такой код activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="145dp"
        android:layout_height="53dp"
        android:layout_marginTop="262dp"
        android:layout_marginBottom="416dp"
        android:gravity="center"
        android:text="Мое первое приложение на Android"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.552"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/button"
        android:layout_width="199dp"
        android:layout_height="113dp"
        android:text="kv.by"
        android:textSize="25sp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        tools:layout_editor_absoluteY="114dp" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="216dp"
        android:layout_height="172dp"
        android:layout_marginStart="55dp"
        android:layout_marginLeft="55dp"
        android:layout_marginTop="380dp"
        android:layout_marginEnd="28dp"
        android:layout_marginRight="28dp"
        android:layout_marginBottom="51dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.495"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@drawable/logo" />
    </android.support.constraint.ConstraintLayout

И, соответственно, такой код MainActivity (в папке com.example.myapplication):

package com.example.myapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapplication">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="App kv.by"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

А теперь пора проверить, все ли работает. Проверим на виртуальном смартфоне прямо у вас на компьютере.

Жмем вверху Tools – AVD Manager – Create Virtual Device.

Мы создаем виртуальное устройство (смартфон) под управлением Android. Выбираем Nexus 5X. Скачиваем сам эмулятор Android. Жмем Next. После всех манипуляций у вас в списке виртуальных устройств должен появиться «смартфон» Nexus 5X.

Теперь запустим приложение на виртуальном смартфоне – RunRun app.

Появится окно с выбором, на чем необходимо его протестировать. Разумеется, выберем Nexus 5X.

 

На смартфоне открываем список приложений и ищем там App kv.by

Вот что получилось:

Работает! Приложение готово. Теперь можно и на ваш реальный смартфон его загрузить.

Чтобы установить на смартфон наше первое приложение – нужно создать apk-файл. APK – Android Package Kit, это такой незашифрованный zip-архив, в котором содержатся скомпилированный код приложения, файлы ресурсов, файлы манифеста и другая информация. Именно в формате apk хранятся файлы в Google Play, из которого мы скачиваем приложения.

Поскольку они не зашифрованы, картинки и некоторую другую информацию можно легко извлечь из любых приложений. Для этого есть ресурс APKMirror.com. На нем можно скачать apk-файл нужного приложения из Google Play. Затем переименовать его в *.zip и открыть любым архиватором. Там можно увидеть структуру приложения, иконки, графику. Например, вот как выглядит приложение WhatsApp изнутри:

Apk-файлы можно скачивать себе на смартфон или обмениваться ими. Либо установить в качестве приложения. Это удобно и дает некоторую свободу.

Для того, чтобы установить apk на вашем смартфоне, нужно сначала это разрешить. Идем в Настройки – Приложения – Особые права доступа – Установка неизв. приложений и там выбираем «Разрешено» для вашего файлового менеджера (например, Total Commander).

Итак, наша задача сделать apk-файл из кода, который мы написали. Для этого в Android Studio выбираем Build – Build Bundle / APK – Build APK. Запустится скрипт для создания apk. В конце вам предложат открыть папку в которой будет apk-файл. Далее необходимо подключить смартфон к компьютеру и скопировать полученный apk-файл в память телефона. Затем уже на смартфоне открыть файловым менеджером папку с файлом и установить его. Теперь у вас собственное приложение в смартфоне!

Если вас заинтересовала эта тема – вы можете ознакомиться с исходным кодом некоторых простейших приложений на GitHub. Например, там есть галерея и файловый менеджер. Вы можете редактировать их код под собственные нужды. Много информации о разработке под Android вы также можете найти здесь.

 

 
Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 5
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Читайте также

 

Комментарии

Страницы

Аватар пользователя mike

На чём спотыкался много раз: если разметка предполагает автоматическое определение размеров виджетов, то их лейаут-размеры надо ставить в 0dp. Но это не касается других размеров -- предопределяемых (не лейаут), используемых вместе с лейаут. И, чтобы работало на разных экранах, везде, где можно, следует использовать автоматическое размещение элементов, задаваемое с помощью "весов" -- адроид-параметр weight. Там всё просто, как в задачках на части для младшеклассников. Но про 0dp я нередко забывал и чесал репу: WTF?!

Аватар пользователя mike

Как-то одна редакционная дама беспардонно сообщила мне, что читателям было бы интересным, как стареет разраб. Частично отвечаю на этот вопрос: в свои 71 полных плодотворно работать могу только до обеда. Потом тупею: начинаю путаться в интерфейсах, классах, бизнес-логике и тд, хотя и стараюсь всё тщательно структурировать. Бросаю всё нах, обедаю, переключаюсь на быт (прибираюсь или иду в магаз), затем смотрю какой-нибудь фильмец. Кстати, рекомендую корейский "Гений математики" 2023 г. Фильм о разных подходах к математике при тоталитаризме и демократии. Сентиментальным я никогда не был, но в конце фильма глаза повлажнели. Валяется в торрентах.

Аватар пользователя mike

Для меня полной неожиданностью была невозможность апгрейда  третьего патча "фламинго" в "ежа" (Hedgehog): теперь требуется не патчить студию, как было обычно, а скачивать студию по-новой с заполнением кучи лицензий, что, впрочем, не очень страшно,  и  снова настраивать скачанный продукт под свои проекты. А вот это уже реально неприятно -- как бы чего не вышло, да и время отнимает. Хотя пишут, что, вроде бы, работает  стабильно. Думаю  подключить к компу ещё один SSD, установить на нём Винду и поставить "ежа" туда.

Как думаете, это правильное решение?

Аватар пользователя Piton

mike пишет:

Как думаете, это правильное решение?

Вполне.

Или же, как вариант, сделать бэкап системного диска. Если вдруг апгрейд пройдёт неудачно, можно будет установить предыдущую версию, а все её настройки восстановить из бэкапа.

Аватар пользователя mike

Как нередко бывает, жизнь внесла коррективы. Съездив в пару командировок, вирусно заразился и заболел, а тут ещё и заказ подвалил на апгрейд старого софта на плюсах. Короче, из-за предновогоднего цейтнота (опрос абонентов, сдача анализов, ДР Сталина, День Энергетика, Рождество) плюнул я на трату времени и денег и рискнул: скачал "ёжика", поставил поверх "жирафа", и всё -- ура! -- работает.

Когда ставил поверх, новая студия подхватила все прежние лицензии. Так что смелее.

Может, кому пригодится.

(Кстати, "ёжик", думаю, проживёт недолго: "игуана" на подходе.)

Аватар пользователя mike

Ложка дёгтя в "ёжике" всё же нашлась. Он упорно не желал показывать память виртуального девайса с древним API 21, сваливаясь с Windows в сообщения, где фигурировали линуксные sh-ки.  А на чуть более высоком API после демонстрации памяти виртуального девайса вся студия зависла так, что даже диспетчер задач оказался бессилен. Пришлось перезагружаться. Впрочем, такое бывало и в "жирафе".

Однако приятность: можно делать так, чтобы дебаггер не отключал "логического кота", что делает отладку существенно прозрачнее. Для этого нужно не подключать дебаггер к процессу, а запускать  дебаггером процесс. Правда, чтобы приложение выполнялось без раздражающих тормозов, процессор должен быть не ниже 8-го поколения...

Аватар пользователя mike

Пропатчил ёжика ещё раз. Это второй патч. Пока норм.

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

Аватар пользователя mike

Иногда на экране нужно скроллировать данные по вертикали и по горизонтали, но, когда скроллируешь по горизонтали, то левая колонка идентификатора строки (номера, даты, типы и т.д.) уплывает за пределы маленького экрана смартфона, и трудно визуально понять, к чему относится строка. Если колонку идентификаторов сделать в отдельном постоянно видимом скроллере, но она, естественно, должна скроллироваться по вертикали синхронно с данными. Долго гуглил приемлемое решение. Предлагают, но громоздко. Возможно, плохо искал. Моё решение простое: при создании активити навешиваем на ведущий вертикальный скроллер слушатель прикосновения, ловим при движении событие отпускания, и, поймав, перемещаем ведомый скроллер :

        vsv.setOnTouchListener((v, event) -> {
            if (event.getAction() == MotionEvent.ACTION_UP) {
                chsw.smoothScrollTo(0, vsv.getScrollY());
                return true;
            }
            else
                return false;
        });

Здесь  vsv -- ведущий вертикальный скроллер, содержащий горизонтальный скроллер с данными, а chsw -- ведомый вертикальный скроллер, содержащий идентификаторы данных. 

Может, кому пригодится.

Аватар пользователя Piton

mike, глядя на ваши мучения, мне неожиданно пришёл в голову вопрос. Как я понял, в вашу прилагу нужно вводить какие-то данные, которые потом куда-то отсылаются и там анализируюся. Вопрос такой: почему андроид, почему не веб-сервис? Открываете на телефоне браузер, в котором загружается некий сайт, и там уже вводите всё, что вам надо.

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

Так почему андроид?

Аватар пользователя mike

Открываете на телефоне браузер, в котором загружается некий сайт...

Вот если бы электросчётчики, сумматоры, расходомеры и прочая имели бы внутри себя веб-серверы или хотя бы передавали не бинарные данные, а как-нибудь в джейсонах, то, наверное, да.

Все данные собирается железом и через закрытые для рядовых пользователей группы интернета отправляются в сбытовые организации. Бинарниками по протоколам, которые совсем не веб. Там всё обрабатывается и затем уже пакуется на веб-серверы в кабинеты пользователей.

Я работаю с промпредприятиями. Платы за ресурсы космические. Всё многотарифно -- в сутках 3 тарифа. И многоставочно, т.е. помимо платы за расход взимается ещё и плата за интенсивность расхода. Всё это фиксируется учётными приборами. Если перебирается планка за интенсивность расхода, то большие штрафы - не один десяток тыс. руб.

Моя задача -- контроль в режиме реального времени.  Для этого смартфон имеет фоновые задачи и в любое время дня и ночи выдаёт энергетику предприятия уведомление при угрозе превышения планки. Также  приложения контролируют и исправность учётного оборудования. Это важно. Например, недавно на одном очень известном белорусском предприятии подгорел измерительный трансформатор напряжения 10 кВ / 100 В и выдавал на счётчик заниженное напряжение. Хорошо, что приложение заметило это, иначе бы через некоторое время за безучётное потребление заплатили бы неск. сот тыс. руб.

mike, глядя на ваши мучения...

Ништо. Возможно, не так тяжко будет умирать, всё-таки кое-что по жизни для РБ сделал. Не много, но всё же. Экономил людям деньги. И 3 профессии освоил: электрика, электронщика и программиста. :) Правда, сбережений мало -- ну не работал на забугорных дядей!   :(

Спасибо за отклик, Питон. 

Страницы