Android Broadcast
Подборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab #MQRZR
Больше📈 Аналитический обзор Telegram-канала Android Broadcast
Канал Android Broadcast (@android_broadcast) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 14 549 подписчиков, занимая 8 541 место в категории Технологии и приложения и 44 414 место в регионе Россия.
📊 Показатели аудитории и динамика
С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 14 549 подписчиков.
Согласно последним данным от 05 октября, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило 11, а за последние 24 часа — 5, при этом общий охват остаётся высоким.
- Статус верификации: Не верифицирован
- Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 39.00%. В первые 24 часа после публикации контент обычно набирает 22.17% реакций от общего числа подписчиков.
- Охват публикаций: В среднем каждый пост получает 5 672 просмотров. В течение первых суток публикация набирает 3 224 просмотров.
- Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 28.
- Тематические интересы: Контент сосредоточен на ключевых темах, таких как api, kotlin, gradle, сборка, androiddev.
📝 Описание и контентная политика
Автор описывает ресурс как площадку для выражения субъективного мнения:
“Подборка новостей и статей для Android разработчиков.
Реклама и связь с автором @ab_manager
РКН https://abdev.by/rkn_tg_ab #MQRZR”
Благодаря высокой частоте обновлений (последние данные получены 06 октября, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Технологии и приложения.
Буду очень признателен если поставите звездочку на репозитории, что поддержит меня и замотивирует дальнейшее развитие проектаОдна из проблем при работе с Gradle-проектами через AI-агентов: они ничего не знают про актуальные версии зависимостей, что в них поменялось и насколько безопасно это подключать. Баги, CVE, сломанная совместимость с AGP или Kotlin. Версию модель берёт из обучающих данных, а потом это приходится перепроверять руками. Готового решения, удовлеторяющее моим требованиям, не нашёл, поэтому сделал свой Maven MCP. Это плагин для Claude Code, Grok Build, Cursor и Codex, а также есть возможность подключить как MCP в любой агент. Внутри один Python-сервер на стандартной библиотеке, без pip-зависимостей. Версии смотрит в репозиториях, которые объявлены в билде, а не только в Maven Central. Gradle сканирует через wrapper и runtime classpath, Maven читает pom.xml, version catalog тоже. Что агент теперь может сделать сам: 👉 Узнать последняя стабильная версия, а не альфа с максимальным номером 👉 что изменилось между двумя версиями: AndroidX, AGP, GitHub releases, CHANGELOG 👉 CVE через OSV, включая путь до транзитивной уязвимости 👉 совместимость AGP, Gradle, JDK, Kotlin 👉 конфликты версий, лицензии, EOL у JDK, Kotlin, Gradle и Spring Boot 👉 нормальная запись в libs.versions.toml Перед правкой зависимости хук проверяет координаты и насколько безопасно подключить его (через хуки в плагинах). 🐱 Исходники на GitHub
Ранее Maven MCP жил в другом GitHub репо, но к релизу 1.0 выделил его в отдельный репозиторий#AI #Gradle #Maven #MCP
ВАЖНО! Скилл полезен, но его эффект зависит от вашего уровня мастерства, а также на результат может повлиять ваш харнесс и контекст сессии. Будьте внимательны с вызовом стороннего скиллаСкиллы можно установить как плагин к агентам или использовать через поиск в Android CLI. 🐱 Android Skills Github #Android #AndroidDev #AI
Android CLI - терминальная утилита от команды Android из Google для более эффективной работы агентов с Android задачами
Android Device Streaming - облачная ферма устройств от Firebase (Google)#Android #AndroidDev #AI #CLI
org.gradle.tooling.parallel=true Studio по умолчанию тянет модели IDEA параллельно — Gradle Sync в больших мультимодульных проектах заметно быстрее
🔗 Подробнее
https://androidstudio.googleblog.com/2026/10/android-studio-rabbit-1-now-available.html
#AndroidStudio #AndroidDev #GooglePlayAI_BROADCAST — скидка на сайте
#рекламаsrc/main: логирование экрана, свой интерцептор OkHttp. По умолчанию такой код попадает в релиз, а пользователю он не нужен. Чтобы оставить его только в отладочных сборках, обычно прячут каждый вызов под if (DEBUG), разносят сами вызовы по разным src или заводят плагинную архитектуру.
NoOp проще. Две реализации одного публичного API: одна рабочая, вторая с теми же методами, но без работы. Вызов в общем коде не меняется, в релизе он ничего не делает. По исходникам разделяется только место, где создаётся реализация.
interface ScreenTracer {
fun trace(screen: String)
object NoOp : ScreenTracer {
override fun trace(screen: String) = Unit
}
}
// src/release
fun createScreenTracer(): ScreenTracer = ScreenTracer.NoOp
// src/debug. Этот класс в release не попадает.
fun createScreenTracer(): ScreenTracer = DebugScreenTracer()
class DebugScreenTracer : ScreenTracer {
override fun trace(screen: String) {
Log.d("Screen", screen)
}
}
class AppContainer(
val screenTracer: ScreenTracer = createScreenTracer(),
)
// Одна и та же строка в debug и в release
screenTracer.trace("Checkout")
Пример маленький, но так же собираются целые модули. Правила те же:
1. Публичное API совпадает целиком: те же типы, методы и сигнатуры.
2. Если метод что-то возвращает, NoOp отдаёт нейтральное значение, от которого дальше ничего не запускается: null, пустую коллекцию, константу DISABLED, -1.
3. Методы NoOp не делают работу: не пишут логи, не ходят в сеть, не держат состояние.
// Подключение зависимостей с разной реализацией
debugImplementation(project(":lib:debug"))
releaseImplementation(project(":lib:noop"))
Оба модуля отдают одни и те же публичные типы. В сборку попадает один из них.
NoOp можно сочетать с вырезанием кода на этапе R8, чтобы в релизе не осталось даже заглушки. Если пост наберёт 200 лайков❤️ , разберу, как совместить оба подхода.
#Android #AndroidDev #Архитектураadbd сам гасит wireless debugging на недоверенной сети и поднимает обратно, когда ты снова дома.
Что стало лучше (цифры от Google)
👉 скорость автоконнекта +32%
👉 скорость коннекта увеличилась на 66% на 90% сессий
На практике важнее другое. В Device Manager устройство появляется само, если на телефоне включён Wireless debugging. QR или код, без ручного IP.
Чтобы это работало надо использовать:
👉 Девайс на Android 17 или новее
👉 Android Platform-Tools 37.0.0 или новее
👉 Android Studio Quail 3 или новее
Я пользуюсь отладкой по беспроводу и это удобно, но ВАЖНО иметь хорошую точку доступа (точно 5 или 6 GHz) с высокой скоростью, иначе все ускорения коту под хвост.
🔗 Документация
📹 Доклад на Android Makers 2026
#Android #AndroidDev #Tooling #AndroidStudio@OptIn(ExperimentalWorkMetricsApi::class)
suspend fun dumpSyncMetrics(repo: WorkMetricsInfoRepository) {
val query = WorkMetricsQuery.Builder()
.addWorkerClassNames(SyncWorker::class.java.name)
.addTags("sync")
.setBeginTimeMillis(...)
.build()
repo.getWorkMetricsInfos(query).forEach { info ->
Log.d(
"WM",
"${info.workerClassName} " +
"state=${info.state} " +
"attempts=${info.runAttemptCount} " +
"retries=${info.explicitRetryCount} " +
"worker=${info.workerDurationMillis}ms " +
"total=${info.totalRuntimeMillis}ms " +
"stops=${info.stopReasonCounts}"
)
}
}
👉 Новое экспериментальное API для слежения за событиями разных Work
// ExecutionEventListener — все 4 метода abstract
// cheduleEventListener — default, можно повесить только нужные.
@OptIn(ExperimentalEventsApi::class)
class WorkTelemetry : ExecutionEventListener, ScheduleEventListener {
override fun onStarted(workInfo: WorkInfo) {
Log.d("WM", "start ${workInfo.id} ${workInfo.workerClassName}")
}
override fun onFinished(result: ListenableWorker.Result, workInfo: WorkInfo) {
Log.d("WM", "finish ${workInfo.id} $result attempts=${workInfo.runAttemptCount}")
}
override fun onStopped(stopReason: Int, workInfo: WorkInfo) {
Log.d("WM", "stop ${workInfo.id} reason=$stopReason")
}
override fun onException(throwable: Throwable, workInfo: WorkInfo) {
Log.e("WM", "crash ${workInfo.id}", throwable)
}
override fun onEnqueued(workInfo: WorkInfo) { }
override fun onUnblocked(workInfo: WorkInfo) { }
override fun onUpdated(oldWorkInfo: WorkInfo, updatedWorkInfo: WorkInfo) { }
override fun onCancelled(workInfo: WorkInfo) { }
override fun onPrerequisiteFailed(workInfo: WorkInfo) { }
}
Что еще поменялось
👉 minSdk 23 -> 24 (Android 7.0 теперь минимум)
👉 дефолтный executor теперь Dispatchers.Default вместо собственного. Все также можно переопределить
🛠 Исправление багов и улучшение производительности
#Android #AndroidDev #WorkManager #AndroidJetpackResultEventBus. Для сценариев «выбрал и вернулся» это как раз то, чего не хватало.
NavDisplay(
backStack = backStack,
onBack = { backStack.removeLastOrNull() },
entryDecorators = listOf(
rememberSaveableStateHolderNavEntryDecorator(),
rememberResultEventBusNavEntryDecorator(),
),
entryProvider = entryProvider {
entry<Home> {
val viewModel = viewModel<HomeViewModel>()
ResultEffect<Address> { address ->
viewModel.onAddressSelected(address)
}
HomeScreen(
address = viewModel.address,
onPickAddress = { backStack.add(AddressPicker) },
)
}
entry<AddressPicker> {
val resultBus = LocalResultEventBus.current
AddressPickerScreen(
onSelected = { address ->
resultBus.sendResult(address)
backStack.removeLastOrNull()
},
)
}
},
)
👉 Поддержка KMP Deep Link API в androidx.navigation3.runtime.deeplink
👉 Упростили работы с Predictive back gesture в Android. Теперь не придется высчитывать дельту самостоятельно
#Compose #JetpackCompose #Navigation3// Пример теста на JUnit 5
@ExtendWith(BackupRestoreExtension::class)
@BackupRestoreConfig(applicationId = "com.example.app")
class BackupRestoreTest {
@Test
fun prefsSurviveCloudRestore(
controller: BackupRestoreController,
@TempDir outputDir: Path,
) = runBlocking {
controller.runBackupRestoreFlow(
storage = StorageDomain.Preference("user_prefs"),
outputDir = outputDir,
mode = BackupTransportMode.CLOUD_ENCRYPTED,
)
}
}
#Android #AndroidDev #AndroidJetpack #Backup #Тестирование