Forwarded from Kotlin Adept Notes (Alex Panov)
Мы с вами говорили про отличия между платформами, но что говорить о мультиплатформе, если даже на разных Android-устройствах могут быть отличия в поведении, и явным рекордсменом по количеству особенностей являются устройства Xiaomi 🧡
Сегодня поговорим про регулярные выражения и букву ё. Кто ее только не отменял, но Xiaomi пошли дальше всех.
К нам прилетел баг, что при введении ФИО буква ё не проходит валидацию по регулярному выражению. Первое, что приходит в голову, это, что мы написали кривой regex, ведь на самом деле, если использовать такое регулярное выражение
Дальше мы подумали, а что если клавиатура на Xiaomi использует какой-то другой символ ё и мы оказались правы. Действительно стандартная клавиатура использовала
Все дело в клавиатуре, которая выбрана по умолчанию, если поменять клавиатуру на Gboard, то все будет окей. Так что перед проверкой данных нам пришлось делать замену данного символа, чтобы пройти валидацию и на бекенде👍
Давайте порадуемся за Семëна с Xiaomi, теперь у него все будет хорошо🫡
#Android #Regex #Xiaomi
Сегодня поговорим про регулярные выражения и букву ё. Кто ее только не отменял, но Xiaomi пошли дальше всех.
К нам прилетел баг, что при введении ФИО буква ё не проходит валидацию по регулярному выражению. Первое, что приходит в голову, это, что мы написали кривой regex, ведь на самом деле, если использовать такое регулярное выражение
^[а-яА-Я]*$ то буква ё не попадает в этот диапазон и нужно определять ее отдельно, но нет, дело было не в этом.Дальше мы подумали, а что если клавиатура на Xiaomi использует какой-то другой символ ё и мы оказались правы. Действительно стандартная клавиатура использовала
\u00eb символ юникода вместо \u0401Все дело в клавиатуре, которая выбрана по умолчанию, если поменять клавиатуру на Gboard, то все будет окей. Так что перед проверкой данных нам пришлось делать замену данного символа, чтобы пройти валидацию и на бекенде
Давайте порадуемся за Семëна с Xiaomi, теперь у него все будет хорошо
#Android #Regex #Xiaomi
Please open Telegram to view this post
VIEW IN TELEGRAM
👍121
Теперь не нужно ломать голову над тестированием подписок или внутренних покупок вручную. Play Billing Lab позволяет:
✅ Создавать и управлять тестовыми покупками
✅ Легко симулировать разные сценарии оплаты
✅ Быстро находить ошибки интеграции Play Billing Library
✅ Проверять поведение приложения при отмене подписок, возобновлении и других сценариях
И всё это — без реальных платежей и рисков для пользователей.
Приложение прошло мимо меня, а вы уже пользовались этим инструментом? Делитесь впечатлениями и опытом в комментариях!
#android #googleplay
Please open Telegram to view this post
VIEW IN TELEGRAM
👍60🤯1
Начиная, с Android 17 большая часть устройств перейдет на рендеринг UI с OpenGL ES на Vulkan, а поддержку OpenGL будет убрана и станет доступна через ANGLE для трансляции команд в Vulkan.
#android #android17 #vulkan #opengl
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63
Какие преимущества даст переход на Vulkan для отрисовки UI в Android?
🚀 Производительность: Vulkan обеспечивает более эффективную работу с GPU и CPU, сокращая оверхед и повышая FPS. Лучше работает во множество поток
🔋 Энергоэффективность: Снижение нагрузки на процессор ведёт к заметной экономии заряда аккумулятора.
⛏️ Контроль и гибкость: Разработчики получают больше возможностей для тонкой настройки графического рендеринга и оптимизации приложений.
✅ Кроссплатформенность: Vulkan поддерживается на многих платформах, что облегчает переносимость кода и улучшает совместимость приложений.
Аналогичный переход сделала Apple, когда отказалась от OpenGL ES в iOS, заменив его на API Metal, которое призвано выполнять аналогичные функции, что и Vulkan.
#android #vulkan
🚀 Производительность: Vulkan обеспечивает более эффективную работу с GPU и CPU, сокращая оверхед и повышая FPS. Лучше работает во множество поток
🔋 Энергоэффективность: Снижение нагрузки на процессор ведёт к заметной экономии заряда аккумулятора.
⛏️ Контроль и гибкость: Разработчики получают больше возможностей для тонкой настройки графического рендеринга и оптимизации приложений.
✅ Кроссплатформенность: Vulkan поддерживается на многих платформах, что облегчает переносимость кода и улучшает совместимость приложений.
Аналогичный переход сделала Apple, когда отказалась от OpenGL ES в iOS, заменив его на API Metal, которое призвано выполнять аналогичные функции, что и Vulkan.
#android #vulkan
👍46
JSpecify — стандартизация Java-аннотаций для статического анализа кода и взаимодействия между языками JVM.
Если вы знакомы с Java или изучали исходный код, то одним из решений проблемы null является использование аннотаций nullability. Однако реализаций таких аннотаций много: JetBrains, Android Jetpack, Spring, Uber и другие создали свои версии.
Решений очень много, и возникла проблема выбора и поддержки. Хотелось бы иметь стандарт в Java, но договориться не удалось.
Консорциум компаний и команд из Google, JetBrains, Meta, Kotlin, Android, Spring, PMD, Sonar, EISOP и других объединился и создал единый стандарт, который обязуются поддерживать в своих решениях.
JSpecify 1.0 сосредоточен на nullability и содержит четыре аннотации: @NonNull, @Nullable, @NullMarked, @NullUnmarked.
Интеграция уже началась в библиотеки Jetpack Android и Kotlin.
#java
Если вы знакомы с Java или изучали исходный код, то одним из решений проблемы null является использование аннотаций nullability. Однако реализаций таких аннотаций много: JetBrains, Android Jetpack, Spring, Uber и другие создали свои версии.
Решений очень много, и возникла проблема выбора и поддержки. Хотелось бы иметь стандарт в Java, но договориться не удалось.
Консорциум компаний и команд из Google, JetBrains, Meta, Kotlin, Android, Spring, PMD, Sonar, EISOP и других объединился и создал единый стандарт, который обязуются поддерживать в своих решениях.
JSpecify 1.0 сосредоточен на nullability и содержит четыре аннотации: @NonNull, @Nullable, @NullMarked, @NullUnmarked.
Интеграция уже началась в библиотеки Jetpack Android и Kotlin.
#java
👍42
Это означает, что API теперь стабильны и готовы к продакшену. Если ваш Android-приложение работает с фитнес- и медицинскими данными, самое время интегрировать Health Connect.
Что это дает?
👉 Унифицированный доступ к данным с разных устройств и приложений
👉 Гибкое управление разрешениями на доступ к данным
👉 Поддержка более 100 типов данных (фитнес, сон, питание и др.)
Что нового в бете?
📌 Оптимизированное управление разрешениями – теперь проще запрашивать доступ к нужным данным
📌 Повышенная производительность – быстрее синхронизация и работа с БД
📌 Совместимость с Android 14+
Если у вас фитнес-приложение, пора переходить на Health Connect, чтобы работать с данными пользователей эффективнее.
#android #jetpack #HealthConnect
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25
Если ищете легковесное и современное приложение для заметок, которое можно кастомизировать или доработать под свои нужды, OpenNote-Compose — отличный вариант!
Что внутри?
✅ Хранение заметок с Room
🌙 Тёмная тема
✅ Минималистичный и удобный интерфейс
#android #opensource #пример
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25
This media is not supported in your browser
VIEW IN TELEGRAM
В больших проектах на Gradle одной из самых долгих является фаза конфигурации проекта, во время которой создаются все задачи и устанавливаются связи между ними.
Команда Gradle уже давно работает над решением этой проблемы с помощью Gradle Configuration Cache — возможности сохранять результаты фазы конфигурации и повторно использовать их в последующих запусках.
В блоге Gradle вышла подробная статья о текущем состоянии этой функции: State of the Configuration Cache. Согласно статье, начиная с Gradle 9
В одном из будущих мажорных релизов после Gradle 9, Configuration Cache станет единственным доступным режимом работы — но только после того, как к этому будет готово всё сообщество.
До этого момента Gradle будет активно улучшать технологию и сотрудничать с партнёрами для расширения совместимости и интеграций.
#gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42
Что нового
👉 Поддержка тематических картинок
👉 Лучшее разделение папок с настройками для разных установленных версий Android Studio
👉 Библиотека запросов для AI (готовые и можете добавить свои)
Читаю обновления и совсем печально по фичам 😢
#android #androidstudio
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22
This media is not supported in your browser
VIEW IN TELEGRAM
Cursor Talk to Figma MCP (Model Context Protocol) - интеграция между Cursor AI и Figma, позволяющая из Cursor AI делать макеты в Figma
#figma #ai
#figma #ai
👍47
Что рассматривается в статье:
👉 Эволюция системы разрешений: От первоначальной модели, где разрешения предоставлялись при установке приложения, до текущей системы, введённой в Android 6.0 (Marshmallow), где разрешения запрашиваются во время выполнения, обеспечивая больший контроль и прозрачность для пользователей.
👉 Типы разрешений: Обычные (normal) и Опасные (dangerous)
👉 Разрешение‑подпись (signature permission)
👉 Специальные (special) разрешения
👉 Рекомендации для разработчиков по работе с разрешениями
#android #безпопасность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍48
Вышел Dagger 2.56
В новой версии Dagger нет новых фичей, а вот то что может сломать код есть
👉 В рамках поддержки Jakarta: удалили старый способ создания Factory (возможно, отвалится код под старые версии Dagger) и больше нельзя использоваться dagger.internal.Provider
👉 В Kotlin исходниках при использовании для multibinding теперь НАДО использовать Set/MAP из kotlin.collections, а не версии из java.util
🛠 Исправили немного багов
#di #java
В новой версии Dagger нет новых фичей, а вот то что может сломать код есть
👉 В рамках поддержки Jakarta: удалили старый способ создания Factory (возможно, отвалится код под старые версии Dagger) и больше нельзя использоваться dagger.internal.Provider
👉 В Kotlin исходниках при использовании для multibinding теперь НАДО использовать Set/MAP из kotlin.collections, а не версии из java.util
🛠 Исправили немного багов
#di #java
👍16
Вышла первая Canary версия Android Studio Narwhal
Самое важное изменение - строится на основе Idea 2025.1 в которой улучшили поддержку Kotlin K2 компилятора, появилось автоматическое обновление плагинов без перезагрузки
#androidstudio
Самое важное изменение - строится на основе Idea 2025.1 в которой улучшили поддержку Kotlin K2 компилятора, появилось автоматическое обновление плагинов без перезагрузки
#androidstudio
👍42
Как лучше сообщать о события UI в логику?
Я встречал 2 подхода о том как сообщают о событии в UI в логику, например ViewModel
или
Какой подход и почему предпочитаете вы? Делитесь в комментариях под опросом
Я встречал 2 подхода о том как сообщают о событии в UI в логику, например ViewModel
// Подход "Через методы"
class MyViewModel : ViewModel() {
fun onButtonClicked() { ... }
}
или
// Подход "Через события"
sealed interface MyEvent {
class OnButtonClick() : MyEvent
}
class MyViewModel : ViewModel() {
fun onEvent(event: MyEvent) {
when(event) {
is OnButtonClick -> { ... }
}
}
}
Какой подход и почему предпочитаете вы? Делитесь в комментариях под опросом
👍33
Какой подход для обработки UI событий выбираете вы?
Anonymous Poll
37%
Подход "Через методы"
53%
Подход "Через события"
3%
Другой подход
8%
Не участвую в опросе
2👍11
Важное изменение - ускорение KAPT из-за перехода под капотом на K2 компилятор.
#kotlin #kapt
Please open Telegram to view this post
VIEW IN TELEGRAM
👍35
Demeter - open source библиотека от разработчиков из Яндекс для замера производительности работы Android приложения во время работы, чтобы после анализировать проблемы
Библиотека предназначена для использования в дебажных сборках приложения. Добавление в прод на свой страх и риск!
#android #производительность #opensource
Библиотека предназначена для использования в дебажных сборках приложения. Добавление в прод на свой страх и риск!
#android #производительность #opensource
👍37
