Android Broadcast
14.4K subscribers
3.69K photos
369 videos
11 files
6.12K links
Подборка новостей и статей для Android разработчиков.

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

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
🚀 Cash App перевел Android-приложение на Metro — новый DI фреймворк для Kotlin

Команда Cash App (Block) успешно мигрировала своё Android-приложение с Anvil/Dagger на Metro — современный фреймворк для dependency injection, разработанный Zac Sweers.

Metro — это compile-time DI фреймворк, вдохновленный Dagger и Anvil, но реализованный как Kotlin compiler plugin. Он Kotlin-first, поддерживает K2 и работает значительно быстрее традиционных решений. Вобрал в себя всё лучшее от Dagger, Anvil и Kotlin-Inject

Почему перешли на Metro?
- Скорость сборки — ускорение инкрементальных сборок на ~60%
- Поддержка Kotlin K2 — возможность использовать новейший компилятор Kotlin
- Упрощение стека — отказ от kapt и Java-ориентированных инструментов
- Современный подход — Kotlin-first дизайн и улучшенный DX
- Более строгая валидация DI-графа
- Улучшена безопасность типов (нуллабельность)
- Поддержка KMP

📊 Результаты по скорости сборки:
- Инкрементальные сборки → ускорение на 58-60%
- Чистые сборки → ускорение на 17%
- ABI-изменения → сборка за 11.9s вместо 28.8s

Миграция 1500 модулей проводилась постепенно с двойной поддержкой двух DI фреймворков для безопасного перехода. В зависимости от настройки Gradle менялся DI и генерация кода.

Впервые вижу подход, когда был описан граф для 2 разных DI с целью постепенной миграции. Миграцию с Koin на Metro так не сделать, но вот с Koin Annotations на Metro вполне может получится.

#DI #KMP #Dagger #Metro #Android #AndroidDev #Anvil
👍44🔥185👎1
🤖 Новые способы защиты в Android 16 от malware, которое злоупотребляет Accessibility

В Android уже давно существует системная проблема - вредоносные приложения используют Accessibility API не для доступности, а для атак: скрытое считывание текста с экрана, автоматические клики по кнопкам без ведома пользователя, подмена пользовательских действий и обход бизнес-логики и другие.

В Android 16 добавили возможность запрещать доступ к элементам UI в приложениях

accessibilityDataSensitive - новый флаг позволяет явно пометить UI-элемент как содержащий чувствительные данные. Accessibility-сервисы не могут читать или взаимодействовать с этим элементом, за исключением — легитимные сервисы доступности (screen readers и т.п.),

filterTouchesWhenObscured (был до Android 16) - когда у View (или окна) включён filterTouchesWhenObscured = true, то система игнорирует touch события, если в момент касания поверх окна есть другое приложение. Так делают злоумышленники для перехвата касаний, показывая прозрачный overlay

Использовать нужно на:
👉 экранах логина,
👉 платежных формах,
👉 экранах с персональными и финансовыми данными.

// Защита от tapjacking
val composeView = LocalView.current

DisposableEffect(Unit) {
composeView.filterTouchesWhenObscured = true
onDispose {
composeView.filterTouchesWhenObscured = false
}
}


// Защита чувствительных данных
BasicText(
text = "Password",
modifier = Modifier.semantics {
sensitiveData = true
}
)


<TextView
android:filterTouchesWhenObscured="true" />

<TextView
android:accessibilityDataSensitive="true" />


// Через код
view.filterTouchesWhenObscured = true
view.isAccessibilityDataSensitive = true


Новые возможности на заменяет FLAG_SECURE, а дополняет его

#Android #Android16 #Безопасность #AndroidDev
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4213🔥2👎1
‼️ RuStore отключает API биллинга у разработчиков, оформленными как самозанятые, с февраля 2026

На сайте документации магазина можно найти официальное письмо. Отключается не просто возможность совершения покупок в приложениях/играх, а всё API биллинга, что не позволит разработчикам даже проверять статус уже совершённых покупок.

Как именно это будет работать с 1 февраля 2026:

Останется доступным:
- Публикация и обновление приложений
- Альтернативные способы монетизации (вне платежных инструментов RuStore)
- Возвраты по ранее совершённым платежам
- Переводы платных приложений в бесплатные по запросу

Будет отключено:
- BillingClient SDK и Pay SDK — полностью
- Платные приложения автоматически скроются с витрины
- Списания по активным подпискам будут остановлены
- Проверка статуса уже совершённых покупок станет невозможной

ОСНОВНЫЕ ПРИЧИНЫ ОТКЛЮЧЕНИЯ:

1. Ужесточение регуляции статуса самозанятых в РФ (2026+).
2. Усиление требований регуляторов к платёжным системам
3. Предотвращение репутационных и юридических рисков из-за работы с самозанятыми

ЧТО ДЕЛАТЬ РАЗРАБОТЧИКАМ:

Вариант 1: Переход на ИП/ООО (рекомендуется). Не откладывайте! Регистрация ИП требует времени. Лучше начать процесс в конце 2025 года, чтобы успеть до февраля 2026.
Вариант 2: Регистрация ООО/ИП и перевод приложения на новое юр.лицо
Вариант 3: Сделать приложение бесплатным и перейти на другой биллинг

СРОКИ И ВАЖНЫЕ ДАТЫ:


📅 1 февраля 2026 — дата отключения API биллинга для самозанятых
📅 1 апреля 2026 — дедлайн для выплаты заработанных до этого средств

Более детальная информация доступна в официальной документации

Для связи с поддержкой RuStore: 📧 support@rustore.ru

Я обращусь к представителю RuStore, чтобы получить официальную позицию от магазина

#RuStore #Android #Монетизация
🎉19👍74👎4
Android Broadcast
‼️ RuStore отключает API биллинга у разработчиков, оформленными как самозанятые, с февраля 2026 На сайте документации магазина можно найти официальное письмо. Отключается не просто возможность совершения покупок в приложениях/играх, а всё API биллинга, что…
Если убрать эмоции, то вся история с RuStore выглядит, увы, довольно «типовой».

С одной стороны, у самозанятых уже давно очень ограниченный перечень деятельности, а с 2026 года его ещё ужесточают и параллельно подтягивают ставки и требования к налогам. С другой — для ИП тоже постепенно поднимают нагрузку: растут фиксированные взносы, меняются правила спецрежимов, усиливают контроль.

На этом фоне решение RuStore убрать самозанятых из биллинга — не какое‑то уникальное зло, а скорее часть общей перестройки рынка под новую налоговую реальность. Для тех, кто зарабатывает заметные суммы (не 50–100 тысяч в год, а сильно больше), переход в ИП будет неприятным, но, в целом, рабочим компромиссом: больше бумажек и взносов, зато понятный юридический контур и сохранение встроенной монетизации.

Для совсем мелких и независимых разработчиков это, конечно, удар: ради нескольких десятков тысяч в год тащить на себе ИП мало кто захочет. Но и здесь есть варианты: можно отказаться от встроенного биллинга RuStore и вытащить монетизацию наружу (как скорее всего и работают в Google Play) — подписки/донаты через сторонние платёжные сервисы внутри РФ никто не запрещал.

Моё финальное ощущение такое: да, неприятно, да, придётся перестраивать процессы и считать экономику. Но это не «конец игры», а очередной раунд адаптации к регуляторке. Плюс ещё есть время и, вероятно, будут новости не только от RuStore, но и от других магазинов (тот же Huawei/Galaxy Store тоже живёт в этих же правилах и вряд ли останется в стороне).

#RuStore #Android #Монетизация #Самозанятые #ИП
👍18👎43🔥2🤯1
🚀 Jetpack Ink 1.0 стабильна! Библиотека для работы с рукописным вводом и графикой

Google выпустил стабильную версию Jetpack Ink 1.0 — библиотеку для создания продвинутых функций рукописного ввода (inking) и рисования в Android-приложениях.

Это многомодульная библиотека, которая обрабатывает цифровые штрихи (strokes) от ввода (стилус или палец) до их показа. Она предоставляет все необходимые инструменты для создания реалистичного и отзывчивого опыта письма или рисования.

👨‍💻 Кому будет полезна?
👉 Разработчикам приложений для заметок, скетчей, цифровых подписей.
👉 Образовательным приложениям, требующим аннотирования документов или изображений.
👉 Любому продукту, где нужен реалистичный, выразительный пользовательский ввод поверх контента.

Библиотека берет на себя сложности обработки графики, физики мазков и обработки жестов, позволяя легко добавить профессиональные функции рисования.

#Jetpack #AndroidDev #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37👎43🔥1
🚀 Media3 1.9.0: 4 новых модуля, Compose UI и умная предзагрузка

Вышел крупный релиз Jetpack Media3 1.9.0. В центре обновления — четыре новых модуля и значительные улучшения производительности:
👉 Новый модуль media3-inspector — извлечение метаданных (длительность, формат) и кадров (превью) без запуска воспроизведения. Заменяет MediaMetadataRetriever.
👉 Новый модуль media3-ui-compose-material3 — готовые Compose-компоненты в стиле Material 3 для быстрой сборки UI плеера.
👉 Переписали media3-cast — автоматическое управление переходами между локальным (ExoPlayer) и удалённым (Chromecast) воспроизведением.
👉 Переписали media3-decoder-av1 (переписан) — стабильный AV1-декодер на основе библиотеки dav1d от автором VLC плеера.
⚡️ Умный PreloadManager - Добавлена интеграция с кэшем на диске и автоматическое управление памятью. Можно предзагружать большие очереди, не боясь превысить лимит оперативной памяти.
Детектор «зависшего» плеера — автоматически сообщает об ошибке, если воспроизведение не прогрессирует.
👉 Упрощённая настройка кнопок в уведомлениях (Android Auto, Wear OS) через Player.COMMAND_*.
🔮 CompositionPlayer - экспериментальное API для реального превью видеомонтажа перед экспортом через Transformer.

Подробности в официальном блоге

#Android #Jetpack #Media #Chromecast
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34👍4👎41
🤖 Улучшаем работу со Stacktrace в Jetpack Compose (особенно в релизе)

Команда Compose представила opt-in API для улучшения читаемости стектрейсов во время разработки и для релизов.

Теперь становится возможным:
👉 Точно определять источник крешей в композиции, Side Effect (LaunchedEffect, DisposableEffect) и корутинах из rememberCoroutineScope.
👉 Изолировать падения для создания воспроизводимых примеров.
👉 Изучать креши, которые раньше показывали только внутренние фреймы Compose.

Достаточно добавить одну строку в точке входа в приложение (например, в Application.onCreate()):
// Включить stack trace только для минифицированных сборок (рекомендуемый способ)
Composer.setDiagnosticStackTraceMode(ComposeStackTraceMode.Auto)

// Или для локальной отладки (более точные, но тяжёлые трассировки)
Composer.setDiagnosticStackTraceMode(ComposeStackTraceMode.SourceInformation)

‼️ВАЖНО Требуется Kotlin 2.3.0, а для режимов `Auto` и `GroupKeys` - включённый R8 с минификацией.


Есть несколько режимов работы
✔️Auto (рекомендуется): использует GroupKeys для минифицированных сборок и None для отладочных.
👉 GroupKeys: для минифицированных приложений. Использует маппинг-файл от R8 для восстановления примерного местоположения.
👉 SourceInformation: для отладки. Даёт точные строки где произошел креш, но затратно по производительности. Стоит использовать только на этапе разработке.
None: ничего не добавляет (поведение по умолчанию).

Под капотом любой креш в Compose коде оборачивается в DiagnosticComposeException, который добавляется в suppressed-исключения. В нём будет полная иерархия вызовов `@Composable` функций на момент падения!
java.lang.IllegalStateException: Test layout error
at <original trace>
Suppressed: androidx.compose.runtime.DiagnosticComposeException:
Composition stack when thrown:
at ReusableComposeNode(Composables.kt:<unknown line>)
at Layout(Layout.kt:79)
at <lambda>(TempErrorsTest.kt:164) <-- Ваша функция!
... и т.д.


⚠️ Известные ограничения:
👉 В режиме SourceInformation для первых фреймов могут не указываться номера строк (<unknown line>).
👉 GroupKeys указывает только на первую строку @Composable функции.
👉 Если сам сбор стектрейса упадёт, его исключение будет добавлено как suppressed.

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

💬 А вы уже пользовались этой фичей? Делитесь в комментариях! 👇

#AndroidDev #Kotlin #Compose #R8 #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍316👎5🔥4
🤖 Google ускорили компиляцию кода на устройстве на 18% без компромиссов в памяти и других ресурсах

Команда Android Runtime (ART) опубликовала технический разбор оптимизаций, внедренных в 2025 году. Инженеры поставили амбициозную цель: сократить время компиляции, не жертвуя ни пиковым потреблением памяти, ни качеством генерируемого кода.

Самая хорошая новость — это не эксклюзив Android 16 (или будущих версий). Так как начиная с Android 12 компонент ART был выделен в Project Mainline, обновления прилетают через Google Play System Updates. Часть оптимизаций уже раскатана в июньском апдейте 2025 года, остальные придут до конца года.

Подробнее про работу этой системы у меня есть 📹 отдельное видео

Ускорение компиляции на устройстве влияет на два сценария:
👉 JIT (Just-in-Time): Приложение быстрее получает оптимизированный код, что снижает лаги и повышает отзывчивость UI.
👉 AOT (Ahead-of-Time): При установке или обновлении приложений устройство тратит меньше ресурсов CPU, что бережет заряд батареи и снижает нагрев.

🔗 Читать полный разбор в блоге Android Developers

#Android #ART #Performance #Mainline
Please open Telegram to view this post
VIEW IN TELEGRAM
👍47🔥29👎51
🔨 LeakCanary становится частью Android Studio

Google выкатили мощное обновление в Android Studio Panda (2025.3.1) — теперь легендарный LeakCanary интегрирован прямо в IDE. Больше не нужно полагаться только на экран телефона для анализа утечек.

LeakCanary — это де-факто стандарт в Android-разработке для поиска утечек памяти. Библиотека автоматически отслеживает объекты, которыеине очищаются сборщиком мусора. Это те самые "крошки", которые со временем превращаются в мертвый груз в оперативной памяти и приводят к тормозам и вылетам с ошибкой OutOfMemoryError.


В Android Studio Profiler появилась отдельная задача (task) для LeakCanary. Главная фишка — анализ переносится с девайса на компьютер.

Раньше процесс анализа хипа (heap dump) “вешал” слабые тестовые девайсы на несколько секунд (а то и минут). Теперь же “тяжелая” работа по парсингу hprof файла выполняется мощностями вашего рабочего ноутбука.

Что крутого:
🚀 Скорость: Анализ происходит значительно быстрее за счет ресурсов ПК.
Удобство: Результат анализа открывается сразу в IDE. Работает навигация “Jump to Source” — кликнули на утечку, сразу перешли в код.
Контекст: Можно скопировать трейс утечки и сразу скормить его Gemini прямо в студии для подсказок.

❗️ Несмотря на тесную интеграцию, LeakCanary остается независимым Open Source инструментом. Это все тот же проект от Square, который развивает комьюнити. Google не “поглотила” его, а просто встроила удобный UI для запуска анализатора внутри IDE. Библиотека остается свободной и открытой.

Попробовать можно уже в Canary-сборке Android Studio Panda.

Источник - developer.android.com

#AndroidDev #AndroidStudio #Android #Производительность
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥217👍3114👎4🎉1👌1
Android Broadcast
‼️ Google отменяет Compose Material Icons С релизом Compose Material 3 — версии 1.4.0 Google сделала радикальный шаг: библиотека androidx.compose.material.icons исключена из Material3 и больше не рекомендуется к использованию. Что произошло 👉 Material Icons…
This media is not supported in your browser
VIEW IN TELEGRAM
🔨 Лучше поздно, чем никогда - Material Symbols из Google Fonts встроили в Android Studio. Пока только в Canary версии Panda.

Для тех кто не в курсе, Material Symbols пришли на замену Compose Material Icons, которые больше не рекомендуется к использованию (подробности тут)

Источник - Android Developers

#Android #AndroidDev #Compose #AndroidStudio
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥74👍13🎉11👎31