создание android приложения kotlin

Урок 1. Разработка на Kotlin. Установка Android Studio

В первом уроке курса по разработке андроид-приложений на языке Kotlin мы установим необходимые средства для разработки приложений, такие как среда разработки Android Studio.

Этот курс предполагает, что вы знакомы с основами программирования. Если вы немного умеете читать код, вы должны разобраться, даже если у вас нет большого опыта программирования. Если вы не знакомы с основами программирования, то мы рекомендуем посмотреть хотя-бы несколько уроков курса CS50.

Установка Android Studio на компьютер

В этом курсе мы создадим приложение Android на языке Kotlin, используя официальную среду разработки Android Studio. Android Studio — это IDE, созданная на базе программного обеспечения IntelliJ IDEA от JetBrains специально для разработки Android-приложений. Для создания приложений в Kotlin необходимо установить Android Studio 3.0 или более поздней версии.

Среда Android Studio доступна для компьютеров под управлением Windows, Mac и Linux. Установка практически аналогична для всех платформ. Некоторые различия описаны в подробной инструкции по установке на нашем сайте fandroid.info.

Примечание: Последние сведения о системных требованиях и инструкциях по установке содержатся в официальной документации на сайте developer.android.com/studio.

Если вы используете компьютер, на котором уже установлена ​​Android Studio версии 3.0 и выше, переходите к следующему уроку, в котором мы создадим первый проект.

Android Studio использует инструменты Java Develipment Kit в работе. До недавнего времени перед установкой Android Studio нужно было скачать и установить JDK версии 7 или 8 с официального сайта Oracle. Сейчас такой необходимости нет, поскольку Android Studio уже содержит встроенный пакет инструментов JDK.

Если вам необходимо установить официальный JDK, следуйте инструкции Установка JDK (Java Development Kit) на нашем сайте fandroid.info, ссылка под видео.

Установка Android Studio

На данный момент доступна для загрузки версия Android Studio 3.0.

Скачайте дистрибутив для вашей операционной системы

В процессе скачивания можно ознакомится с видео инструкциями по установке Android Studio для вашей операционной системы.

К созданию проекта мы перейдем в следующем уроке, а пока на стартовом экране откройте в меню Configure> SDK Manager, который управляет всеми установленными компонентами среды разработки.

создание android приложения kotlin. Urok 1. Ustanovka i nastrojka Android Studio. создание android приложения kotlin фото. создание android приложения kotlin-Urok 1. Ustanovka i nastrojka Android Studio. картинка создание android приложения kotlin. картинка Urok 1. Ustanovka i nastrojka Android Studio.

На вкладке SDK Platforms можно увидеть, что загружена только последняя версия Android. Нужно пометить для загрузки несколько последних версий, самых популярных на текущий момент, и скачать их. Процесс загрузки и распаковки происходит автоматически, вам следует только набраться терпения и дождаться его окончания. После окончания установки вы увидите в окне SDK Manager, что выбранные компоненты помечены как загруженные.

Самые популярные версии Android на текущий момент можно посмотреть в статистике на официальном сайте https://developer.android.com/about/dashboards/index.html

Возможные проблемы: Если имя пользователя ПК в Windows написано кириллицей, то Android Studio не будет правильно работать, поскольку среда разработки не читает кириллицу в пути к файлам. Переименуйте пользователя английскими буквами.

При возникновении проблем с установкой вы можете задать вопросы в комментариях под видео на канале Start Android и в комментариях ниже. Кроме того, вы можете воспользоваться различными форумами по программированию, такими как StackOverFlow. Обычно бывает достаточно ввести часть текста ошибки в поиске на StackOverFlow, чтобы найти подсказку к решению проблемы.

На этом наш урок подошел к завершению. А на следующем уроке мы создадим проект в среде разработки Android Studio и запустим первое приложение на андроид-устройстве.

Источник

Создаём своё первое приложение для Kotlin Multiplatform

Авторизуйтесь

Создаём своё первое приложение для Kotlin Multiplatform

создание android приложения kotlin. foto 2 scaled e1591889496161. создание android приложения kotlin фото. создание android приложения kotlin-foto 2 scaled e1591889496161. картинка создание android приложения kotlin. картинка foto 2 scaled e1591889496161.

ведущий мобильный разработчик компании Usetech

Основная идея KMP, как и других кросс-платформенных SDK — оптимизация разработки путем написания кода один раз и последующего его использования на разных платформах.

Согласно концепции JetBrains, Kotlin Multiplatform не является фреймворком. Это именно SDK, который позволяет создавать модули с общим кодом, подключаемые к нативным приложениям.

создание android приложения kotlin. pic1. создание android приложения kotlin фото. создание android приложения kotlin-pic1. картинка создание android приложения kotlin. картинка pic1.

Написанный на Kotlin модуль компилируется в JVM байткод для Android и LLVM байткод для iOS.

17 ноября, Онлайн, Беcплатно

Этот модуль (Shared, Common) содержит переиспользуемую бизнес-логику. Платформенные модули iOS/Android, к которым подключен Shared/Common, либо используют написанную логику напрямую, либо имплементируют свою реализацию в зависимости от особенностей платформы.

Общая бизнес-логика может включать в себя:

Также в нее могут входить архитектурные компоненты приложения, напрямую не включающие UI, но с ним взаимодействующие:

Концепцию Kotlin Multiplatform можно сравнить с реализацией Xamarin Native. Однако, в KMP нет модулей или функционала, реализующих UI. Эта логическая нагрузка ложится на подключенные нативные проекты.

Рассмотрим подход на практике и попробуем написать наше первое приложение Kotlin Multiplatform.

Для начала нам потребуется установить и настроить инструменты:

Мы рассмотрим создание проекта с помощью Intelij IDEA.

Выбираем меню File → New → Create Project:

создание android приложения kotlin. pic2. создание android приложения kotlin фото. создание android приложения kotlin-pic2. картинка создание android приложения kotlin. картинка pic2.

В появившемся окне выбираем тип проекта Kotlin → Mobile Android/iOS|Gradle

Далее стандартно задаем путь к JDK, имя и расположение проекта

создание android приложения kotlin. pic3. создание android приложения kotlin фото. создание android приложения kotlin-pic3. картинка создание android приложения kotlin. картинка pic3.

После нажатия кнопки Finish проект сгенерируется и будет почти готов к работе.

Рассмотрим, что у нас получилось:

создание android приложения kotlin. pic4. создание android приложения kotlin фото. создание android приложения kotlin-pic4. картинка создание android приложения kotlin. картинка pic4.

Мультиплатформенные проекты Kotlin обычно делятся на несколько модулей:

В них располагается наша бизнес-логика. Сам код базового примера мы разберем немного позже.

создание android приложения kotlin. pic5. создание android приложения kotlin фото. создание android приложения kotlin-pic5. картинка создание android приложения kotlin. картинка pic5.

Код нативного Android приложения располагается в каталоге main, как если бы мы создавали проект по шаблону обычного Android.

iOS приложение создается автоматически и располагается в каталоге iOSApp:

создание android приложения kotlin. pic6. создание android приложения kotlin фото. создание android приложения kotlin-pic6. картинка создание android приложения kotlin. картинка pic6.

Перед тем, как мы проверим работоспособность базового решения, необходимо сделать следующие финальные настройки:

В local.properties зададим путь к SDK Android:

создание android приложения kotlin. pic7. создание android приложения kotlin фото. создание android приложения kotlin-pic7. картинка создание android приложения kotlin. картинка pic7.

Создадим конфигурацию для работы Android приложения:

создание android приложения kotlin. pic8. создание android приложения kotlin фото. создание android приложения kotlin-pic8. картинка создание android приложения kotlin. картинка pic8.

Теперь вызовем команду gradle wrapper для сборки нашего модуля общей логики:

создание android приложения kotlin. pic9 1. создание android приложения kotlin фото. создание android приложения kotlin-pic9 1. картинка создание android приложения kotlin. картинка pic9 1.

После сборки модуль для бизнес-логики для Android приложения доступен в app/build/libs:

создание android приложения kotlin. pic10. создание android приложения kotlin фото. создание android приложения kotlin-pic10. картинка создание android приложения kotlin. картинка pic10.

Путь к библиотеке прописывается стандартно, в блоке dependencies файла build.gradle:

создание android приложения kotlin. pic11. создание android приложения kotlin фото. создание android приложения kotlin-pic11. картинка создание android приложения kotlin. картинка pic11.

Теперь наш проект сконфигурирован для запуска Android приложения:
создание android приложения kotlin. pic12. создание android приложения kotlin фото. создание android приложения kotlin-pic12. картинка создание android приложения kotlin. картинка pic12.

Осталось сделать настройки для запуска приложения iOS.

В файле build.gradle(:app) необходимо изменить настройку архитектура проекта, чтобы наше приложение поддерживало как реальные устройства, так и эмуляторы.

создание android приложения kotlin. pic13. создание android приложения kotlin фото. создание android приложения kotlin-pic13. картинка создание android приложения kotlin. картинка pic13.

создание android приложения kotlin. pic14. создание android приложения kotlin фото. создание android приложения kotlin-pic14. картинка создание android приложения kotlin. картинка pic14.

После выполнения сборки создастся фреймворк в app/build/bin/ios:

создание android приложения kotlin. pic15. создание android приложения kotlin фото. создание android приложения kotlin-pic15. картинка создание android приложения kotlin. картинка pic15.

Intelij IDEA автоматически создает в gradle файле код для генерации, подключения и встраивания фреймворка в IOS проект:

создание android приложения kotlin. pic16. создание android приложения kotlin фото. создание android приложения kotlin-pic16. картинка создание android приложения kotlin. картинка pic16.

При ручной настройке проекта (например, через Android Studio) этот код потребуется указать самостоятельно.

После синхронизации gradle iOS проект готов к запуску и проверке с помощью XCode.

Проверяем, что у нас получилось. Открываем проект iOS через iosApp.xcodeproj:

создание android приложения kotlin. pic17 autoconverted. создание android приложения kotlin фото. создание android приложения kotlin-pic17 autoconverted. картинка создание android приложения kotlin. картинка pic17 autoconverted.

Проект имеет стандартную структуру, за исключением раздела app, где мы получаем доступ к коду наших модулей на Kotlin.

Фреймворк действительно подключен автоматически во всех соответствующих разделах проекта:

создание android приложения kotlin. pic18. создание android приложения kotlin фото. создание android приложения kotlin-pic18. картинка создание android приложения kotlin. картинка pic18.

Запускаем проект на эмуляторе:

создание android приложения kotlin. pic20. создание android приложения kotlin фото. создание android приложения kotlin-pic20. картинка создание android приложения kotlin. картинка pic20.

Теперь разберем код самого приложения на базовом примере.

Используемую в проекте бизнес-логику можно разделить на:

создание android приложения kotlin. pic21. создание android приложения kotlin фото. создание android приложения kotlin-pic21. картинка создание android приложения kotlin. картинка pic21.

Переиспользуемая логика располагается в проекте commonMain в каталоге kotlin и разделяется на package. Декларации функций, классов и объектов, обязательных к переопределению, помечаются модификатором expect :

создание android приложения kotlin. pic22. создание android приложения kotlin фото. создание android приложения kotlin-pic22. картинка создание android приложения kotlin. картинка pic22.

создание android приложения kotlin. pic23. создание android приложения kotlin фото. создание android приложения kotlin-pic23. картинка создание android приложения kotlin. картинка pic23.

Вызов логики производится в нативном проекте:

создание android приложения kotlin. pic24. создание android приложения kotlin фото. создание android приложения kotlin-pic24. картинка создание android приложения kotlin. картинка pic24.

Теперь попробуем по тем же принципам сделать что-то посложнее и поинтереснее. Например, небольшое приложение для получения и отображение списка новостей для iOS и Android.

Приложение будет иметь следующую структуру:

создание android приложения kotlin. pic25. создание android приложения kotlin фото. создание android приложения kotlin-pic25. картинка создание android приложения kotlin. картинка pic25.

В общей части (Common) расположим бизнес-логику:

В модулях iOS/Android приложений оставим только UI компоненты для отображения списка и адаптеры. iOS часть будет написана на Swift, Android – на Kotlin. Здесь в плане работы не будет ничего нового.

Организуем архитектуру приложений по простому паттерну MVP. Презентер, обращающийся к бизнес-логике, также вынесем в Common часть. Также поступим и с протоколом для связи между презентером и экранами UI:

Начнем с бизнес-логики. Т.к весь функционал будет в модуле common, то мы будем использовать в качестве библиотек решения для Kotlin Multiplatform:

1. Ktor – библиотека для работы с сетью и сериализации.

В build.gradle (:app) пропишем следующие зависимости:

Также добавим поддержку плагина сериализации:

2. Kotlin Coroutines – для организации многопоточной работы.

При добавлении зависимости в iOS проект обратите внимание, что версия библиотеки должна быть обязательно native-mt и совместима с версией плагина Kotlin multiplatform.

В commonMain создадим Dispatchers.kt, где объявим переменные:

Реализация в androidMain создается легко. Для доступа к соответствующим потокам используем CoroutineDispatchers Main (UI поток) и Default (стандартный для Coroutine ):

С iOS труднее. Та версия Kotlin Native LLVM компилятора, которая используется в Kotlin Multiplatform, не поддерживает background очереди. Это давно известная проблема, которая к сожалению, еще не исправлена

Поэтому попробуем обходной маневр как временное решение проблемы.

Также нам понадобится свой scope для работы сетевого клиента:

Android

Применим это при реализации сетевого клиента на Ktor:

Вызывать бизнес-логику будем в презентере. Для полноценной работы с coroutines нам надо будет создать scope:

и добавить его в презентер. Вынесем в базовый класс:

Теперь создадим презентер NewsListPresenter для нашего модуля. В инициализатор передадим defaultDispatcher :

Обратите внимание! Из-за особенностей текущей работы Kotlin Native с многопоточностью в IOS работа с синглтонами может привести к крашу. Поэтому для корректной работы надо добавить аннотацию @ThreadLocal для используемого объекта:

Осталось подключить логику к нативным IOS и Android модулям и обработать ответ от Presenter:

Запускаем сборку common модуля gradle wrapper, чтобы сборки обновились. Проверяем работу приложений:

создание android приложения kotlin. pic26 autoconverted. создание android приложения kotlin фото. создание android приложения kotlin-pic26 autoconverted. картинка создание android приложения kotlin. картинка pic26 autoconverted.

создание android приложения kotlin. pic27 autoconverted. создание android приложения kotlin фото. создание android приложения kotlin-pic27 autoconverted. картинка создание android приложения kotlin. картинка pic27 autoconverted.

Готово. Вы великолепны.

Оба наши приложения работают и работают одинаково.

Информационные материалы, которые использовались:

Источник

Как разработать свое первое приложение для Android на Kotlin

Android становится одной из самых популярных операционных систем в эпоху мобильной разработки. ОС дает разработчикам быстрый выход на рынок (TTM), платформу с открытым исходным кодом, которая может адаптироваться к меняющимся бизнес-требованиям, и возможность развертывания на нескольких платформах.

Это делает Android одним из лучших решений для создания приложений с расширенными функциями.

Приложения для Android написаны на Java или Kotlin. Kotlin становится предпочтительным вариантом для разработчиков приложений, и Google даже объявил, что Kotlin является предпочтительным языком. Сегодня мы расскажем вам, как создать приложение для Android с помощью Kotlin.

История развития Android

создание android приложения kotlin. Istoriya razvitiya Android e1619669678818. создание android приложения kotlin фото. создание android приложения kotlin-Istoriya razvitiya Android e1619669678818. картинка создание android приложения kotlin. картинка Istoriya razvitiya Android e1619669678818.

С момента своего создания в 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 используются несколько языков. Мы обсудим это более подробно позже.

Android Studio поставляется с Android Software Development Kit (SDK), который является важной частью разработки Android. Он включает файлы и библиотеки для создания приложений Android, а также такие инструменты, как диспетчер виртуальных устройств и мост ADB.

Чтобы загрузить Android Studio, перейдите на официальный сайт и следуйте инструкциям, чтобы начать работу в вашей конкретной операционной системе (Windows / Mac / Linux).

Если вы планируете использовать виртуальное устройство Android вместо физического устройства, обратите внимание на дополнительные требования, необходимые для запуска эмулятора.

Особенности Android Studio

В Android Studio есть несколько функций, которые делают его достойной IDE для вашего следующего проекта:

создание android приложения kotlin. V Android Studio est neskolko funktsij kotorye delayut ego dostojnoj e1619669743359. создание android приложения kotlin фото. создание android приложения kotlin-V Android Studio est neskolko funktsij kotorye delayut ego dostojnoj e1619669743359. картинка создание android приложения kotlin. картинка V Android Studio est neskolko funktsij kotorye delayut ego dostojnoj e1619669743359.

Технологии, используемые в разработке под Android

Теперь, когда мы рассмотрели наиболее интересные части Android Studio, давайте узнаем о некоторых языках программирования, с которыми вы столкнетесь как разработчик Android.

Чтобы понять разницу между Kotlin и Java, сравните этот MainActivity.javaфайл и MainActivity.ktфайл Android.

Теперь, когда у нас есть представление о технологиях, которые используются при создании приложения для Android, давайте соберем все это вместе и создадим базовое приложение с использованием Kotlin!

Как настроить ваше первое приложение

Чтобы создать наше первое приложение для Android, мы хотим убедиться, что у вас установлена Android Studio. Перейдите по ссылке в разделе «Установка Android Studio», чтобы настроить среду, если вы еще этого не сделали.

Настройки в Android Studio

Откройте Android Studio. Вам будет предложено несколько вариантов. Мы ищем для создания нового проекта. Когда вы нажмете на эту опцию, вам будет предложено выбрать свой проект.

Есть всевозможные шаблоны экранов, из которых вы можете выбирать. На данный момент выберите «Основные действия» на вкладке «Телефон и планшет».

создание android приложения kotlin. Est vsevozmozhnye shablony ekranov iz kotoryh vy mozhete vybirat. создание android приложения kotlin фото. создание android приложения kotlin-Est vsevozmozhnye shablony ekranov iz kotoryh vy mozhete vybirat. картинка создание android приложения kotlin. картинка Est vsevozmozhnye shablony ekranov iz kotoryh vy mozhete vybirat.

Затем вы будете перенаправлены на экран, на котором вам будет предложено назвать свое приложение, где его сохранить, и должно ли оно быть приложением с поддержкой 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 есть место, где мы можем создавать наши виртуальные телефоны, планшеты и многое другое, чтобы мы могли тестировать на них наши приложения.

Теперь вы готовы эмулировать Android-устройство в Android-эмуляторе! Нажмите кнопку «Воспроизвести» на панели инструментов, чтобы запустить приложение. В шаблоне «Basic Activity» он поставляется с предварительно запеченной базовой панелью навигации, кнопкой действия и TextView с надписью «Hello, World!».

Источник

Как создать приложение для Android на языке Kotlin

Курс по разработке android-приложений на языке Kotlin

создание android приложения kotlin. Razrabotka na Kotlin. создание android приложения kotlin фото. создание android приложения kotlin-Razrabotka na Kotlin. картинка создание android приложения kotlin. картинка Razrabotka na 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 разработка на Kotlin. Часть 1

Данная статья является перевом статьи от Mladen Rakonjac

Очень сложно найти один проект, который охватывал бы всё новое в разработке под Android в Android Studio 3.0, поэтому я решил написать его. В этой статье мы разберём следующее:

создание android приложения kotlin. image loader. создание android приложения kotlin фото. создание android приложения kotlin-image loader. картинка создание android приложения kotlin. картинка image loader.

Каким будет наше приложение?

Наше приложение будет самым простым, которое охватывает все перечисленные выше вещи: у него будет только одна функция, которая извлекает все репозитории пользователя 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 в каждом проекте у вас есть:

В этом приложении мы будем использовать всех их. У них будут отличаться 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 и запустите его. Затем переключитесь на другой и запустите его. Вы должны увидеть два приложения с разными именами.

создание android приложения kotlin. image loader. создание android приложения kotlin фото. создание android приложения kotlin-image loader. картинка создание android приложения kotlin. картинка image loader.

3. ConstraintLayout

Если вы откроете activity_main.xml, вы увидите, что этот layout — ConstrainLayout. Если вы когда-либо писали приложение под iOS, вы знаете об AutoLayout. ConstraintLayout действительно похож на него. Они даже используют один и тот же алгоритм Cassowary.

Constraint помогает нам описать связи между View. Для каждого View у вас должно быть 4 Constraint, один для каждой стороны. В данном случае наш View ограничен родителем с каждой стороны.

Если вы передвинете TextView «Hello World» немного вверх во вкладке Design, во вкладке Text появится новая линия:

создание android приложения kotlin. image loader. создание android приложения kotlin фото. создание android приложения kotlin-image loader. картинка создание android приложения kotlin. картинка image loader.

Вкладки Design и Text синхронизируются. Наши изменения во вкладке Design влияют на xml во вкладке Text и наоборот. Vertical_bias описывает вертикальную тенденцию view его Constraint. Если вы хотите центровать вертикально, используйте:

Давайте сделаем чтобы наш Activity показал только один репозиторий. В нём будут имя репозитория, количество звезд, владелец, и он будет показывать, есть ли у репозитория issues, или нет.

создание android приложения kotlin. image loader. создание android приложения kotlin фото. создание android приложения kotlin-image loader. картинка создание android приложения kotlin. картинка image loader.

Чтобы получить такой layout, xml должен выглядеть так:

Пусть tools:text вас не смущает. Он просто помогает нам видеть хороший предварительный просмотр макета (layout’а).

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

создание android приложения kotlin. image loader. создание android приложения kotlin фото. создание android приложения kotlin-image loader. картинка создание android приложения kotlin. картинка image loader.

и мне кажется, что я могу добиться желаемого результата очень быстро.
Это было небольшое введение в 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.

создание android приложения kotlin. image loader. создание android приложения kotlin фото. создание android приложения kotlin-image loader. картинка создание android приложения kotlin. картинка image loader.

Если вы не выполните сборку проекта, вы не увидите класс 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 позволяет вам вызывать несколько методов на одном экземпляре.

В 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:

Возможно, вы уже слышали об androidweekly.net. Это еженедельный информационный бюллетень об Android разработке. Если вы хотите его получить, вам необходимо подписаться на него, указав свой адрес электронной почты. Позже, если вы захотите, вы можете остановить отказаться от подписки на своем сайте.

Это один из примеров паттерна Observer / Observable. В данном случае, Android Weekly — наблюдаемый (Observable), он выпускает информационные бюллетени каждую неделю. Читатели — это наблюдатели (Observers), они подписываются на него, ждут новых выпусков, и, как только они получают её, они читают её, и если некоторые из них решат, что им это не нравится, он / она может прекратить следить.

Property Observer, в нашем случае, представляет собой XML-макет, который будет прослушивать изменения в экземпляре Repository. Таким образом, Repository является наблюдаемым. Например, как только свойство name класса Repository изменяется в экземпляре класса, xml должен обновится без вызова:

Как сделать это с помощью библиотеки привязки данных? Библиотека привязки данных предоставляет нам класс BaseObservable, который должен быть реализован в классе Repository:

BR — это класс, который автоматически генерируется один раз, когда используется аннотация Bindable. Как вы можете видеть, как только новое значение установлено, мы узнаём об этом. Теперь вы можете запустить приложение, и вы увидите, что имя репозитория будет изменено через 2 секунды без повторного вызова функции executePendingBindings ().

Для этой части это всё. В следующей части я напишу о паттерне MVVM, паттерне Repository и об Android Wrapper Managers. Вы можете найти весь код здесь. Эта статья охватывает код до этого коммита.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *