Android Broadcast
14.5K subscribers
3.83K photos
397 videos
11 files
6.3K links
Подборка новостей и статей для Android разработчиков.

Реклама и связь с автором @ab_manager

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
Media is too big
VIEW IN TELEGRAM
📹 Стратегии тестирования Android (EN, 8м)

Оптимизируйте тестирование Android с помощью масштабируемой стратегии, которая поможет управлять нагрузкой на тесты вашего приложения и конфигурациями устройств. От понимания пирамиды тестирования до использования таких инструментов, как Robolectric и Gradle Managed Devices, вы узнаете, как принимать обоснованные решения для повышения надежности и эффективности тестирования. Узнайте, почему ручного тестирования недостаточно, и как автоматизация может сэкономить время и улучшить качество кода.

0:00 - Введение
0:41 - Зачем мы тестируем?
1:21 - Стратегии тестирования
3:06 - Область применения vs. Размер
5:45 - Категории
7:49 - Заключение

🔗 Стратегии тестирования

#android #тестирование
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Релиз Jetpack Health Connect Client 1.0

Google выпустила первую стабильную версию Jetpack Health Connect Client — библиотеки, которая упрощает доступ к данным о здоровье и активности пользователя через платформу Health Connect.

Health Connect — это единый слой доступа к данным здоровья на Android. Он агрегирует информацию от разных приложений (Google Fit, Samsung Health, Fitbit и др.) и даёт централизованный, безопасный способ работы с ними.


Библиотека connect-client — это Jetpack-обёртка над этим API, которая делает интеграцию максимально простой и безопасной.

Что умеет Jetpack Health Connect Client 1.0:
👉 Читать и записывать данные: шаги, калории, пульс, сон, тренировки, вес и многое другое (всего 40+ типов данных)
👉 Запрашивать данные по временным диапазонам и фильтрам
👉 Управлять разрешениями на доступ к чувствительным данным — всё централизовано и прозрачно
👉 Удалять данные (в том числе выборочно)
👉 Поддерживает suspend-методы и удобные Kotlin API

Подробнее читайте в документации

#android #jetpack #wear
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 История того как интеграция Passkey + Jetpack Credential Manager ускорило логин и увеличило успешные попытки входа

Passkey — это современный способ аутентификации, который позволяет пользователям входить в приложения и сайты без паролей, используя биометрию (Face ID, отпечаток пальца) или пин-код устройства.


Также в статье есть краткая инструкция и лучшие практики. Подробнее в документации

#android #passkey
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
‼️ Все Android приложения должны обеспечить поддержку работы на устройствах с размером страницы памяти 16KB

Изменение размера страницы в памяти от 4 KB в 16 KB даст для приложений:
🚀 Ускорения запуска приложений
🔋 Сокращение расхода батареи
📷 Ускорение включения камеры
📱 Ускорение запуска системы

Новая требование Google Play обязует реализовать поддержку работы всех новых приложений и обновлений с targetSdk 35 (Android 15). Изменение вступает в силу с 1 ноября 2025 года

Что нужно делать
👉 Обновить библиотеки с нативынм кодом до версий с поддержку нового размера страницы
👉 Перекомпилировать свой нативный код на C/C++ с последней версией инструментов

В Google Play в AppBundle Explorer вы будете видеть совместимо ли ваше приложение cо страницей размера 16KB.

Полезные ссылки
🔗 Как адаптировать приложение
🔗 Как провести тестирование приложения на таком устройстве
🔗 Подробная документация по 16Kb page size

#android #googleplay #ndk
Please open Telegram to view this post
VIEW IN TELEGRAM
Минусы повышения размера страницы памяти

⚠️ Мелкие объекты “тратят” больше памяти.
Если в 4 КБ-странице лежало 5 мелких объектов, в 16 КБ — может быть “пустого” пространства больше. Но в современных условиях прирост производительности важнее.

⚠️ Нужна поддержка от железа.
Процессор и ядро должны поддерживать размер страницы 16 КБ — это не просто «переключатель» в настройках.

#android #ndk
🏝 Как правильно подписываться на данные для UI (EN,16м)

Очень классная статья от @nek_12_personal про лучшие практики для загрузки данных из UI, чтобы не выполнять лишнюю работу и не занимать ресурсы, когда UI не показывается

Чего следует избегать
1️⃣Ранняя загрузка данных в init блоке ViewModel
Запуск загрузки данных в блоке init может привести к устаревшей информации при возвращении пользователя к экрану после длительного отсутствия.

2️⃣Ручное управление обновлением данных из UI (например, вызовом в onResume)
Такой подход может вызвать множественные параллельные запросы, что увеличивает нагрузку на систему и усложняет управление состоянием.

3️⃣Постоянное наблюдение за потоками (Flow) без учёта жизненного цикла UI
Сбор данных в viewModelScope без учёта видимости UI может привести к утечкам памяти и избыточному потреблению ресурсов.

4️⃣Инициирование загрузки данных из UI-компонентов
Перенос логики загрузки данных в UI нарушает принцип разделения ответственности и усложняет архитектуру приложения.

Все подробности в статье, которую рекомендую вам изучить подробно!

🔗 Альтернативная ссылка

#kotlin #android #coroutines
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 Как правильно конвертировать Flow в StateFlow

Для конвертации холодного Flow в горячий StateFlow для работы с состоянием (обычно происходит в ViewModel) стоит использовать оператор Flow<T>.stateIn(), с заданием политики запуска SharingStarted.WhileSubscribed
flow..stateIn(
scope = viewModelScope,
initialValue, // задаём начальное значение
started = SharingStarted.WhileSubscribed(
stopTimeoutMillis = 5.seconds,
replayExpirationMillis = 5.seconds,
),
)


SharingStarted.WhileSubscribed() — умный способ включать сбор данных только когда есть подписчики, и автоматически останавливать его, когда они исчезают. Важно настроить несколько значений:

👉 Параметр stopTimeoutMillis - задаем какое время пройдет после того как пропадет последний подписчик чтобы остановить StateFlow. По умолчанию стоит 0 мс, но Google рекомендует выставлять 5 секунд. Это позволит не останавливать Flow при пересоздании UI при смене конфигурации или если пользователь быстро свернул/развернул приложений.

👉 Параметр replayExpirationMillis - указывает через какое время после остановки сбросить кэш значений StateFlow и начать с начала, а именно initialValue

#kotlin #coroutines
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 Рассказали про возможности для работы со съемкой видео с помощью CameraX и редактированием видео через Jetpack Media3. Уже вполне можно накладывать эффекты и править видео

#android #jetpack #media3 #camerax
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
🖌 Figma Make - новый AI инструмент от Figma для генерации UI и кода для прототипов на их основе

#figma #ai
Please open Telegram to view this post
VIEW IN TELEGRAM
🤖 Project Mainline - важная веха в развитии Android и монополизации ОС компанией Google

До Android 10 фреймворк ОС был монолитным и любое изменение приводили к необходимости раздачи новой версии вендором.

Google выделила во фреймворке (и продолжает делать) компоненты и теперь может обновлять их независимо. Делать это может вендор или приложение с высокими системными правами, например Google Play Services.

Благодаря изменению, теперь не нужно ждать новой версии прошивки от вендора, а вы получите новую версию компонентов и даже портирование новых API из более поздних версий ОС. Так например было с Photo Picker, который появился в Android 14, но его перенесли и на Android 12+, благодаря тому что был сделан модуль медиа, частью которого и есть Photo Picker.

Более подробно читайте в документации

#androidos #android
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯 SOLID все. Берите CLARITY

C – Consistent abstraction levels
L – Limit interfaces
A – API over implementation
R – Reduce dependency complexity
I – Isolate dependency creation
T – Take exceptions when justified
Y – You decide

Берем?
⚙️ Как работает запрос фокуса в Compose (18М)

Продолжение серии статей. Во второй части погружаются в то как устроена работа фокуса на Compose, а именно что происходит при запросе фокуса, вызовом requestFocus(), и что делается под капотом этого API

В первой части рассмотрели API для работы с фокусом в Compose

#android #androidtv #compose
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🤖 Редизайн Android - Material 3 Expressive

В рамках The Android Show I/O Edition показали "самый большой редизайн Android за всё время" (со слов спикера). Нас ждет Material 3 Expressive - обновленная версия Material 3 на основе существующих токенов

Буду садиться разбираться и рассказывать на 🪙 Boosty про что будет в обновлении

#android #android16 #material #ui #material3expressive
Please open Telegram to view this post
VIEW IN TELEGRAM