android_its | Unsorted

Telegram-канал android_its - Android разработка

4971

все о Android разработке @itchannels_telegram - 🔥 лучшие it каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - ml 📚 @pythonlbooks -📚books

Subscribe to a channel

Android разработка

💻 KODEIN — удобная библиотека Kotlin для управления зависимостями

dependencies {
implementation 'org.kodein.di:KODEIN:7.21.1'
}


KODEIN (Kotlin Dependency Injection) — это полезная библиотека для инъекции/получения зависимостей, она очень прост в использовании и настройке.

KODEIN позволяет:
— не заботиться о порядке инициализации зависимостей

— легко привязывать классы или интерфейсы к их экземплярам, или фабрикам

При этом KODEIN предлагает очень простой и читаемый декларативный DSL, эта библиотека не подвержена стиранию типов (как Java), прекрасно интегрируется с Android, предлагает идиоматический API в стиле Kotlin.

KODEIN можно использовать с Java.

Пример, показывающий всю мощь KODEIN:
val di = DI {
bindProvider<Dice> { RandomDice(0, 5) }
bindSingleton<DataSource> { SqliteDS.open("path/to/file") }
}

class Controller(private di: DI) {
private val ds: DataSource by di.instance()
}


🖥 GitHub
🟡 Доки

@android_its

Читать полностью…

Android разработка

💻 kotlin-logging — легковесный фреймворк для логгирования, написанный на чистом Kotlin

implementation 'io.github.oshai:kotlin-logging-jvm:5.1.0'

kotlin-logging предоставляет обертку для slf4j-api для использования классами Kotlin; при этом kotlin-logging имеет такие преимущества:
— нет необходимости писать шаблонный код, содержащий имя логгера и класса или имя логгера
— простой способ регистрации сообщений в виде строки с ленивой оценкой с помощью лямбда-выражения {}
— все предыдущие реализации slf4j по-прежнему могут быть использованы

🖥 GitHub
🟡 Wiki

@android_its

Читать полностью…

Android разработка

💻 LeakCanary — библиотека Kotlin для обнаружения утечек памяти

При анализе кода LeakCanary опирается на внутреннее устройство Android Framework, что позволяет определить причину каждой утечки
В итоге можно свести к минимуму количество зависаний, Application Not Responding и сбоев OutOfMemoryError

🖥 GitHub

@android_its

Читать полностью…

Android разработка

💻 fmodel — функциональное, алгебраическое и реактивное моделирование доменов с помощью Kotlin

Библиотека fmodel написана на чистом Kotlin без зависимостей

🖥 GitHub
🟡 Страничка fmodel

@android_its

Читать полностью…

Android разработка

💻 detekt — статический анализатор кода на Kotlin

brew install detekt

detekt предоставляет высококонфигурируемые наборы правил, имеет бесшовную интеграцию с Gradle от первого лица с помощью плагина Gradle, и предоставляет ещё массу возможностей.
Поддерживает различные форматы отчетов: HTML, Markdown, SARIF, XML (Checkstyle) и кастомные форматы.

🖥 GitHub
🟡 Доки

@android_its

Читать полностью…

Android разработка

💻 Кинетические часы — интересный проект на Kotlin

Отличная идея для пет-проекта)
Создано с использованием Compose Desktop

🖥 GitHub

@android_its

Читать полностью…

Android разработка

💻 Вопрос на засыпку: какого типа x = null + null?

▶️Какой тип имеет x в выражении:

val x = null + null



▶️Это довольно забавная функция из стандартной библиотеки Kotlin. Вот ее сигнатура:
public operator fun String?.plus(other: Any?): String

Левый аргумент может принимать все строки плюс null, а правый — вообще любые значения Kotlin, включая null.

Поэтому исходное выражение аналогично такой записи:
val s: String? = null
val x: String = s + null


🟡Или же проверить тип x можно вот так:
fun main() {
val x = null + null
println(x::class.simpleName)
}

// String


@android_its

Читать полностью…

Android разработка

💻 Каррирование в Kotlin

Kotlin поддерживает парадигму функционального программирования (ФП). Часто объектно ориентированный подход (ООП) ставят в противовес ФП, но они не соперники и могут дополнить друг друга. Одно из понятий ФП — каррирование функций.

Например, преобразование функции в вид f(a)(b) называется каррированием в честь Хаскелла Карри.

// Пример каррированной функции с применением fun
fun f(a: Int) = { b: Int -> a + b }

// Пример каррированной функции с применением переменной
val f2: (Int) -> (Int) -> Int = { b -> { a -> a + b } }


▶️ Погружение в каррирование в Kotlin

@android_its

Читать полностью…

Android разработка

💻 Kotlin Coding Conventions

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

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

Комментарии к документации, использование иммутабельных данных и значения параметров по умолчанию

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

Рекомендации по использованию функций расширения, инфиксных функций и фабричных функций

Пишите код и помните: однажды работать с ним будет маньяк, который знает, где вы живёте)

📎 Читать

@android_its

Читать полностью…

Android разработка

💻 Из Figma в Composable: как работать с плагином Relay в Android Studio

Одна из основных задач Android-разработчика — перенос компонентов пользовательского интерфейса из Figma в Composable-функции в Android Studio. Это можно делать вручную или использовать специальные плагины. Один из них — Relay для Android Studio. О Relay как раз и идёт речь в статье

Что внутри:
— Relay и для чего он нужен
— Как его установить
— Как настроить проект
— Как создать новостное приложение с помощью Relay

📎 Статья

@android_its

Читать полностью…

Android разработка

💻 KMP vs Flutter: 4 сценария, когда нужно сделать ставку на Kotlin Multiplatform, а не Flutter

Держите полезную статью
Кроссплатформенные инструменты помогают бизнесу не писать код два раза под iOS и Android, а переиспользовать его на обеих платформах. В статье — о том, чем Kotlin Multiplatform отличается от Flutter и в каких случаях он переигрывает и уничтожает Flutter.

▶️Некоторые выводы из статьи

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

Однако если у вас:
— премиальный продукт и вы хотите повысить комфорт пользователя
— есть планы нанять разработчиков в штат
— в команде есть готовые разработчики на Android и iOS
— уже есть нативное приложение
— вам нужно использование Bluetooth, приём звонков и другие нативные фичи
то лучше использовать KMP, позволяющий создать максимально привычный интерфейс

📎 Статья

@android_its

Читать полностью…

Android разработка

📱 Автоматизируем рутину в Android-разработке: плагин для создания шаблонного кода на примере создания -api -impl модулей

Держите полезную статью о том, как можно автоматизировать повторяющуюся работу в андроид-разработке при помощи плагина для Android Studio.
Показывается, как можно создать свой шаблон модулей используя api wizard template, проблемы с которыми придётся столкнуться (в основном это ограниченный функционал api) и как можно их обойти.

📎 Статья

@android_its

Читать полностью…

Android разработка

💻 Конструкторы-самозванцы в Kotlin

Держите полезную статью о том, как можно нестандартно использовать функции верхнего уровня в Kotlin. О чём пойдёт речь в статье?

В Kotlin возможны конструкции, которые могут выглядеть как вызовы конструкторов, но не являются таковыми

Функции верхнего уровня в Kotlin разрешены и не ограничены регистром именования

Использование оператора Companion.invoke() может быть полезно для контроля создания объектов в статическом контексте

Оператор receiver(Context) Companion.invoke() позволяет делегировать создание объектов в локальном контексте

📎 Статья

@android_its

Читать полностью…

Android разработка

Mobox — полезная утилита для запуска windows x86 приложений на Android.

Проект работает через Termux, используя Box64 и Wine. Имеет простой и быстрый процесс установки.

@android_its

Читать полностью…

Android разработка

💻 Немного о конструкции when в Kotlin

Конструкция when проверяет значение некоторого объекта и в зависимости от его значения выполняет тот или иной код. Конструкция when аналогична конструкции switch в других языках. Формальное определение:

when(объект){
значение1 -> действия1
значение2 -> действия2
...
значениеN -> действияN
}


Если значение объекта равно одному из значений в блоке кода when, то выполняются соответствующие действия, которые идут после оператора -> после соответствующего значения:
fun main() {
val isEnabled = true
when(isEnabled){
false -> println("isEnabled off")
true -> println("isEnabled on")
}
}

Здесь в качестве объекта в конструкцию when передается переменная isEnabled. Далее ее значение по порядку сравнивается со значениями в false и true. В данном случае переменная isEnabled равна true, поэтому будет выполняться код:
println("isEnabled on")



Выражение else

В примере выше isEnabled имела только 2 возможных варианта: true и false. Однако чаще бывают случаи, когда значения в блоке when не покрывают все возможные значения объекта. Дополнительное выражение else позволяет задать действия, которые выполняются, если объект не соответствует ни одному из значений:
val a = 30
when(a){
10 -> println("a = 10")
20 -> println("a = 20")
else -> println("неопределенное значение")
}

То есть в данном случае если переменная a равна 30, поэтому она не соответствует ни одному из значений в блоке when. И соответственно будут выполняться инструкции из выражения else.

Если надо, чтобы при совпадении значений выполнялось несколько инструкций, то для каждого значения можно определить блок кода:
var a = 10
when(a){
10 -> {
println("a = 10")
a *= 2
}
20 -> {
println("a = 20")
a *= 5
}
else -> { println("неопределенное значение")}
}
println(a)


📎 Читать подробнее

@android_its

Читать полностью…

Android разработка

💻 Compose Destinations — библиотека обработки аннотаций для безопасной с точки зрения типов навигации Jetpack Compose, не содержащая шаблонов

Compose Destinations обрабатывает аннотации и генерирует код, использующий официальную навигацию Jetpack Compose под капотом. Эта библиотека позволяет не писать вручную сложный, небезопасный и шаблонный код.

При этом Compose Destinations легко освоить — большинство API либо такие же, как в Jetpack Components, либо вдохновлены ими.

🖥 GitHub

@android_its

Читать полностью…

Android разработка

💻 Ktor — это асинхронный open-source фреймворк для создания микросервисов, веб-приложений и многого другого

Ktor позволяет создавать асинхронные клиентские и серверные приложения. Все, от микросервисов до многоплатформенных клиентских приложений HTTP.
Полностью написан на Kotlin.

🖥 GitHub
🟡 Доки

@android_its

Читать полностью…

Android разработка

💻 Coil — библиотека загрузки изображений для Android, основанная на корутинах Kotlin

Фичи Coil (Coroutine Image Loader):

Скорость: Coil выполняет ряд оптимизаций, включая кэширование памяти и диска, понижение дискретизации изображения в памяти, автоматическую приостановку/отмену запросов и многое другое.

Лёгкость: Coil добавляет ~2000 методов в ваш APK (для приложений, которые уже используют OkHttp и Coroutines), что сравнимо с Picasso и значительно меньше, чем Glide и Fresco.

Простота использования: API Coil использует возможности языка Kotlin для простоты и минимального количества косяков.

Современность: Coil ориентирован на Kotlin и использует современные библиотеки, включая Coroutines, OkHttp, Okio и AndroidX Lifecycles.

🖥 GitHub

@android_its

Читать полностью…

Android разработка

💻 Exposed — ORM библиотека для Kotlin

val exposed_version = "0.50.0"
dependencies {
implementation("org.jetbrains.exposed", "exposed-core", exposed_version)
implementation("org.jetbrains.exposed", "exposed-dao", exposed_version)
implementation("org.jetbrains.exposed", "exposed-jdbc", exposed_version)
}


Exposed — это легковесная библиотека SQL поверх драйвера JDBC для Kotlin. Exposed имеет два варианта доступа к базам данных: облегченный ORM (с использованием DAO) и безопасный для типов SQL (с использованием DSL).

Exposed можно использовать для имитации различных движков баз данных, что позволяет создавать приложения без зависимости от конкретного движка и переключаться между ними с минимальными изменениями или вообще без них.

Поддерживает MariaDB, MySQL, Oracle, Postgres, SQLite, Microsoft SQL Server

🖥 GitHub

@android_its

Читать полностью…

Android разработка

🔥🔥🔥 Google объявила конкурс для всех разработчиков Gemini API с призовым фондом в $3 млн и Custom Electric 1981 DeLorean (Легендарная машина из фильма Назад в будущее)

В рекламе снялся легендарный Кристофер Ллойд, актер снимавшийся в трилогии Назад в будущее.

🛻 Главный приз: полностью электрическая версия DeLorean 1981, произведенная на заказ.

Общий призовой фонд: $3 млн.

Конкурс Google Gemini API открыт как для отдельных участников, так и для команд. Разработчикам предлагается создать и представить приложения с использованием API Gemini.

⚡️Критерии оценки

Google оценивает приложения по пяти основным критериям:

* Креативность
* Полезность
* Исполнение
* Новизна
* Влияние

Компания будет выбирать приложения, которые:

*Ииспользуют API Gemini
* Решают реальные проблемы
* Оригинальны и хорошо продуманы
* Дают потяьный пользовательский опыт

Призы

В рамках конкурса также будут вручаться денежные призы в различных категориях:

* Лучшее приложение для Android
* Лучшее веб-приложение
* Лучшая игра

Кроме того, будут присуждаться крупные денежные призы за:

* Самое полезное приложение
* Самое эффективное приложение
* Самое креативное приложение

Крайний срок подачи заявок

Крайний срок подачи заявок: 12 августа 2024 года.

Онлайн-голосование в категории «Выбор пользователей» ожидается 16 августа.

В остальных категориях победителей выберет внутренняя команда Google. Результаты конкурса Gemini API будут объявлены в октябре.

📌 Подать заявку: https://ai.google.dev/competition?hl=ru
📌 Видео: https://www.youtube.com/watch?v=_cZa_7KaQ3c&amp;t=18s

@ai_machinelearning_big_data

Читать полностью…

Android разработка

📱 Google меняет способ обновления Android Studio с помощью Feature Drops

Google обновляет цикл выпуска инструмента для создания приложений Android Studio. С помощью Feature Drops разработчики получат «более частые и целенаправленные обновления».

Первое обновление включает новейшие возможности платформы IntelliJ IDEA компании Jetbrains, на которой основана Android Studio. Сюда входят «улучшения удобства использования, производительности и стабильности», такие как обновления терминала и редактора.
Эти изменения появятся в стабильном канале быстрее, чем это происходило ранее.

Затем последует выпуск функций, в том числе инструментов, помогающих тестировать/оптимизировать форм-фактор большого экрана. Бета-версия станет доступна вскоре после того, как обновление платформы IDE выйдет в стабильном канале. В предстоящем выпуске функций Koala Feature Drop будут добавлены:

— новый процесс входа в систему, который значительно упрощает подключение к нескольким сервисам Google, таким как Firebase и Gemini, в Android Studio;

— ярлыки настроек пользовательского интерфейса в окне работающего устройства для быстрого тестирования приложения на соответствие различным настройкам пользовательского интерфейса;

— шаблон Gemini API, который поможет внедрить генеративный искусственный интеллект в приложение.

Дополнительные функции будут анонсированы на I/O 2024, то есть в ближайший вторник

📎 Подробнее

@android_its

Читать полностью…

Android разработка

💻 Что такое Kotlin Channel?

При использовании корутин в Kotlin рано или поздно появляется вопрос о том, какие примитивы необходимо использовать для передачи потоков данных между несколькими корутинами.
Для этого в библиотеке kotlinx.coroutines имеется специальный механизм, который так и называется — Channel.

▶️ Посмотрим на него поподробнее

@android_its

Читать полностью…

Android разработка

💻 Статические методы и синхронизация в Котлин

На собеседовании может всплыть вопрос в духе: "Что будет являться монитором для блока кода, помеченного сразу двумя аннотациями @Synchronized и @JvmStatic в Котлин?".
Держите полезную статью, в которой рассматривается, для чего используются данные аннотации и каким будет результат при их одновременном использовании.

А пока немного о @Synchronized и @JvmStatic:

🟡Аннотация @Synchronized в Kotlin является аннотацией для методов и блоков кода, которая обеспечивает синхронизацию доступа к ним между потоками. Когда метод или блок кода помечены аннотацией @Synchronized, только один поток может получить право их выполнения в определенный момент времени, остальные потоки будут ожидать освобождения монитора, прежде чем получить доступ. Это позволяет избежать состояния гонки и обеспечить правильное выполнение кода в многопоточной среде.

🟡Аннотация @JvmStatic в Kotlin указывает компилятору, что функция или свойство должны быть статическими в Java-коде после компиляции. Когда мы используем @JvmStatic перед функцией или свойством в объекте- компаньоне или внутри объекта, компилятор Kotlin создает соответствующий статический элемент в Java-коде. Это позволяет вызывать этот элемент напрямую из Java-кода, без необходимости ссылаться на экземпляр класса или объекта.

📎 Статья

@android_its

Читать полностью…

Android разработка

📱 Android-приложение для демонстрации работы основных функций SDK на Kotlin

Отличная идея для пет-проекта;
описание возможностей приложения:
• Инициализация платежа
• Отмена платежа
• Возврат платежа
• Проведение клиринга
• Проведение рекуррентного платежа
• Получение информации/статуса платежа
• Добавление карт/Удаление карт
• Оплата добавленными картами
• Безакцептные платежи
• Создание платежа с Google Pay

🖥 GitHub

@android_its

Читать полностью…

Android разработка

💻 RecyclerView — реализация прослушивателя щелчка по элементу в Android Studio

Держите годный пошаговый гайд по созданию RecyclerView на Kotlin в Android Studio.

План туториала:
├╼ Создание базового шаблона элемента
├╼ Реализация адаптера для ресайклью
├╼ Реализация ресайклью и переход на новую активити
├╼ Создание элемента в ресайквью
├╼ Обработка клика
├╼ Создание инфо элемента
╰╼ Реализация клика

📎 Ссылка

@android_its

Читать полностью…

Android разработка

Пишете на Swift под iOS? Или на Java/Kotlin под Android? Для вас есть работа в Тинькофф.

18 и 19 мая пройдет Mobile Weekend Offer для разработчиков с опытом от 3 лет. Так можно попасть в команду еще быстрее: пройти все этапы собеседования за выходные и получить оффер на неделе.

Если устроитесь, будете решать сложные финтех-задачи, развивать продукты для миллионов и расти в сильной команде. Топовый стек, достойная оплата и ДМС со стоматологией тоже будут.

Проверьте свои силы — оставьте заявку до 15 мая

АО «Тинькофф Банк», ИНН 7710140679

Читать полностью…

Android разработка

💻 Как создать свой View в Android Studio + Kotlin (XML)

Отличное видео о том, как работать с View в Android Studio.
Самое то, для тех, кто только вливается в эту тему

Что внутри?
• Создание кастомного View
• Рисование примитивных фигур
• Работа с системой координат
• Рисование круга с помощью Canvas
• Настройка координат и цвета
• Использование Style для настройки цвета

📎 Кликабельный план
📎 YouTube

@android_its

Читать полностью…

Android разработка

💻 Запуск Kotlin кода без IDE

▶️Итак, вопрос: как скомпилировать простенький код написанный на Kotlin без IDE?


▶️Вот пошаговая инструкция:

1. Загрузить компилятор. Найти последнюю версию можно здесь.

2. Распаковать компилятор в отдельную папку, добавить bin директорию в переменную окружения PATH. Об этом можно почитать тут. Bin содержит скрипты, необходимые для сборки и запуска кода на Windows, OS X и Linux.
Другой вариант установки компилятора: для OS X, Linux, Cygwin, FreeBSD или Solaris (возможно, и другие UNIX-системы), то можно использовать SDKMAN https://sdkman.io/.
Запускаем в терминале:

$ curl -s https://get.sdkman.io | bash

Затем следуем инструкциям. Потом потребуется открыть новое окно терминала и установить Kotlin с помощью команды:
$ sdk install kotlin


▶️Теперь кратко о создании и запуске простого приложения.

1. Создаем файл - `hello.kt` со следующим кодом:
fun main(args: Array<String>) {
println("Hello, World!")
}


2. Компилируем, используя командную строку:
$ kotlinc hello.kt -include-runtime -d hello.jar

Подробнее о флагах компиляции можно почитать в мане:
$ kotlinc -help


3. Запускаем приложение:
$ java -jar hello.jar


📎Более подробно о других вариантах установки компилятора, компиляции библиотек, запуске Kotlin-скриптов и прочем в доках

@android_its

Читать полностью…

Android разработка

📱 Интересная статья о написании профайлера для анализа Android-приложения с помощью Kotlin

Некоторые мысли из статьи, и о чём вообще в ней речь:

Аудит приложения важен для выявления неявных деградаций в производительности.

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

Существующие инструменты Android Profile, Battery Historian и Systrace имеют свои минусы.

В частности, Android Profiler имеет наглядные графики и обширный функционал, но у него отсутствует гибкость в сборке метрик.

Systrace позволяет собирать и инспектировать время работы частей кода по всем процессам на девайсе.

Battery Historian нужен для получения дополнительной информации по работе приложения, такой как процент потребления батарейки и условия, влияющие на потребление.

В статье представлены коды для фиксации значений потребления CPU, памяти, сети и потребления батареи.

Кастомное решение имеет ряд преимуществ по отношению к Android Profiler, включая отсутствие крашей, замедлений приложения и гибкость в сборе метрик.

📎 Статья

@android_its

Читать полностью…

Android разработка

📱 Zxing QR сканер (Jetpack compose) | Android Studio & Kotlin

Годный контент!
В этом видео описывается создание простого приложения — сканера QR-кодов на Jetpack Compose и Android Studio при помощи библиотеки ZXing.
Параллельно добавляется Room + Hilt для записи отсканированных кодов в БД.

📎 Кликабельный план видео
📎 YouTube

@android_its

Читать полностью…
Subscribe to a channel