Kotlin android extensions gradle

Создание функциональных приложений для Android в 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.

Читайте также:  Полоса прокрутки html таблице

Но сначала пришло время научить нашу среду разработки говорить на новом языке!

Установка плагина Kotlin в Android Studio

Самое первое, что вам нужно сделать, это добавить поддержку Kotlin в вашу установку Android Studio.

Прежде чем мы начнем, убедитесь, что вы используете самую последнюю стабильную версию Android Studio, так как вы с большей вероятностью столкнетесь с ошибками с плагином Kotlin в экспериментальных версиях Android Studio. Также стоит открыть SDK Manager и проверить, доступны ли обновления для любого из установленных вами пакетов.

Если вы уверены, что ваша среда разработки обновлена, вы готовы установить плагин Kotlin. Запустите Android Studio, и вы должны увидеть окно « Добро пожаловать в Android Studio» — если это окно не появляется, полностью закройте Android Studio и перезапустите его.

Нажмите значок « Настройка» , а затем выберите « Плагины» в следующем раскрывающемся списке.

Откройте меню Android Studios Настройка плагинов.

Нажмите кнопку Установить плагины JetBrains …

Установите плагин Kotlin для Android Studio

Выберите Kotlin из меню, а затем нажмите зеленую кнопку Install . Вам нужно будет перезапустить вашу IDE, прежде чем плагин Kotlin станет активным, поэтому либо нажмите кнопку « Перезапустить Android Studio» , которая появляется, либо перезапустите вашу IDE вручную.

Настройка вашего проекта для использования Kotlin

На этом этапе ваша IDE может понимать и запускать код Kotlin, но вам все равно придется настраивать Kotlin каждый раз, когда вы захотите использовать его в новом проекте. Давайте создадим новый проект и настроим этот проект для использования Kotlin сейчас. Создайте новый проект с настройками по вашему выбору, но для простоты выберите « Пустое действие» при появлении запроса.

Благодаря плагину Kotlin, настройка проекта для использования Kotlin не может быть проще: просто выберите Инструменты на панели инструментов Android Studio, а затем Kotlin и Configure Kotlin в Project.

Выберите Android Studios Инструменты Kotlin Настройка Kotlin в опции проекта

Откроется всплывающее окно, где вы можете настроить Kotlin для:

Поскольку в своем проекте я собираюсь использовать только код Kotlin, я выбрал все модули . Вы также можете выбрать, какую версию Kotlin вы хотите использовать — обычно это будет последняя версия.

Кроме того, вы можете настроить Kotlin, выбрав « Справка» в строке меню Android Studio, а затем « Найти действие». На панели « Найти действие» начните вводить « Настройка Kotlin» в Project , а затем выберите эту опцию, когда она появится.

Параметр « Настроить Kotlin in Project» вносит ряд изменений в файлы build.gradle вашего проекта, поэтому давайте подробнее рассмотрим, как эти файлы изменились. Откройте файл build.gradle уровня проекта — он должен выглядеть примерно так:

Теперь давайте взглянем на файл build.gradle уровня модуля :

//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.

Наконец, синхронизируйте свои изменения, щелкнув « Синхронизировать сейчас» в появившемся всплывающем окне или щелкнув значок « Синхронизировать проект с файлами Gradle » на панели инструментов Android Studio.

Конвертировать любой файл Java в Kotlin

Особенностью плагина Kotlin, которая особенно полезна для новичков Kotlin, является его способность конвертировать любой исходный файл Java в Kotlin при сохранении полной совместимости во время выполнения.

Возможность точно увидеть, как любой Java-файл будет переводиться на Kotlin, идеально подходит для того, чтобы помочь вам выучить язык, но он также может пригодиться на протяжении всего вашего путешествия по Kotlin — если вы когда-нибудь пытаетесь понять, как написать что-то на Kotlin, Вы всегда можете написать его на Java, а затем использовать эту функцию для преобразования этого кода в Kotlin.

Давайте преобразуем файл MainActivity нашего проекта в исходный файл Kotlin. Существует два способа вызова действия « Преобразовать Java-файл в Kotlin-файл» плагина Kotlin :

Преобразуйте существующий файл Java в файл Kotlin, выбрав Код Преобразовать файл Java в файл Kotlin

  • Выберите файл MainActivity , а затем выберите « Код » в строке меню Android Studio, а затем « Преобразовать файл Java в файл Kotlin» .
  • Или выберите « Справка» в строке меню Android Studio, а затем « Найти действие» . В следующем всплывающем окне начните вводить Преобразовать файл Java в файл Kotlin, а затем выберите этот параметр, когда он появится. Обратите внимание, что вы также можете запустить всплывающее окно « Найти действие» с помощью сочетания клавиш: если вы используете Mac, нажмите клавиши Command-Shift-A , а если вы работаете в Windows или Linux, нажмите Control-Shift-A .

Просто помните, что в зависимости от сложности вашего кода конверсия не всегда может быть точной на 100%, поэтому вы всегда должны проверять конвертированный код на наличие ошибок.

Ваш недавно преобразованный MainActivity должен выглядеть примерно так:

Источник

Kotlin Android Extensions deprecated. Что делать? Инструкция по миграции

Безусловно, это было очень удобно, особенно если у вас проект полностью на Kotlin. Однако, мир меняется и теперь нужно искать альтернативы. В этой статье мы кратко рассмотрим, что такое плагин Kotlin Android Extension, какие были проблемы с ним и что теперь нам, Android-разработчикам делать. Частично, использовался материал этой статьи. Итак, поехали.

Кратко о Kotlin Android Extensions

Kotlin Android Extensions — это плагин для Kotlin, позволяющий восстанавливать view из Activities, Fragments, и Views без написания стандартного бойлерплэйт-кода типа findViewById.
Плагин генерирует дополнительный код, который позволяет получить доступ к view в виде XML, так же, как если бы вы имели дело с properties с именем id, который вы использовали при определении структуры.

Также он создаёт локальный кэш view. При первом использовании свойства, плагин выполнит стандартный findViewById. В последующем, view будет восстановлен из кэша, поэтому доступ к нему будет быстрее.

Если это всё так удобно, то зачем его сделали deprecated?

Проблемы Kotlin Android Extensions

  • Используется глобальный нэйминг идентификаторов. Могут возникнуть ситуации, когда один и тот же идентификатор имеется у разных view в разных лэйаутах — соответственно только на этапе работы приложения вы узнаете о том, что использовали не тот id.
  • Возможно использовать только в проектах на Kotlin (кэп)
  • Отсутствует Null Safety. В случае, когда view представлена в одной конфигурации и отсутствует в другой — может возникнуть краш, т.к отсутствует обработка таких ситуаций
  • Невозможно использовать в многомодульных проектах. Очень распространённый сценарий: у вас есть модуль UI Kit, хранящий общие UI-компоненты, которые вы хотите переиспользовать в других модулях. До сих пор висит issues которое вряд ли поправят. В таком сценарии обычно используют старый добрый findViewById 🙁
  • Резюмируя приведённые недостатки, нетрудно понять, что этот подход не идеален — хотя, безусловно, очень удобен на небольших проектах. На больших проектах с многомодульной архитектурой и сотнями экранов — использование Kotlin Android Extensions уже не кажется идеальным решением.

Альтернативные способы

  • Использование KotterKnife (кек, даже не думайте).
  • Старый добрый FindViewById() — уже получше, но так себе.
  • Использование AndroidAnnotations (привет из 2015)
  • View Binding от Google — бинго!

View Binding от Google

Итак, победителем в этом списке выглядит ViewBinding от Google (не путайте с DataBinding). Давайте кратко рассмотрим, что это такое.

View Binding — это инструмент, который позволяет проще писать код для взаимодействия с view. При включении View Binding в определенном модуле он генерирует binding классы для каждого файла разметки (layout) в модуле. Объект сгенерированного binding класса содержит ссылки на все view из файла разметки, для которых указан android:id

Главные преимущества View Binding — это Null safety и Type safety.

Начало работы с View Binding

Начать работать с ViewBinding достаточно просто. Нужно добавить опцию в build.gradle:

После этого можно уже использовать. Каждый сгенерированный binding класс содержит ссылку на корневой view разметки (root) и ссылки на все view, которые имеют id. Имя генерируемого класса формируется как «название файла разметки», переведенное в camel case + «Binding». Например, для файла разметки result_profile.xml:

Будет сгенерирован класс ResultProfileBinding, содержащий 2 поля: TextView name и Button button.

Использование в Activity

Например у вас вот такой layout:

Результат работы ViewBinding:

public final class ActivityMainBinding implements ViewBinding < @NonNull private final ConstraintLayout rootView; @NonNull public final TextView textView;

Использовать viewBinding можно так:

private lateinit var binding: ResultProfileBinding override fun onCreate(savedInstanceState: Bundle?)

И теперь, после того, как получили ссылки на view:

binding.name.text = viewModel.name binding.button.setOnClickListener

Если вы используете ViewBinding во фрагменте и держите ссылку на binding во фрагменте (а не только в методе onCreateView()) то не забывайте очищать ссылки в методе onDestroyView().

private var _binding: ResultProfileBinding? = null // This property is only valid between onCreateView and // onDestroyView. private val binding get() = _binding!! override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? < _binding = ResultProfileBinding.inflate(inflater, container, false) val view = binding.root return view >override fun onDestroyView()

Это необходимо делать из-за жизненного цикла фрагмента и view:

image

В целом, переключиться на ViewBinding достаточно не сложно, хотя и жаль, что Kotlin Android Extensions объявлен deprecated. Не забудьте присоединиться к нам в Telegram, а на платформе AndroidSchool.ru публикуются полезные материалы для Android-разработчика и современные туториалы.

Источник

Оцените статью