«Внешняя» навигация в многомодульном проекте на Kotlin
Я Дмитрий Воронов из Doubletapp, в этой статье расскажу, как мы делали навигацию в Яндекс Путешествиях. С навигацией в Android, кажется, давно все ясно: бери Jetpack Navigation, читай официальную документацию и следуй ей — и все получится. Если рекомендованная библиотека не подходит — берешь Fragment Manager, прописываешь собственную реализацию и идешь хвастаться коллегам. Если писать свою реализацию нет желания, а официальная библиотека не соответствует модным веяниям — дополняешь свое резюме умением работать с Cicerone. Если твои вкусы специфичны — почему бы не удивить людей неожиданным добавлением в проект Alligator?
https://habr.com/ru/companies/doubletapp/articles/732816/
✍️ @kotlin_lib
Я Дмитрий Воронов из Doubletapp, в этой статье расскажу, как мы делали навигацию в Яндекс Путешествиях. С навигацией в Android, кажется, давно все ясно: бери Jetpack Navigation, читай официальную документацию и следуй ей — и все получится. Если рекомендованная библиотека не подходит — берешь Fragment Manager, прописываешь собственную реализацию и идешь хвастаться коллегам. Если писать свою реализацию нет желания, а официальная библиотека не соответствует модным веяниям — дополняешь свое резюме умением работать с Cicerone. Если твои вкусы специфичны — почему бы не удивить людей неожиданным добавлением в проект Alligator?
https://habr.com/ru/companies/doubletapp/articles/732816/
✍️ @kotlin_lib
👍4
Koin: Простой и легковесный фреймворк для внедрения зависимостей
Этот легковесный фреймворк предоставляет возможности для внедрения зависимостей через DSL, что является нетривиальной задачей в случае Java-ориентированного Guice.
https://www.baeldung.com/kotlin/koin-di
✍️ @kotlin_lib
Этот легковесный фреймворк предоставляет возможности для внедрения зависимостей через DSL, что является нетривиальной задачей в случае Java-ориентированного Guice.
https://www.baeldung.com/kotlin/koin-di
✍️ @kotlin_lib
Baeldung on Kotlin
Koin: Lightweight Dependency Injection Framework | Baeldung on Kotlin
A practical introduction to Koin - lightweight dependency injection framework for Kotlin.
❤2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Kotlin с нуля
Урок 0: Ставим среду разработки и запускаем проект
Урок 1: Что такое переменные и их типы, val и var
Урок 2: Арифметические операции, остаток от деления
Урок 3: Интерполяция (шаблонные строки). Конкатенация
Урок 4: Операторы сравнения (отношения), логические операторы
Урок 5: Условные операторы if else when. Операции ветвления
Урок 6: Циклы while, do-while. Обратный отсчет с Thread.sleep()
Урок 7: Цикл for, диапазоны (интервалы). break, continue, return
Урок 8: Массивы. Типы, размер, индекс массива. Перебор через for
Урок 9: Коллекции: списки (List). Функции для работы с коллекциями
Урок 10: Функции (методы), тип возвращаемого значения, return
Урок 11: ООП. Классы и свойства. Создание объектов (экземпляров класса).
Урок 12: Конструкторы (primary, secondary). Блоки инициализации init.
Урок 13: Null Safety – операторы ?. !!, NullPointerException (NPE)
Урок 14: ООП. Наследование. open class. Переопределение (override)
Урок 15: Интерфейсы, абстрактные классы. Имплементация.
Урок 16: ООП. Инкапсуляция. Модификаторы доступа
Урок 17: Сеттеры и Геттеры, field, как их кастомизировать
Урок 18: ООП. Полиморфизм, 3 типа (Ad hoc, Subtyping, Parametric)
Урок 19: ENUM (классы перечислений), TODO() и тип Nothing
Урок 20: Лямбда-функции (лямбды), анонимные функции
Урок 21: Extensions (функции-расширения, экстеншены)
Урок 22: Data class (дата классы) copy, toString, equals, hashCode
Теория разработки программ. Создание телеграм бота // Практика KotlinSprint
Все видео доступны на youtube
✍️ @kotlin_lib
Урок 0: Ставим среду разработки и запускаем проект
Урок 1: Что такое переменные и их типы, val и var
Урок 2: Арифметические операции, остаток от деления
Урок 3: Интерполяция (шаблонные строки). Конкатенация
Урок 4: Операторы сравнения (отношения), логические операторы
Урок 5: Условные операторы if else when. Операции ветвления
Урок 6: Циклы while, do-while. Обратный отсчет с Thread.sleep()
Урок 7: Цикл for, диапазоны (интервалы). break, continue, return
Урок 8: Массивы. Типы, размер, индекс массива. Перебор через for
Урок 9: Коллекции: списки (List). Функции для работы с коллекциями
Урок 10: Функции (методы), тип возвращаемого значения, return
Урок 11: ООП. Классы и свойства. Создание объектов (экземпляров класса).
Урок 12: Конструкторы (primary, secondary). Блоки инициализации init.
Урок 13: Null Safety – операторы ?. !!, NullPointerException (NPE)
Урок 14: ООП. Наследование. open class. Переопределение (override)
Урок 15: Интерфейсы, абстрактные классы. Имплементация.
Урок 16: ООП. Инкапсуляция. Модификаторы доступа
Урок 17: Сеттеры и Геттеры, field, как их кастомизировать
Урок 18: ООП. Полиморфизм, 3 типа (Ad hoc, Subtyping, Parametric)
Урок 19: ENUM (классы перечислений), TODO() и тип Nothing
Урок 20: Лямбда-функции (лямбды), анонимные функции
Урок 21: Extensions (функции-расширения, экстеншены)
Урок 22: Data class (дата классы) copy, toString, equals, hashCode
Теория разработки программ. Создание телеграм бота // Практика KotlinSprint
Все видео доступны на youtube
✍️ @kotlin_lib
👍7
Как реализовать биометрическую аутентификацию в Android с помощью Kotlin
Биометрическая аутентификация позволяет пользователям получать доступ к своим приложениям, используя свои уникальные характеристики, такие как отпечатки пальцев, лица или радужная оболочка глаза. Библиотека Biometric предоставляет единый API для сильной и слабой биометрии. Для этого мы будем использовать API BiometricPrompt.
В документации по Android описаны три различных типа аутентификации для биометрической аутентификации.
Простыми словами, эти типы аутентификации следующие:
Сильная: этот тип аутентификации требует от пользователя предоставления сильной биометрии, например отпечатка пальца или сканирования радужной оболочки глаза, которую сложнее подделать или обойти. Он обеспечивает высокий уровень безопасности и подходит для приложений, работающих с конфиденциальными данными или транзакциями.
Слабая: Слабая биометрическая аутентификация включает в себя менее надежные методы, например распознавание лица, которые легче обойти или обмануть по сравнению с сильными методами аутентификации. Этот тип аутентификации подходит для приложений с более низкими требованиями к безопасности.
Учетные данные устройства: Этот тип аутентификации не использует биометрические данные, а полагается на защиту устройства, например PIN-код, пароль или шаблон. Он может использоваться в качестве запасного варианта, когда биометрическая аутентификация недоступна или не подходит для пользователя или устройства.
https://johncodeos.com/how-to-implement-biometric-authentication-in-android-using-kotlin/
✍️ @kotlin_lib
Биометрическая аутентификация позволяет пользователям получать доступ к своим приложениям, используя свои уникальные характеристики, такие как отпечатки пальцев, лица или радужная оболочка глаза. Библиотека Biometric предоставляет единый API для сильной и слабой биометрии. Для этого мы будем использовать API BiometricPrompt.
В документации по Android описаны три различных типа аутентификации для биометрической аутентификации.
Простыми словами, эти типы аутентификации следующие:
Сильная: этот тип аутентификации требует от пользователя предоставления сильной биометрии, например отпечатка пальца или сканирования радужной оболочки глаза, которую сложнее подделать или обойти. Он обеспечивает высокий уровень безопасности и подходит для приложений, работающих с конфиденциальными данными или транзакциями.
Слабая: Слабая биометрическая аутентификация включает в себя менее надежные методы, например распознавание лица, которые легче обойти или обмануть по сравнению с сильными методами аутентификации. Этот тип аутентификации подходит для приложений с более низкими требованиями к безопасности.
Учетные данные устройства: Этот тип аутентификации не использует биометрические данные, а полагается на защиту устройства, например PIN-код, пароль или шаблон. Он может использоваться в качестве запасного варианта, когда биометрическая аутентификация недоступна или не подходит для пользователя или устройства.
https://johncodeos.com/how-to-implement-biometric-authentication-in-android-using-kotlin/
✍️ @kotlin_lib
👍9👏1
SKIE - инструмент для соединения Kotlin и Swift API для Kotlin Multiplatform, был выпущен с открытым исходным кодом. Это критически важный инструмент для любого разработчика или команды, вызывающей Kotlin-код из Swift.
https://touchlab.co/skie-is-open-source
Installation https://skie.touchlab.co/Installation
✍️ @kotlin_lib
https://touchlab.co/skie-is-open-source
Installation https://skie.touchlab.co/Installation
✍️ @kotlin_lib
Using Kover for Effective Code Coverage in Kotlin Projects
https://orashar.medium.com/using-kover-for-effective-code-coverage-in-kotlin-projects-67d92de93099
✍️ @kotlin_lib
https://orashar.medium.com/using-kover-for-effective-code-coverage-in-kotlin-projects-67d92de93099
✍️ @kotlin_lib
👍2
Kotlin Sealed Interfaces: A Deep Dive into a Powerful New Feature
https://blog.devgenius.io/kotlin-sealed-interfaces-a-deep-dive-into-a-powerful-new-feature-98dfe69077f
✍️ @kotlin_lib
https://blog.devgenius.io/kotlin-sealed-interfaces-a-deep-dive-into-a-powerful-new-feature-98dfe69077f
✍️ @kotlin_lib
Создаем нативное Kotlin приложение на Spring Boot Native, Gradle и GraalVM без докера под MacOS и Windows
В этой статье я хочу рассказать о практическом опыте нативной компиляции production приложения, написанного на Kotlin со Spring Boot, Gradle с использованием GraalVM . Начну сразу с минусов и плюсов самой возможности нативной компиляции и где она может быть полезна, и дальше перейду уже непосредственно к процессу сборки под MacOS и Windows.
В конце статьи я более подробно расскажу о проекте и почему возникла такая необходимость, учитывая довольно много ограничений и подводных камней поддержки нативной компиляции как со стороны Spring Boot, та и со стороны GraalVM.
https://habr.com/ru/articles/760074/
✍️ @kotlin_lib
В этой статье я хочу рассказать о практическом опыте нативной компиляции production приложения, написанного на Kotlin со Spring Boot, Gradle с использованием GraalVM . Начну сразу с минусов и плюсов самой возможности нативной компиляции и где она может быть полезна, и дальше перейду уже непосредственно к процессу сборки под MacOS и Windows.
В конце статьи я более подробно расскажу о проекте и почему возникла такая необходимость, учитывая довольно много ограничений и подводных камней поддержки нативной компиляции как со стороны Spring Boot, та и со стороны GraalVM.
https://habr.com/ru/articles/760074/
✍️ @kotlin_lib
👍3
Media is too big
VIEW IN TELEGRAM
Как собрать iOS-фреймворк из исходных файлов на Kotlin
Вячеслав Кормушкин, RetailNext
Вячеслав рассказал, как собрать iOS-фреймворк из исходных файлов на Kotlin. Обсудил, какие типы фреймворков можно сгенерировать и чем они отличаются, а также рассмотрел, как фреймворк подключается в Xcode проект.
00:00 Вступление
01:38 Kotlin Multiplatform Mobile
02:36 Особенности KMM
04:11 Магические процессы фреймворка
10:40 Gradle
15:36 Universal Framework
17:19 XCFramework
22:22 Плагин для Android Studio
22:23 KDoctor
24:11 Заключение
источник
✍️ @kotlin_lib
Вячеслав Кормушкин, RetailNext
Вячеслав рассказал, как собрать iOS-фреймворк из исходных файлов на Kotlin. Обсудил, какие типы фреймворков можно сгенерировать и чем они отличаются, а также рассмотрел, как фреймворк подключается в Xcode проект.
00:00 Вступление
01:38 Kotlin Multiplatform Mobile
02:36 Особенности KMM
04:11 Магические процессы фреймворка
10:40 Gradle
15:36 Universal Framework
17:19 XCFramework
22:22 Плагин для Android Studio
22:23 KDoctor
24:11 Заключение
источник
✍️ @kotlin_lib
👍4
Kotlin Contracts
Одной из самых загадочных возможностей Kotlin являются контракты Kotlin Contracts. Большинство разработчиков используют их, даже не зная, как они работают и как их определить. Контракты Kotlin делают компилятор Kotlin умнее и позволяют нам делать то, что иначе было бы невозможно. Но прежде чем мы увидим их в действии, давайте начнем с определения контракта, которое можно найти в некоторых stdlib-функциях Kotlin.
https://kt.academy/article/ak-contracts
✍️ @kotlin_lib
Одной из самых загадочных возможностей Kotlin являются контракты Kotlin Contracts. Большинство разработчиков используют их, даже не зная, как они работают и как их определить. Контракты Kotlin делают компилятор Kotlin умнее и позволяют нам делать то, что иначе было бы невозможно. Но прежде чем мы увидим их в действии, давайте начнем с определения контракта, которое можно найти в некоторых stdlib-функциях Kotlin.
https://kt.academy/article/ak-contracts
✍️ @kotlin_lib
👍3
Реализуем современный UI на Jetpack Compose
Всем привет, на связи Никита Пятаков, Android-разработчик в МТС Диджитал. В этой статье я расскажу вам о том, как в приложении Мой МТС была проведена работа над UI новой карточки услуги.
Рассказ мой будет последовательным – сначала про саму задачку, потом про решение, которое разбито на подпункты.
https://habr.com/ru/companies/ru_mts/articles/761580/
✍️ @kotlin_lib
Всем привет, на связи Никита Пятаков, Android-разработчик в МТС Диджитал. В этой статье я расскажу вам о том, как в приложении Мой МТС была проведена работа над UI новой карточки услуги.
Рассказ мой будет последовательным – сначала про саму задачку, потом про решение, которое разбито на подпункты.
https://habr.com/ru/companies/ru_mts/articles/761580/
✍️ @kotlin_lib
👍5