Пишем андроид приложение на kotlin
Хотя подавляющее большинство приложений для Android написано на Java, не существует правила, согласно которому вы должны использовать Java для разработки под Android. Существует множество современных языков программирования, которые предназначены для работы на виртуальной машине Java (JVM), и одним из этих языков, который становится популярным в сообществе Java, является Kotlin.
В первой части этой серии из трех статей мы рассмотрели, что такое Kotlin и что он может предложить разработчикам Android:
- Он на 100% взаимозаменяем с Java, так что вы можете продолжать использовать существующие библиотеки Java и фреймворки, и даже можете использовать смесь кода Java и Kotlin в ваших проектах Android.
- Его синтаксис спроектирован так, чтобы чувствовать себя очень похожим на Java, а это значит, что разработчикам Java должно быть довольно легко разобраться с основами Kotlin.
- Он сочетает в себе функции и концепции как функционального, так и процедурного программирования.
- Это хорошо поддерживается Android Studio.
В этом последующем уроке мы начнем с реальной разработки Kotlin. К концу учебника вы создадите простое приложение для Android, которое отображает строку текста и полностью написано на Kotlin. Вы также узнаете, как избежать написания другого findViewById , используя расширения Kotlin для Android.
Но сначала пришло время научить нашу среду разработки говорить на новом языке!
Установка плагина Kotlin в Android Studio
Самое первое, что вам нужно сделать, это добавить поддержку Kotlin в вашу установку Android Studio.
Прежде чем мы начнем, убедитесь, что вы используете самую последнюю стабильную версию Android Studio, так как вы с большей вероятностью столкнетесь с ошибками с плагином Kotlin в экспериментальных версиях Android Studio. Также стоит открыть SDK Manager и проверить, доступны ли обновления для любого из установленных вами пакетов.
Нажмите значок « Настройка» , а затем выберите « Плагины» в следующем раскрывающемся списке.
Выберите Kotlin из меню, а затем нажмите зеленую кнопку Install . Вам нужно будет перезапустить вашу IDE, прежде чем плагин Kotlin станет активным, поэтому либо нажмите кнопку « Перезапустить Android Studio» , которая появляется, либо перезапустите вашу IDE вручную.
Настройка вашего проекта для использования Kotlin
На этом этапе ваша IDE может понимать и запускать код Kotlin, но вам все равно придется настраивать Kotlin каждый раз, когда вы захотите использовать его в новом проекте. Давайте создадим новый проект и настроим этот проект для использования Kotlin сейчас. Создайте новый проект с настройками по вашему выбору, но для простоты выберите « Пустое действие» при появлении запроса.
Благодаря плагину Kotlin, настройка проекта для использования Kotlin не может быть проще: просто выберите Инструменты на панели инструментов Android Studio, а затем Kotlin и Configure Kotlin в Project.
Откроется всплывающее окно, где вы можете настроить Kotlin для:
- все модули
- все модули, содержащие файлы Kotlin
- или один, названный модуль
Поскольку в своем проекте я собираюсь использовать только код Kotlin, я выбрал все модули . Вы также можете выбрать, какую версию Kotlin вы хотите использовать — обычно это будет последняя версия.
Кроме того, вы можете настроить Kotlin, выбрав « Справка» в строке меню Android Studio, а затем « Найти действие». На панели « Найти действие» начните вводить « Настройка Kotlin» в Project , а затем выберите эту опцию, когда она появится.
Параметр « Настроить Kotlin in Project» вносит ряд изменений в файлы build.gradle вашего проекта, поэтому давайте подробнее рассмотрим, как эти файлы изменились. Откройте файл build.gradle уровня проекта — он должен выглядеть примерно так:
//Declares the Kotlin Gradle plugin as a classpath dependency// classpath «org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version»Теперь давайте взглянем на файл build.gradle уровня модуля :
proguardFiles getDefaultProguardFile(‘proguard-android.txt’), ‘proguard-rules.pro’ //Although Gradle will compile any Kotlin files it finds in src/main/java, it’s good practice to store your Kotlin files in a dedicated Kotlin directory. exclude group: ‘com.android.support’, module: ‘support-annotations’ //Adds the Kotlin Standard Library as a project dependency// compile «org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version»Наконец, синхронизируйте свои изменения, щелкнув « Синхронизировать сейчас» в появившемся всплывающем окне или щелкнув значок « Синхронизировать проект с файлами Gradle » на панели инструментов Android Studio.
Конвертировать любой файл Java в Kotlin
Особенностью плагина Kotlin, которая особенно полезна для новичков Kotlin, является его способность конвертировать любой исходный файл Java в Kotlin при сохранении полной совместимости во время выполнения.
Возможность точно увидеть, как любой Java-файл будет переводиться на Kotlin, идеально подходит для того, чтобы помочь вам выучить язык, но он также может пригодиться на протяжении всего вашего путешествия по Kotlin — если вы когда-нибудь пытаетесь понять, как написать что-то на Kotlin, Вы всегда можете написать его на Java, а затем использовать эту функцию для преобразования этого кода в Kotlin.
Давайте преобразуем файл MainActivity нашего проекта в исходный файл Kotlin. Существует два способа вызова действия « Преобразовать Java-файл в Kotlin-файл» плагина Kotlin :
Выберите файл MainActivity , а затем выберите « Код » в строке меню Android Studio, а затем « Преобразовать файл Java в файл Kotlin» .
Или выберите « Справка» в строке меню Android Studio, а затем « Найти действие» . В следующем всплывающем окне начните вводить Преобразовать файл Java в файл Kotlin, а затем выберите этот параметр, когда он появится. Обратите внимание, что вы также можете запустить всплывающее окно « Найти действие» с помощью сочетания клавиш: если вы используете Mac, нажмите клавиши Command-Shift-A , а если вы работаете в Windows или Linux, нажмите Control-Shift-A .
Просто помните, что в зависимости от сложности вашего кода конверсия не всегда может быть точной на 100%, поэтому вы всегда должны проверять конвертированный код на наличие ошибок.
Ваш недавно преобразованный MainActivity должен выглядеть примерно так:
Вы также заметите, что расширение файла изменилось, превратившись из MainActivity.java в MainActivity.kt .
Это может быть простое Activity , но эти несколько строк иллюстрируют некоторые ключевые характеристики синтаксиса Kotlin. Так как это наш первый взгляд на некоторый реальный код Kotlin, давайте разберем этот класс построчно.
Понимание синтаксиса Kotlin
В Kotlin вы объявляете классы, используя ключевое слово class , точно так же, как в Java. Однако в Kotlin классы (и методы) по умолчанию являются общедоступными и окончательными, поэтому вы можете создать класс, просто написав class MainActivity .
public class MainActivity extends AppCompatActivity <Если вы хотите переопределить класс или метод, вам нужно явно объявить его открытым или абстрактным.
В Kotlin функции определяются с помощью ключевого слова fun , за которым следует имя функции и параметры в скобках. В Kotlin имя функции предшествует ее типу:
Это противоположность Java, где тип стоит перед именем:
Обратите внимание, что мы не указываем, что этот метод является окончательным, так как в Kotlin все методы являются окончательными по умолчанию.
Остальная часть этого занятия выглядит очень похоже на Java. Тем не менее, эти несколько строк иллюстрируют еще одну ключевую характеристику Kotlin:
В Kotlin вам не нужно заканчивать свои строки точкой с запятой, отсюда и отсутствие двоеточий в приведенном выше фрагменте. Вы можете добавить двоеточия, если вы действительно этого хотите, но ваш код будет чище и легче будет читать без них.
Теперь, когда мы расшифровали наш файл MainActivity.kt , давайте переместим его в соответствующий каталог . Поскольку плагин Kotlin столкнулся с проблемой добавления объявления src / main / kotlin в наш файл build.gradle , давайте создадим этот каталог. Этот шаг не является обязательным, но хранение ваших файлов Kotlin в специальном каталоге сделает проект более чистым.
В обозревателе проектов Android Studio щелкните , удерживая клавишу Control, в главном каталоге вашего проекта и выберите « Создать» в появившемся меню, а затем « Каталог» . Назовите этот каталог kotlin и затем нажмите OK .
Если вы не можете найти основной каталог вашего проекта, откройте маленький выпадающий список в верхнем левом углу окна Project Explorer и выберите Project . Теперь у вас не должно возникнуть проблем с обнаружением этого неуловимого каталога src / main .
Создав специальный каталог Kotlin , перетащите в него файл MainActivity.kt . Просто сохраните имя существующего пакета вашего файла MainActivity.kt , чтобы ваш проект все еще работал .
Кроме того, если вы собираетесь использовать Kotlin только в этом проекте, вы можете удалить каталог Java , а не загромождать свой проект пустыми и ненужными каталогами.
Поскольку Kotlin компилируется в байт-код, приложение, написанное на Kotlin, выглядит точно так же, как приложение, написанное на Java, поэтому попробуйте установить это приложение на ваше устройство Android или совместимое AVD — должно быть, как будто ничего не изменилось.
Создание дополнительных файлов Kotlin
Если вы продолжите работать с Kotlin в своем проекте, то рано или поздно вам придется начать создавать новые файлы Kotlin, а не просто конвертировать существующие файлы Java.
Чтобы создать файл Kotlin, удерживая клавишу Control, щелкните каталог приложения / src / main / kotlin и выберите « Создать»> «Деятельность Kotlin» .
Дайте вашему классу имя и выберите класс из выпадающего меню. Ваш новый класс должен выглядеть примерно так:
Очень сложно найти один проект, который охватывал бы всё новое в разработке под Android в Android Studio 3.0, поэтому я решил написать его. В этой статье мы разберём следующее:
- Android Studio 3
- Язык программирования Kotlin
- Варианты сборки
- ConstraintLayout
- Библиотека привязки данных Data Binding
- Архитектура MVVM + паттерн repository (с mapper'ами) + Android Manager Wrappers
- RxJava2 и как это помогает нам в архитектуре
- Dagger 2.11, что такое внедрение зависимости, почему вы должны использовать это.
- Retrofit (Rx Java2)
- Room (Rx Java2)
Каким будет наше приложение?
Наше приложение будет самым простым, которое охватывает все перечисленные выше вещи: у него будет только одна функция, которая извлекает все репозитории пользователя googlesamples из GitHub, сохраняет эти данные в локальной базе данных и показывает их пользователю.
Я попытаюсь объяснить как можно больше строк кода. Вы всегда можете посмотреть код, который я опубликовал на GitHub.
Android Studio
Чтобы установить Android Studio 3, перейдите на эту страницу
Android Studio 3 поддерживает Kotlin. Откройте Create Android Project. Там вы увидите новый флажок с меткой Include Kotlin support. Он выбран по умолчанию. Дважды нажмите кнопку Далее и выберите Empty Activity, затем нажмите Finish.
Поздравляю! Вы сделали первое приложение для Android на Котлине :)
Kotlin
Вы можете видеть MainActivity.kt:
Расширение .kt означает, что файл является файлом Kotlin.
MainActivity: AppCompatActivity() означает, что мы расширяем AppCompatActivity.
Кроме того, все методы должны иметь ключевое слово fun и в Котлине вам не нужно использовать ;, но вы можете, если хотите. Вы должны использовать ключевое слово override, а не аннотацию, как в Java.
Так что же означает ? в savedInstanceState: Bundle?? Это означает, что savedInstanceState может быть типа Bundle или типа null. Kotlin null безопасный язык. Если у вас есть:
вы получите ошибку компиляции, потому что a должна быть инициализированна и это не может быть null. Это означает, что вы должны написать:
Кроме того, вы получите ошибку компиляции, если вы это сделаете:
Чтобы сделать a nullable, вы должны написать:
Почему эта важная особенность языка Котлина? Это помогает нам избежать NPE. Разработчики Android уже устали от NPE. Даже создатель null, сэр Тони Хоар, извинился за изобретение. Предположим, что мы имеем nullable nameTextView. Если переменная равна null, то в следующем коде мы получим NPE:
Но Котлин, на самом деле, хорош, он не позволят нам делать даже такое. Он заставляет нас использовать оператор ? или оператор !!. Если мы используем оператор ?:
Строка будет исполнена только если nameTextView не null. В ином случае, если вы используете оператор !!:
Мы получим NPE если nameTextView null. Это для авантюристов :).
Это было небольшое введение в Kotlin. Когда мы продолжим, я остановлюсь, чтобы описать другой специфический код на Котлине.
2. Build Variants
В разработке часто вы имеете различные окружения. Наиболее стандартным является тестовое и производственное окружение. Эти среды могут отличаться в URL-адресах сервера, иконке, имени, целевом API и т.д. На fleka в каждом проекте у вас есть:
- finalProduction, который отправляется в Google Play Store.
- demoProduction, то есть версия с URL-адресом production сервера с новыми функциями, которые всё ещё не находятся в Google Play Store. Наши клиенты могут установить эту версию рядом с Google Play, чтобы они могли протестировать ее и дать нам обратную связь.
- demoTesting, то же самое, что и demoProduction с тестовым URL-адресом сервера.
- mock, полезен для меня как для разработчика и дизайнера. Иногда у нас есть готовый дизайн, и наш API ещё не готов. Ожидание API, чтобы быть начать разработку — не решение. Этот вариант сборки снабжён поддельными данными, поэтому команда дизайнеров может проверить его и дать нам обратную связь. Очень полезно это не откладывать. Когда API уже готов, мы перемещаем нашу разработку в окружение demoTesting.
В этом приложении мы будем использовать всех их. У них будут отличаться applicationId и имена. В gradle 3.0.0 есть новый API flavorDimension, который позволяет смешивать разновидности продукта, так, например, вы можете смешать разновидности demo и minApi23. В нашем приложении мы будем использовать только «default» flavorDimension. Перейдите в build.gradle для приложения и вставьте этот код внутри android <>
Перейдите в strings.xml и удалите строку app_name, чтобы у нас не было конфликтов. Затем нажмите Sync Now. Если вы перейдете в Build Variants, расположенным слева от экрана, вы увидите 4 варианта сборки, каждый из которых имеет два типа сборки: Debug и Release. Перейдите к варианту сборки demoProduction и запустите его. Затем переключитесь на другой и запустите его. Вы должны увидеть два приложения с разными именами.
3. ConstraintLayout
Если вы откроете activity_main.xml, вы увидите, что этот layout — ConstrainLayout. Если вы когда-либо писали приложение под iOS, вы знаете об AutoLayout. ConstraintLayout действительно похож на него. Они даже используют один и тот же алгоритм Cassowary.
Constraint помогает нам описать связи между View. Для каждого View у вас должно быть 4 Constraint, один для каждой стороны. В данном случае наш View ограничен родителем с каждой стороны.
Если вы передвинете TextView «Hello World» немного вверх во вкладке Design, во вкладке Text появится новая линия:
Вкладки Design и Text синхронизируются. Наши изменения во вкладке Design влияют на xml во вкладке Text и наоборот. Vertical_bias описывает вертикальную тенденцию view его Constraint. Если вы хотите центровать вертикально, используйте:
Давайте сделаем чтобы наш Activity показал только один репозиторий. В нём будут имя репозитория, количество звезд, владелец, и он будет показывать, есть ли у репозитория issues, или нет.
Чтобы получить такой layout, xml должен выглядеть так:
Пусть tools:text вас не смущает. Он просто помогает нам видеть хороший предварительный просмотр макета (layout'а).
Вы можете заметить, что наш макет плоский, ровный. Вложенных макетов нет. Вы должны использовать вложенные макеты как можно реже, поскольку это может повлиять на производительность. Более подробную информацию об этом вы можете найти здесь. Кроме того, ConstraintLayout отлично работает с разными размерами экрана:
и мне кажется, что я могу добиться желаемого результата очень быстро.
Это было небольшое введение в ConstraintLayout. Вы можете найти Google code lab здесь, и документацию о ConstraintLayout на GitHub.
4. Библиотека привязки данных Data Binding
Когда я услышал о библиотеке привязки данных, первое вопрос, который я задал себе: "ButterKnife работает очень хорошо для меня. Кроме того, я использую плагин, который помогает мне получать View из xml. Зачем мне это менять?". Как только я узнал больше о привязке данных, у меня было такое же чувство, какое у меня было, когда я впервые использовал ButterKnife.
Как ButterKnife помогает нам?
ButterKnife помогает нам избавиться от скучного findViewById. Итак, если у вас 5 View, без Butterknife у вас есть 5 + 5 строк, чтобы привязать ваши View. С ButterKnife у вас есть 5 строк. Вот и всё.
Что плохо в ButterKnife?
ButterKnife по-прежнему не решает проблему поддержки кода. Когда я использовал ButterKnife, я часто получал исключение во время выполнения, потому что я удалял View в xml, и не удалял код привязки в классе Activity / Fragment. Кроме того, если вы хотите добавить View в xml, вам нужно снова сделать привязку. Это очень скучно. Вы теряете время на поддерживание связей.
Что насчёт библиотеки привязки данных?
Есть много преимуществ! С помощью библиотеки привязки данных вы можете привязать свои View всего одной строкой кода! Позвольте мне показать вам, как это работает. Давайте добавим библиотеку Data Binding в наш проект:
Обратите внимание, что версия компилятора Data Binding должна совпадать с версией gradle в файле build.gradle проекта:
Нажмите Sync Now. Перейдите в activity_main.xml и оберните ConstraintLayout тегом layout:
Обратите внимание, что вам нужно переместить все xmlns в тег layout. Затем нажмите иконку Build или используйте сочетание клавиш Ctrl + F9 (Cmd + F9 на Mac). Нам нужно собрать проект, чтобы библиотека Data Binding могла сгенерировать класс ActivityMainBinding, который мы будем использовать в нашем классе MainActivity.
Если вы не выполните сборку проекта, вы не увидите класс ActivityMainBinding, потому что он генерируется во время компиляции. Мы все еще не закончили связывание, мы просто сказали, что у нас есть ненулевая переменная типа ActivityMainBinding. Кроме того, как вы можете заметить, я не указал ? в конце типа ActivityMainBinding, и я не инициализировал его. Как это возможно? Модификатор lateinit позволяет нам иметь ненулевые переменные, ожидающие инициализации. Подобно ButterKnife, инициализация привязки должна выполняться в методе onCreate, когда ваш Activity будет готов. Кроме того, вы не должны объявлять привязку в методе onCreate, потому что вы, вероятно, используете его вне области видимости метода onCreate. Наша привязка не должна быть нулевой, поэтому мы используем lateinit. Используя модификатор lateinit, нам не нужно проверять привязку переменной каждый раз, когда мы обращаемся к ней.
Давайте инициализируем нашу переменную binding. Вы должны заменить:
Вот и всё! Вы успешно привязали свои View. Теперь вы можете получить к ним доступ и применить изменения. Например, давайте изменим имя репозитория на «Modern Android Habrahabr Article»:
Как вы можете видеть, мы можем получить доступ ко всем View (у которых есть id, конечно) из activity_main.xml через переменную binding. Вот почему Data Binding лучше, чем ButterKnife.
Getter'ы и Setter'ы в Котлине
Возможно, вы уже заметили, что у нас нет метода .setText (), как в Java. Я хотел бы остановиться здесь, чтобы объяснить, как геттеры и сеттеры работают в Kotlin по сравнению с Java.
Во-первых, вы должны знать, почему мы используем сеттеры и геттеры. Мы используем их, чтобы скрыть переменные класса и разрешить доступ только с помощью методов, чтобы мы могли скрыть элементы класса от клиентов класса и запретить тем же клиентам напрямую изменять наш класс. Предположим, что у нас есть класс Square в Java:
Используя метод setA (), мы запрещаем клиентам класса устанавливать отрицательное значение стороне квадрата, оно не должно быть отрицательным. Используя этот подход, мы должны сделать a приватным, поэтому его нельзя установить напрямую. Это также означает, что клиент нашего класса не может получить a напрямую, поэтому мы должны предоставить getter. Этот getter возвращает a. Если у вас есть 10 переменных с аналогичными требованиями, вам необходимо предоставить 10 геттеров. Написание таких строк — это скучная вещь, в которой мы обычно не используем наш разум.
Kotlin облегчает жизнь нашего разработчика. Если вы вызываете
это не означает, что вы получаете доступ к a непосредственно. Это то же самое, что
в Java. Причина заключается в том, что Kotlin автоматически генерирует геттеры и сеттеры по умолчанию. В Котлине, вы должны указать специальный сеттер или геттер, только если он у вас есть. В противном случае, Kotlin автогенерирует его для вас:
field? Что это? Чтобы было ясно, давайте посмотрим на этот код:
Это означает, что вы вызываете метод set внутри метода set, потому что нет прямого доступа к свойству в мире Kotlin. Это создаст бесконечную рекурсию. Когда вы вызываете a = что-то, он автоматически вызывает метод set.
Надеюсь, теперь понятно, почему вы должны использовать ключевое слово field и как работают сеттеры и геттеры.
Вернемся к нашему коду. Я хотел бы показать вам ещё одну замечательную особенность языка Kotlin, apply:
apply позволяет вам вызывать несколько методов на одном экземпляре.
Мы все еще не закончили привязку данных, есть ещё много дел. Давайте создадим класс модели пользовательского интерфейса для репозитория (этот класс модели пользовательского интерфейса для репозитория GitHub хранит данные, которые должны отображаться, не путайте их с паттерном Repository). Чтобы сделать класс Kotlin, вы должны перейти в New -> Kotlin File / Class:
В Kotlin первичный конструктор является частью заголовка класса. Если вы не хотите предоставлять второй конструктор, это всё! Ваша работа по созданию класса завершена здесь. Нет параметров конструктора для назначений полей, нет геттеров и сеттеров. Целый класс в одной строке!
Вернитесь в класс MainActivity.kt и создайте экземпляр класса Repository:
Как вы можете заметить, для построения объекта не нужно ключевого слова new.
Теперь перейдем к activity_main.xml и добавим тег data:
Мы можем получить доступ к переменной repository, которая является типом Repository в нашем макете. Например, мы можем сделать следующее в TextView с идентификатором repository_name:
В TextView repository_name будет отображаться текст, полученный из свойства repositoryName переменной repository. Остается только связать переменную репозитория от xml до repository из MainActivity.kt.
Нажмите Build, чтобы сгенерировать библиотеку привязки данных для создания необходимых классов, вернитесь в MainActivity и добавить две строки:
Если вы запустите приложение, вы увидите, что в TextView появится «Habrahabr Android Repository Article». Хорошая функция, да? :)
Но что произойдёт, если мы сделаем следующее:
Отобразится ли новый текст через 2 секунды? Нет, не отобразится. Вы должны заново установить значение repository. Что-то вроде этого будет работать:
Но это скучно, если нужно будет делать это каждый раз, когда мы меняем какое-то свойство. Существует лучшее решение, называемое Property Observer.
Давайте сначала опишем, что такое паттерн Observer, нам понадобится это в разделе rxJava:
Property Observer, в нашем случае, представляет собой XML-макет, который будет прослушивать изменения в экземпляре Repository. Таким образом, Repository является наблюдаемым. Например, как только свойство name класса Repository изменяется в экземпляре класса, xml должен обновится без вызова:
Как сделать это с помощью библиотеки привязки данных? Библиотека привязки данных предоставляет нам класс BaseObservable, который должен быть реализован в классе Repository:
BR — это класс, который автоматически генерируется один раз, когда используется аннотация Bindable. Как вы можете видеть, как только новое значение установлено, мы узнаём об этом. Теперь вы можете запустить приложение, и вы увидите, что имя репозитория будет изменено через 2 секунды без повторного вызова функции executePendingBindings ().
Для этой части это всё. В следующей части я напишу о паттерне MVVM, паттерне Repository и об Android Wrapper Managers. Вы можете найти весь код здесь. Эта статья охватывает код до этого коммита.
Курс по разработке android-приложений на языке Kotlin
Начинаем новый курс по разработке андроид-приложений на языке Kotlin. В этом курсе вы узнаете, как создать и запустить свое первое приложение для Android на Котлине. Если вы не знакомы с языком, рекомендуем заглянуть в раздел Основы Котлин
Kotlin это статически типизированный язык программирования, который работает на JVM и полностью совместим с языком программирования Java. Kotlin с 2017 года является официально поддерживаемым языком разработки приложений для Android, наряду с языком Java.
Исторически сложилось, что первым официальным языком для разработки андроид-приложений была Java. Несмотря на появление языка Kotlin и признание его в качестве официального языка для Android в 2017 году, не все разработчики переводят свои проекты с Java на Kotlin. Однако много новых проектов пишется на Котлине, поскольку это удобный и современный язык.
Какой язык учить: Kotlin или Java?
Многих начинающих разработчиков сейчас волнует вопрос, какой язык изучать для разработки андроид-приложений, Java или Kotlin.
Безусловно, Kotlin нужно изучать и применять в разработке. Этот относительно молодой язык быстро завоевывает популярность у разработчиков благодаря его удобству и современному подходу к решению многих задач а Android. Вероятно, Kotlin станет в недалеком будущем основным языком разработки мобильных приложений для Android.
На нашем сайте вы можете изучить Основы Kotlin
Также на нашем сайте есть Продвинутые курсы по созданию реальных андроид-приложений на языке Котлин
Нужно ли учить Java?
Реальность такова, что Java на сегодняшний день пока остается основным языком разработки андроид-приложений. На Java написано очень много кода – по сути, большинство действующих приложений. С использованием Java написано огромное количество примеров, туториалов и мануалов. Kotlin пока отстает в этом плане. Поэтому, если вы не владеете языком Java, вам трудно будет претендовать на вакансию андроид-разработчика. Следовательно, Java тоже необходимо изучать.
Изучать сразу два языка программирования?
Изучение сразу двух языков программирования может показаться трудной задачей. Но в нашем случае есть положительный момент. Как уже говорилось, Kotlin работает на виртуальной машине Java и полностью совместим с языком Java. Это значит, что в код, написанный на Java можно встраивать код на Kotlin и наоборот. То есть вы можете применять оба языка одновременно не только в одной среде разработки, но и в одном приложении. Конечно, для этого нужно изучить основы обоих языков и научиться применять их.
На нашем сайте вы найдете много уроков по разработке мобильных приложений и игр на языке Java.
И теперь мы начинаем серию уроков по разработке андроид-приложений на языке Kotlin.
Android становится одной из самых популярных операционных систем в эпоху мобильной разработки. ОС дает разработчикам быстрый выход на рынок (TTM), платформу с открытым исходным кодом, которая может адаптироваться к меняющимся бизнес-требованиям, и возможность развертывания на нескольких платформах.
Это делает Android одним из лучших решений для создания приложений с расширенными функциями.
Приложения для Android написаны на Java или Kotlin. Kotlin становится предпочтительным вариантом для разработчиков приложений, и Google даже объявил, что Kotlin является предпочтительным языком. Сегодня мы расскажем вам, как создать приложение для Android с помощью Kotlin.
История развития Android
С момента своего создания в 2003 году Android стала одной из крупнейших в мире операционных систем для разработки мобильных приложений. Изначально стартап, который изначально намеревался улучшить цифровые камеры, Android переключился на мобильные телефоны в 2004 году, а в следующем году был приобретен Google.
Android 1.0 дебютировал в 2008 году в США. С тех пор было выпущено 15 выпусков мобильных телефонов, использующих эту операционную систему, причем последний анонсированный выпуск Android 11 состоялся в феврале 2020 года.
Из этого краткого урока истории о том, как появился Android, мы готовы установить нашу интегрированную среду разработки (IDE): Android Studio.
Что такое Android Studio и SDK?
Android Studio, созданная специально для Google, призвана максимально упростить разработку приложений для Android. Согласно документам разработчика Android,
«Android Studio — это официальная среда IDE для разработки приложений Android на основе IntelliJ IDEA».
С Android Studio вы можете тестировать приложения либо на эмуляторе, либо прямо на устройстве. Для разработки под Android используются несколько языков. Мы обсудим это более подробно позже.
- Java / Kotlin: исходный код
- Groovy: сценарии сборки
- XML: структура макета и ресурсы
Android Studio поставляется с Android Software Development Kit (SDK), который является важной частью разработки Android. Он включает файлы и библиотеки для создания приложений Android, а также такие инструменты, как диспетчер виртуальных устройств и мост ADB.
Чтобы загрузить Android Studio, перейдите на официальный сайт и следуйте инструкциям, чтобы начать работу в вашей конкретной операционной системе (Windows / Mac / Linux).
Если вы планируете использовать виртуальное устройство Android вместо физического устройства, обратите внимание на дополнительные требования, необходимые для запуска эмулятора.
Особенности Android Studio
В Android Studio есть несколько функций, которые делают его достойной IDE для вашего следующего проекта:
Технологии, используемые в разработке под Android
Теперь, когда мы рассмотрели наиболее интересные части Android Studio, давайте узнаем о некоторых языках программирования, с которыми вы столкнетесь как разработчик Android.
- Java: Java изначально использовалась в качестве основного языка для разработки под Android до принятия Kotlin. Это очень многословный язык, и вы можете увидеть его в старых, устаревших проектах. Полезно знать Java, но, вероятно, в будущем она будет заменена Kotlin.
- Kotlin: Kotlin — это кроссплатформенный язык программирования со статической типизацией и выводом типов. Kotlin был создан, чтобы решить проблему многословности Java. Этот язык очень хорошо сочетается с различными пакетами SDK для Java и полностью совместим с Java.
- Система сборки Android: Android Studio использует Gradle для компиляции ваших приложений. Gradle — это набор инструментов, который автоматизирует процесс сборки с вашими настройками. Gradle упакует ваши ресурсы в пакет приложений Android (APK), который вы можете протестировать, развернуть и выпустить.
- XML: Extensible Markup Language, XML, используется для создания файлов макета в приложениях Android. Он похож на HTML, но более строг. Обычно мы называем наши XML-файлы в соответствии с названием нашей деятельности в наших файлах Kotlin или Java. XML также используется в manifest.xmlфайле для определения компонентов. Думайте о XML как о скелете нашего пользовательского интерфейса.
val mainTextView = findViewById<TextView>(R.id.mainTextView)Чтобы понять разницу между Kotlin и Java, сравните этот MainActivity.javaфайл и MainActivity.ktфайл Android.
Теперь, когда у нас есть представление о технологиях, которые используются при создании приложения для Android, давайте соберем все это вместе и создадим базовое приложение с использованием Kotlin!
Как настроить ваше первое приложение
Чтобы создать наше первое приложение для Android, мы хотим убедиться, что у вас установлена Android Studio. Перейдите по ссылке в разделе «Установка Android Studio», чтобы настроить среду, если вы еще этого не сделали.
Настройки в Android Studio
Откройте Android Studio. Вам будет предложено несколько вариантов. Мы ищем для создания нового проекта. Когда вы нажмете на эту опцию, вам будет предложено выбрать свой проект.
Есть всевозможные шаблоны экранов, из которых вы можете выбирать. На данный момент выберите «Основные действия» на вкладке «Телефон и планшет».
Затем вы будете перенаправлены на экран, на котором вам будет предложено назвать свое приложение, где его сохранить, и должно ли оно быть приложением с поддержкой Instant App.
Важный! Обязательно выберите Kotlin в качестве своего языка. На данный момент по умолчанию используется Java.
Минимальный уровень API — это версия Android, для которой вы хотите разрабатывать. Android предоставляет удобную всплывающую подсказку, которая сообщает вам, на каком проценте устройств будет работать выбранный вами API. Ваши потребности могут отличаться, но рекомендуется использовать API 23: Android 6.0 (Marshmallow).
Щелкните Готово. На этом этапе создание проекта займет около минуты. Давайте продолжим и создадим виртуальное устройство Android. Чтобы мы могли предварительно просмотреть наше приложение в эмуляторе Android.
Настройте виртуальное устройство для тестирования вашего приложения
Виртуальное устройство Android (AVD) — это набор характеристик, которые определяют тип устройства, которое вы хотите эмулировать в эмуляторе Android. В Android Studio есть AVD Manager, который помогает нам создавать виртуальные устройства и управлять ими.
Это означает, что в Android Studio есть место, где мы можем создавать наши виртуальные телефоны, планшеты и многое другое, чтобы мы могли тестировать на них наши приложения.
Читайте также: