Android Broadcast
Подборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab #MQRZR
Ko'proq ko'rsatish📈 Telegram kanali Android Broadcast analitikasi
Android Broadcast (@android_broadcast) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 14 550 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 8 536-o'rinni va Rossiya mintaqasida 44 382-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 14 550 obunachiga ega bo‘ldi.
06 Oktabr, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 20 ga, so‘nggi 24 soatda esa 7 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 39.14% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 22.16% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 5 696 marta ko‘riladi; birinchi sutkada odatda 3 224 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 28 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent api, kotlin, gradle, сборка, androiddev kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Подборка новостей и статей для Android разработчиков.
Реклама и связь с автором @ab_manager
РКН https://abdev.by/rkn_tg_ab #MQRZR”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 07 Oktabr, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
Буду очень признателен если поставите звездочку на репозитории, что поддержит меня и замотивирует дальнейшее развитие проектаОдна из проблем при работе с 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 #AndroidJetpack