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

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

РКН https://abdev.by/rkn_tg_ab #MQRZR
Download Telegram
🛒 Save for Later — больше гибкости для релизов в Google Play Console

Google запустил функцию "Save for later" в Google Play Console. Теперь можно контролировать, какие изменения отправлять на ревью, а какие пока отложить.

Раньше все изменения автоматически группировались и отправлялись на ревью вместе.

Это создавало сложности:
👉 Приходилось задерживать hot fix или публиковать изменения, которые ещё не готовы
👉 Нельзя было разделить обновление тестовых треков и маркетинговые изменения
👉 Сложно было поменять решения касательно релиз на ходу

Теперь в разделе "Changes not yet sent for review" можно отметить группы изменений как "Save for later".

Эти изменения:
👉 Не попадут в текущее ревью
👉 Можно в любой момент вернуть обратно
👉 После начала ревью автоматически вернутся в очередь

Функция работает вместе с проверками перед ревью.

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

🔗 Подробности в блоге

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

#Android #GooglePlay
Please open Telegram to view this post
VIEW IN TELEGRAM
24👍17👎6
🏝 Когда стоит убить Kotlin демона для ускорения сборки

Если у вас тяжёлая Android-сборка (много модулей, R8, CI с ограниченной памятью), имеет смысл принудительно завершать Kotlin Daemon после компиляции и до запуска R8 🔪

Kotlin Daemon нужен только на этапе компиляции Kotlin. После этого он спокойно живёт до конца сборки и держит память. R8 — один из самых прожорливых этапов по CPU и RAM 🔥 По итогу Daemon и R8 начинают конкурировать за ресурсы памяти

Что вы реально получаете если убивает Kotlin демона после компиляции кода:
🚀 снижение пикового потребления памяти примерно на 13–15%
🚀 ускорение R8 вплоть до ~7%
🚀 небольшое, но стабильное сокращение общего времени сборки
🚀 максимальный эффект на CI, где нет долгоживущих демонов и инкрементальности

‼️ Этот подход сработал для автора статьи, но для вас может ничем и не помочь, особенно в сборке на локальной машине.

🔗 Источник с измерениями и подробным разбором

#Android #Kotlin #R8 #Gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍49👎86🤔1
🤖 Android Gradle Plugin 9 упрощает запуск unit-тестов

По умолчанию Android Gradle Plugin создаёт Gradle-задачи для запуска unit-тестов во всех доступных build types, что на практике почти никогда не нужно. Обычно тесты запускаются только для debug-сборки.

В реальных проектах (особенно с product flavors и большим количеством модулей) это приводит к сотням лишних задач, увеличению времени конфигурации и дополнительной нагрузке на IDE и CI.

Чтобы оптимизировать работу Gradle, начиная с AGP 9.0, можно в gradle.properties добавить:
android.onlyEnableUnitTestForTheTestedBuildType=true


После этого unit-тесты будут генерироваться только для основного тестируемого build type (как правило, debug). Это:
👉 убирает лишние Gradle-задачи;
👉 сокращает время конфигурации проекта;
👉 снижает потребление памяти;
👉 ускоряет локальную разработку и CI-пайплайны.

Если вы не запускаете unit-тесты для release-сборок (а так делают почти все), то включение этого флага — бесплатная оптимизация сборочной инфраструктуры.

Это хороший пример того, как дефолтные настройки инструментов ориентированы на универсальность, а не на эффективность, и почему их стоит регулярно пересматривать в контексте реальной архитектуры проекта.

#Android #AndroidDev #Gradle
Please open Telegram to view this post
VIEW IN TELEGRAM
👍46👎32🔥1👏1
🤖 Улучшения R8 - минификатора кода в Android

В AGP 9.0 R8 получил несколько изменений, в основном направленных на оптимизацию Kotlin-кода, упрощение desugaring-пайплайна и улучшение диагностики.

Основные изменения:

👉 Новая опция -processkotlinnullchecks для обработки null-проверок, сгенерированных компилятором Kotlin. Можно задать одно из значений:
- keep - оставить проверки;
- remove_message - убрать сообщения об ошибках;
- remove - полностью удалить проверки.

Опция используется для уменьшения байткода и снижения runtime-накладных расходов в production. Я еще в 2019 писал статью про это и удалял код с помощью -assumenosideeffects

👉 Keep rules больше не применяются к companion methods
R8 перестал переносить keep-информацию на синтетические companion-методы, сгенерированные при desugaring интерфейсов.
Это ломает редкий кейс с minSdk < 24, но делает поведение более консистентным с остальными синтетическими элементами.

👉 Минимизированные имена синтетических классов в L8
L8 теперь генерирует более короткие имена для synthetic-классов ($1, $2 вместо длинных $$ExternalSynthetic...), что уменьшает размер DEX.

L8 — это утилита, стоящая за library desugaring в Android. Позволяет использовать новые API на старых версиях Android и править баги в них, делая использование API прозрачным.


AGP 9.0 прокачало R8 и L8, чтобы делать меньше лишнего байткода, более агрессивно оптимизировать Kotlin. Большинство изменений работают прозрачно, но в сумме дают более компактные сборки и более предсказуемый build-процесс.

🔗 Источник - документация по AGP 9.0

#Android #AndroiDev #Gradle #R8
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍12🔥7👎4🤔2
🤖 Если используете AndroidX Paging, то вам стоит обновить код. Для лучшего определения позиции на основе которой генерировать ключ для обновления появилось API PagingState.closestItemAroundPosition()

override fun getRefreshKey(state: PagingState<Int, UiItem>): Int? {
val anchor = state.anchorPosition ?: return null

val closestItem = state.closestItemAroundPosition(
anchorPosition = anchor,
// например, пропускаем разделители/заглушки
predicate = { it.isAnchorable }
)

return closestItem?.id
}


#Android #AndroidX
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔31👎10👍7
🤖 Разбираюсь с системой разрешений в Android и снова упираюсь в один и тот же вопрос: почему до сих пор нет AndroidX‑решения, которое бы упростило всю эту рутину?

В каждом проекте встречается тонны похожего кода для работы с разрешениями — и чаще всего без учёта лучших практик. Разработчики нередко просто запрашивают разрешение “в лоб”, не обрабатывая отказы корректно. Если пользователь отказал — то сразу перекидывают в настройки, и на этом всё.

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

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

💬 Какой у вас опыт от запроса разрешений в Android?

#Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74👎84🔥3👏1
🤖 Посмотрел на обновлённую статистику распространения версий Android на 1 декабря 2025 и вот что интересно.

📈 Android 16 набирает обороты быстрее предшественников
За два месяца после релиза Android 16 (API 36) уже захватил 7,5% рынка. Для сравнения, Android 15 (API 35) за аналогичный период имел всего 4,5%. Такой стремительный рост объясняется новой стратегией Google — Android 16 вышел раньше обычного (во втором квартале вместо третьего) и был разделён на два релиза. Это дало производителям больше времени на подготовку обновлений, и многие флагманы 2025 года уже выходили с Android 16 из коробки.

✔️ Минимальная версия: Android 7.0 всё ещё актуален
Если смотреть на цифры, то Android 7.0 Nougat (API 24) и выше охватывает 99,2% устройств. Это значит, что отказавшись от поддержки Android 6.0 Marshmallow, вы теряете меньше 1% аудитории. Но помните — это глобальная статистика. Обязательно проверьте свою консоль Google Play: в некоторых регионах или нишах (например, бюджетные устройства для развивающихся рынков) картина может сильно отличаться.

⚖️ Что изменилось за 8 месяцев
С апреля (пост с прошлой статой) по декабрь 2025 года произошёл серьёзный сдвиг поколений. Android 14 вырос с 31,9% до 44%, став фактическим лидером. Android 13 упал с 48,7% до 57,9% (кумулятивно), но всё ещё держит солидную базу. А вот старички Android 11 и ниже продолжают уверенно терять позиции — теперь на них меньше 30% устройств против 38,5% восемь месяцев назад.
Интересно, что Android 15 за это время вырос до 26,8%, хотя многие производители только начали раскатывать обновления. Samsung, Xiaomi и другие гиганты обычно тянут с апдейтами до весны следующего года, так что пик Android 15 мы увидим ближе к середине 2026.

🏆Лидер всё тот же - Android 14
Самая популярная версия сейчас — Android 14 (API 34) с долей 44%. Это логично: устройства 2024 года выходили именно на этой версии, плюс многие флагманы 2023 года получили обновление. Android 13 на втором месте с 13,9% чистой доли (57,9% - 44% = 13,9%), но его позиции постепенно размываются.

Для разработчиков это означает простую вещь: если вы таргетируетесь на API 34 (что обязательно для новых приложений в Google Play), вы автоматически находитесь на самой массовой платформе. А вот с минимальной версией стоит балансировать между охватом и необходимостью поддерживать легаси-код. Android 8.0 Oreo (API 26) даёт вам 98,4% охвата, что для большинства проектов более чем достаточно.

💬 В комментах делитесь совпадает ли статистика Google с реальностью вашего приложения

#Android
Please open Telegram to view this post
VIEW IN TELEGRAM
3🔥32👍1612👎3
🤖 Как не утонуть в океане версий Android: расставляем приоритеты в поддержке

Каждый Android-разработчик сталкивался с этой болью: сотни версий ОС, десятки производителей с уникальными оболочками, тысячи моделей устройств. И все это нужно поддерживать. Или нет? Я считаю, что не нужно. И вот почему. Ресурсы тестирования конечны. Ваша команда — не Google с его армией QA-инженеров (да и им не хватает на всё). У вас ограниченное время, бюджет и люди. Попытка качественно поддерживать все версии Android, все оболочки вендоров и все устройства — прямой путь к выгоранию команды и багам в проде. Лучше отлично поддерживать 70-80% пользователей, чем посредственно — 100%.

1️⃣Анализируйте данные регулярно

Google Play Console — ваш главный источник правды. Там есть всё: распределение по версиям Android, моделям устройств, размерам экранов. Альтернативно используйте Firebase Analytics, Amplitude или любую другую систему аналитики, которая у вас встроена. Важно смотреть на тренды. Если доля Android 6.0 упала с 5% до 1% за полгода — это сигнал пересмотреть поддержку. Рекомендую проводить такой анализ минимум раз в квартал, максимум — раз в год. Привяжите это к циклу планирования или мажорным релизам.

2️⃣Считайте не головы, а деньги

У вас 1000 пользователей на Android 6.0? Звучит внушительно. Но задайте себе три вопроса:
— Сколько из них активны за последний месяц?
— Кто из них делает заказы / смотрит рекламу / оформляет подписки?
— Какой у них engagement по сравнению с пользователями на свежих версиях?

Если это мертвые души или их монетизация стремится к нулю — может, стоит сокращать поддержку этих версий ОС?

Пример из практики: 1000 пользователей на Android 7 могут приносить $50/месяц, а 200 на Android 14 — $2000. Какую версию вам выгоднее поддерживать и проще?

3️⃣Сегментируйте пользователей

Не все пользователи одинаково важны. Разделите их на категории:

Сегмент A — высокий LTV, активные, платящие
Сегмент B — средняя активность, периодические покупки
Сегмент C — низкая активность, бесплатные пользователи

Теперь посмотрите на распределение этих сегментов по версиям Android. Возможно, окажется, что ваши самые ценные пользователи уже давно на Android 10+, а на старых версиях сидят только "зомби". Это даст вам аргументы для приоритизации — и для разговора с бизнесом.

4️⃣Внедрите систему тиров поддержки

Вместо бинарного "поддерживаем/не поддерживаем" используйте гибкую систему приоритетов:

Tier 1 — Критичные версии
Android 11-16 (условно — актуальные версии)
Покрывают 70-80% вашей базы
Уровень поддержки: полное ручное тестирование всех фичей перед каждым релизом, быстрые хотфиксы при багах

Tier 2 — Важные версии
Android 8-10
Покрывают еще 15-20% пользователей
Уровень поддержки: проверка основных сценариев вручую + автотесты, хотфиксы по приоритету

Tier 3 — Минимальная поддержка
Android 7
Остаток пользовательской базы
Уровень поддержки: только автотесты на smoke-сценарии, приложение работает, но активно не тестируется. Баги фиксим, только если они критичные

Tier 4 — Best effort
Всё, что осталось (Android 5-6 и старше)
Совсем старые версии, которые еще технически поддерживаются
Уровень поддержки: билд собирается, но тестирование отсутствует. Поддержка только на основе user reports

Важно: границы тиров будут разными для каждого проекта. Ориентируйтесь на свою аналитику, а не на чужие цифры.

5️⃣Коммуникация с командой и стейкхолдерами

Самое сложное — донести эту стратегию до бизнеса и команды. Для бизнеса важны цифры: сколько стоит (денег и времени) и сколько приносит, как можно инвестировать это время Для команды ценность понятна и так — четкие критерии избавляют от хаоса в процессах. Разработчики и QA будут знать, на что тратить время, а на что — нет.

Также на принятие решение может влиять сложность поддержки старых версий Android, так как со временем Google и популярный Open Source постепенно откажется от этих версий. Apple вообще тут поступает жестко и убирает в XCode поддержку версий ОС. Например, сейчас Google поддерживает только Android 6.0+

#Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51👎118
💬 Как вы решаете, какие версии поддерживать, а какие нет? Какая у вас минимальная поддерживаемая версия сейчас?

#Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👎15👍6
Media is too big
VIEW IN TELEGRAM
🪙 РАЗБОР. Как устроена система разрешений в Android (40 мин)

Система разрешений в Android - супер нетривиальная задача. А если я вам скажу, что это не баг, а фича? Да, авторы Android сделали ее именно такой, чтобы защитить пользователя от сторонних приложений. Разработчикам приходится сражаться!

В новом разборе вы НЕ узнаете как получить разрешение, но погрузитесь в то как получается разрешение, какие сервисы ОС участвуют в этом, а также как правильно на самом старте проектировать фичи с учетом разного состояния разрешений.

Видео доступно всем подписчикам на Boosty, а полный список на витрине

#AndroidBroadcast #Android #AndroidOS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32👎11🔥63