4971
все о Android разработке @itchannels_telegram - 🔥 лучшие it каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - ml 📚 @pythonlbooks -📚books
💻 kotlin-inject — библиотека Kotlin для dependency injection
Строительным блоком kotlin-inject является компонент, который объявляется с помощью аннотации @Component в абстрактном классе, реализация этого компонента будет сгенерирована
В этом компоненте можно объявить абстрактные свойства, доступные только для чтения, или функции, возвращающие экземпляр заданного типа. И kotlin-inject разберётся, как сконструировать этот тип
🖥 GitHub
🟡 Доки
@android_its
🖥 Вот как легко можно записывать и воспроизводить аудио в Android
GitHub https://github.com/philipplackner/AudioRecorder
https://www.youtube.com/watch?v=4MJFmhcONfI
#Android
@android_its
💻 FileKit — библиотека Kotlin, которая позволяет вам выбирать и сохранять файлы простым способом
Позволяет выбирать отдельные файлы, или целые папки, позволяет учитывать нужный формат (скажем, только .png)
Для каждой платформы FileKit использует собственный API для выбора файлов, чтобы обеспечить корректную работу.
🖥 GitHub
🟡 Затестить, как это работает
@android_its
🖥 Релиз Winlator 7.0, окружения для запуска Windows-приложений в Android, написанного на Java (и C)
Состоялся релиз открытого проекта окружения для запуска Windows-приложений в Android под названием Winlator 7.0.
Проект Android-приложения Winlator 7.0 (размер APK-пакета составляет 251 МБ) предоставляет собой обвязку над Wine и эмуляторами Box86/Box64 для выполнения Windows-приложений на платформе Android.
Инструмент Winlator разворачивает Linux-окружение на базе Ubuntu с Mesa, DXVK, D8VK, Vkd3d и CNC DDraw, в котором при помощи эмулятора и Wine на ARM-устройствах с Android выполняются Windows-приложения, собранные для архитектуры x86.
🖥 Исходный код проекта написан на языках C и Java и опубликован на GitHub под лицензией MIT.
@android_its
⚡️Руководитель команд разработки и один из разработчиков мобильного приложения Яндекс Карт рассказали, как они росли вместе с проектом. Подробнее в карточках.
Хотите так же? Это возможно 💯
Команда мобильной разработки Карт и Навигатора расширяется, и мы ищем:
➡️iOS-разработчика
#Москва #Белград #iOS
Что вы будете делать: участвовать в разработке мобильного приложения для iOS, глубоко прорабатывать задачи команды, совершенствовать процессы и инфраструктуру разработки.
➡️Android-разработчика
#Москва #Android
Что вы будете делать: участвовать в разработке мобильного приложения для Android, помогать расширять возможности существующих сценариев и создавать новые.
Приходите, будем расти вместе💪
Реклама. ООО "Яндекс", ИНН 7736207543.
💻 FlorisBoard — open-source клавиатура на Kotlin
В FlorisBoard большой упор сделан на приватность и конфиденциальность, поэтому можно без проблем использовать её в своих Kotlin проектах.
FlorisBoard поддерживается устройствами на базе Android 7.0+; проект активно развивается, сейчас находится в ранней бета-версии
🖥 GitHub
🟡 F-Droid
@android_its
💻 Compose Destinations — библиотека обработки аннотаций для безопасной с точки зрения типов навигации Jetpack Compose, не содержащая шаблонов
Compose Destinations обрабатывает аннотации и генерирует код, использующий официальную навигацию Jetpack Compose под капотом. Эта библиотека позволяет не писать вручную сложный, небезопасный и шаблонный код.
При этом Compose Destinations легко освоить — большинство API либо такие же, как в Jetpack Components, либо вдохновлены ими.
🖥 GitHub
@android_its
💻 Ktor — это асинхронный open-source фреймворк для создания микросервисов, веб-приложений и многого другого
Ktor позволяет создавать асинхронные клиентские и серверные приложения. Все, от микросервисов до многоплатформенных клиентских приложений HTTP.
Полностью написан на Kotlin.
🖥 GitHub
🟡 Доки
@android_its
💻 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
💻 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)
}
🔥🔥🔥 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&t=18s
@ai_machinelearning_big_data
📱 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
💻 Что такое Kotlin Channel?
При использовании корутин в Kotlin рано или поздно появляется вопрос о том, какие примитивы необходимо использовать для передачи потоков данных между несколькими корутинами.
Для этого в библиотеке kotlinx.coroutines имеется специальный механизм, который так и называется — Channel.
▶️ Посмотрим на него поподробнее
@android_its
💻 Статические методы и синхронизация в Котлин
На собеседовании может всплыть вопрос в духе: "Что будет являться монитором для блока кода, помеченного сразу двумя аннотациями @Synchronized и @JvmStatic в Котлин?".
Держите полезную статью, в которой рассматривается, для чего используются данные аннотации и каким будет результат при их одновременном использовании.
А пока немного о @Synchronized и @JvmStatic:
🟡Аннотация @Synchronized в Kotlin является аннотацией для методов и блоков кода, которая обеспечивает синхронизацию доступа к ним между потоками. Когда метод или блок кода помечены аннотацией @Synchronized, только один поток может получить право их выполнения в определенный момент времени, остальные потоки будут ожидать освобождения монитора, прежде чем получить доступ. Это позволяет избежать состояния гонки и обеспечить правильное выполнение кода в многопоточной среде.
🟡Аннотация @JvmStatic в Kotlin указывает компилятору, что функция или свойство должны быть статическими в Java-коде после компиляции. Когда мы используем @JvmStatic перед функцией или свойством в объекте- компаньоне или внутри объекта, компилятор Kotlin создает соответствующий статический элемент в Java-коде. Это позволяет вызывать этот элемент напрямую из Java-кода, без необходимости ссылаться на экземпляр класса или объекта.
📎 Статья
@android_its
📱 Android-приложение для демонстрации работы основных функций SDK на Kotlin
Отличная идея для пет-проекта;
описание возможностей приложения:
• Инициализация платежа
• Отмена платежа
• Возврат платежа
• Проведение клиринга
• Проведение рекуррентного платежа
• Получение информации/статуса платежа
• Добавление карт/Удаление карт
• Оплата добавленными картами
• Безакцептные платежи
• Создание платежа с Google Pay
🖥 GitHub
@android_its
💻 KotlinPoet — это Kotlin и Java API для генерации исходных файлов `.kt`
<dependency>
<groupId>com.squareup</groupId>
<artifactId>kotlinpoet-jvm</artifactId>
<version>[version]</version>
</dependency>
💻 0day в Pixel: Google выпускает экстренный патч для своих смартфонов
Вслед за уже привычным Patch Tuesday от Microsoft, компания Google также выпустила обновления для устранения 50 уязвимостей безопасности в своих устройствах Pixel и предупредила, что одна из них, отслеживаемая как CVE-2024-32896, представляет собой ошибку повышения привилегий (EoP) и уже использовалась в реальных атаках в качестве Zero-day уязвимости.
«Есть признаки того, что CVE-2024-32896 уже могла быть использована ранее в ограниченных целевых атаках», — предупредила компания. «Все поддерживаемые устройства Google получат обновление до уровня патча 2024-06-05. Мы призываем всех пользователей Pixel незамедлительно установить эти обновления на свои устройства».
Google также отметила 44 других ошибки безопасности, непосредственно касающиеся устройств Pixel. Семь из них представляют собой уязвимости повышения привилегий и считаются критическими.
Устройства Pixel, хотя и работают на Android, получают отдельные обновления безопасности и исправления ошибок, отличные от стандартных ежемесячных патчей, распространяемых для всех производителей Android-устройств. Это связано с их эксклюзивными функциями и возможностями, а также уникальной аппаратной платформой, контролируемой лично Google.
Более подробную информацию об июньских обновлениях для Pixel можно найти в бюллетене безопасности, посвящённом смартфонам Google. А чтобы применить обновление, пользователям Pixel необходимо перейти в «Настройки» > «Безопасность и конфиденциальность» > «Система и обновления» > «Обновление безопасности», нажать «Установить» и перезагрузить устройство для завершения процесса обновления.
@android_its
Последняя неделя регистрации на Yandex BDUI Conf! 🎉
22 июня Яндекс проведёт большую конференцию для мобильных разработчиков по BDUI
Вместе со спикерами из Яндекса, Яндекс Маркета, Авито, X5 Tech и ВСК будем разбираться, как с помощью бэкенда сделать красивые и функциональные приложения. В программе:
— 2 трека с докладами: продуктовый и инфраструктурный;
— активности от Яндекс Маркета с подарками;
— экскурсия по офису Яндекса на «Парке культуры»;
— афтерпати с нетворкингом и музыкой.
Зарегистрироваться можно на сайте конференции. Она пройдёт 22 июня в Москве в «Экстрополисе». Если не получится присутствовать очно, присоединяйтесь к нашей трансляции!
До встречи на Yandex BDUI Conf — будет здорово! 👋
💻 ImageToolbox — мощный open-source редактор изображений на Kotlin
ImageToolbox может обрезать картинки, применять фильтры, добавлять другие изображения, удалять фон, редактировать EXIF и даже создавать PDF-файлы
🖥 GitHub
@android_its
💻 voyager — мультиплатформенная навигационная библиотека для Jetpack Compose
Позволяет создавать масштабируемые приложения на Kotlin на основе удобного API
🖥 GitHub
@android_its
💻 KODEIN — удобная библиотека Kotlin для управления зависимостями
dependencies {
implementation 'org.kodein.di:KODEIN:7.21.1'
}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()
}
💻 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
💻 LeakCanary — библиотека Kotlin для обнаружения утечек памяти
При анализе кода LeakCanary опирается на внутреннее устройство Android Framework, что позволяет определить причину каждой утечки
В итоге можно свести к минимуму количество зависаний, Application Not Responding и сбоев OutOfMemoryError
🖥 GitHub
@android_its
💻 fmodel — функциональное, алгебраическое и реактивное моделирование доменов с помощью Kotlin
Библиотека fmodel написана на чистом Kotlin без зависимостей
🖥 GitHub
🟡 Страничка fmodel
@android_its
💻 detekt — статический анализатор кода на Kotlin
— brew install detekt
detekt предоставляет высококонфигурируемые наборы правил, имеет бесшовную интеграцию с Gradle от первого лица с помощью плагина Gradle, и предоставляет ещё массу возможностей.
Поддерживает различные форматы отчетов: HTML, Markdown, SARIF, XML (Checkstyle) и кастомные форматы.
🖥 GitHub
🟡 Доки
@android_its
💻 Кинетические часы — интересный проект на Kotlin
Отличная идея для пет-проекта)
Создано с использованием Compose Desktop
🖥 GitHub
@android_its
💻 Вопрос на засыпку: какого типа x = null + null?
▶️Какой тип имеет x в выражении:
val x = null + null
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
💻 Каррирование в Kotlin
⏩Kotlin поддерживает парадигму функционального программирования (ФП). Часто объектно ориентированный подход (ООП) ставят в противовес ФП, но они не соперники и могут дополнить друг друга. Одно из понятий ФП — каррирование функций.
⏩Например, преобразование функции в вид f(a)(b) называется каррированием в честь Хаскелла Карри.
// Пример каррированной функции с применением fun
fun f(a: Int) = { b: Int -> a + b }
// Пример каррированной функции с применением переменной
val f2: (Int) -> (Int) -> Int = { b -> { a -> a + b } }
💻 Kotlin Coding Conventions
Соглашения в сфере разработки призваны помочь разработчикам писать понятный друг для друга код, в статье речь именно об этом.
Если вы только переходите от написания пет-проектов к работе над чем-то более серьёзным — загляните по ссылке в конце
Затрагиваются такие очевидные и не совсем вещи:
⏩Правила форматирования кода, отступы, фигурные скобки, использование замыкающих запятых
⏩Комментарии к документации, использование иммутабельных данных и значения параметров по умолчанию
⏩Особенности Kotlin, такие как использование именованных аргументов и условных операторов
⏩Рекомендации по использованию функций расширения, инфиксных функций и фабричных функций
Пишите код и помните: однажды работать с ним будет маньяк, который знает, где вы живёте)
📎 Читать
@android_its
💻 Из Figma в Composable: как работать с плагином Relay в Android Studio
⏩Одна из основных задач Android-разработчика — перенос компонентов пользовательского интерфейса из Figma в Composable-функции в Android Studio. Это можно делать вручную или использовать специальные плагины. Один из них — Relay для Android Studio. О Relay как раз и идёт речь в статье
Что внутри:
— Relay и для чего он нужен
— Как его установить
— Как настроить проект
— Как создать новостное приложение с помощью Relay
📎 Статья
@android_its