Android Broadcast
前往频道在 Telegram
Подборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab #MQRZR
显示更多📈 Telegram 频道 Android Broadcast 的分析概览
频道 Android Broadcast (@android_broadcast) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 14 579 名订阅者,在 技术与应用 类别中位列第 8 743,并在 俄罗斯 地区排名第 45 335 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 14 579 名订阅者。
根据 11 七月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 35,过去 24 小时变化为 0,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 43.32%。内容发布后 24 小时内通常能获得 24.33% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 6 318 次浏览,首日通常累积 3 548 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 43。
- 主题关注点: 内容集中在 api, kotlin, gradle, сборка, androiddev 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Подборка новостей и статей для Android разработчиков.
Реклама и связь с автором @ab_manager
РКН https://abdev.by/rkn_tg_ab #MQRZR”
凭借高频更新(最新数据采集于 12 七月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
14 579
订阅者
无数据24 小时
-17 天
+3530 天
帖子存档
14 578
Как много приложений уже используют BDUI (Backend Driven UI или Server Driven UI) или перешли на него? Вы удивитесь, но МНОГО. Так проще для бизнеса:
👉 можно делать больше экспериментов
👉 не надо ждать когда разработчики сделают все варианты UI для экспериментов
👉 BDUI позволяет не ждать прохождение модерации магазина
👉 Элементы управления нативные а не как будет с Web
Подробнее про BDUI подход в статье(6м)
#android #bdui #sdui
14 578
+1
🚀 Знаете ли вы, что 30 минут работы стоя в день улучшают кровообращение и снижают нагрузку на позвоночник?
Теперь внедрить привычку в рутину стало проще!
Компания Ergostol представляет новинку — умный стол DeskUp, который помогает заботиться о здоровье маленькими, но эффективными шагами:
✅ Плавно меняйте высоту (73–118 см) одним нажатием кнопки
✅ Чередуйте сидячие и стоячие позы во время работы, звонков или творчества
✅ Устали на созвоне? Опустите столешницу за секунды — сигнал, что пора завершать встречу!
Большие результаты начинаются с маленьких решений:
▸ Начните с 10 минут стоя во время утренней рутины
▸ Добавьте 1 видеозвонок без стула
▸ Используйте 3 предустановки высоты на пульте, чтобы не отвлекаться на настройки.
🎁 Начните свой путь к здоровью со скидкой по промокоду
ANDROID10
👉 Стол DeskUp и другие новинки по ссылке
Реклама. ООО «СОФТЭФФЕКТ». ИНН 773557526214 578
🐘 Gradle начиная с версии 8.0. обязательно требует зависимостей между task, если один использует результаты другого
Явное объявление зависимостей требуется чтобы корректно выстроить порядок выполнения task-ок, гарантировать воспроизводимость сборки.
#gradle
14 578
🏝 Проблемы с порядком Gradle Task при использовании KSP 2.0.2
Продолжаю разработку проекта FrameIO - Kotlin Multiplatform клиента для сервиса frame.io и стоклнулся с падением сборки из-за порядка задач (ниже стек с примером проблемы):
Some problems were found with the configuration of task ':module:kspDebugKotlinAndroid' (type 'KspAATask').
- Gradle detected a problem with the following location: './module'.
Reason: Task ':module:kspDebugKotlinAndroid' uses this output of task ':module:javaPreCompileDebug' without declaring an explicit or implicit dependency. This can lead to incorrect results being produced, depending on what order the tasks are executed.
Possible solutions:
1. Declare task ':module:javaPreCompileDebug' as an input of ':module:kspDebugKotlinAndroid'.
2. Declare an explicit dependency on ':module:javaPreCompileDebug' from ':module:kspDebugKotlinAndroid' using Task#dependsOn.
3. Declare an explicit dependency on ':core:user-session:javaPreCompileDebug' from ':module:kspDebugKotlinAndroid' using Task#mustRunAfter.
For more information, please refer to https://docs.gradle.org/8.14.2/userguide/validation_problems.html#implicit_dependency in the Gradle documentation.
Стек для сборки: Gradle 8.14.2, Kotlin 2.2.0, KSP 2.2.0-2.0.2, AGP 8.11.0
Решения проблемы пока нету в KSP (одно из issue), поэтому я задаю порядок Gradle Task сам:
// build.gradle.kts модуля где подключен ksp
afterEvaluate {
android.libraryVariants.forEach { variant ->
val variantCapitalized = variant.name.capitalized()
tasks.named("ksp${variantCapitalized}KotlinAndroid") {
dependsOn(
"${variant.name}AssetsCopyForAGP",
"process${variantCapitalized}Manifest",
"write${variantCapitalized}AarMetadata",
"javaPreCompile${variantCapitalized}",
"merge${variantCapitalized}Assets",
"merge${variantCapitalized}JniLibFolders",
"merge${variantCapitalized}NativeLibs",
"copy${variantCapitalized}JniLibsProjectOnly",
"generate${variantCapitalized}EmptyResourceFiles",
"copy${variantCapitalized}JniLibsProjectAndLocalJars",
"prepare${variantCapitalized}ArtProfile",
"write${variantCapitalized}LintModelMetadata",
"extractProguardFiles",
"prepareLintJarForPublish",
)
}
}
}
#android #kmp #koltin #ksp14 578
📹 Embedded Layout Inspector (EN,6м)
Демонстрация возможностей встроенного в Android Studio инструмента Layout Inspector для дебага Compose UI
0:00 - Что за инструмент
1:31 - Как дебажить
5:26 - Итоги
#compose #androidstudio
14 578
+1
@mobile_reviews_bot - Telegram бот для отслеживания отзывов на приложение в Google Play и App Store. Отвечать можно прямо из бота + есть ИИ для генерации ответов
Подробности на сайте
#googleplay #appstore
14 578
🚀 Вышел стабильный JavaScript движок от Google для Android
Новая стабильная библиотека Jetpack JavaScript Engine позволит разработчикам выполнять JS код в изолированной и ограниченной среде.
class MainActivity : ComponentActivity() {
// Теперь nullable, без lateinit
private var jsSandbox: JavaScriptSandbox? = null
private var jsIsolate: JavaScriptIsolate? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if (!JavaScriptSandbox.isSupported()) {
Log.e("JS", "JavaScriptSandbox не поддерживается")
return
}
lifecycleScope.launch {
// Создаём и сохраняем в nullable-поле
jsSandbox = JavaScriptSandbox
.createConnectedInstanceAsync(applicationContext)
.await()
jsIsolate = jsSandbox?.createIsolate()
val script = """
function sum(a, b) {
return (a + b).toString();
};
sum(3, 4);
""".trimIndent()
// При выполнении гарантируем, что jsIsolate != null
val result: String = jsIsolate
?.evaluateJavaScriptAsync(script)
?.await()
?: "Ошибка: isolate не инициализирован"
Log.d("JS", "Результат выполнения: $result")
}
}
override fun onDestroy() {
super.onDestroy()
// Закрываем только если не null
jsIsolate?.close()
jsSandbox?.close()
}
}
#jetpack #js14 578
Очередной достижение на YouTube. За лет 5 лет ведение YouTube это не так много, но больше только впереди
14 578
📚 Must-read для разработчиков: книги, которые прокачают ваш код и мышление
Если вы хотите писать не просто рабочий, а чистый, масштабируемый и профессиональный код, сохраните себе эту подборку.
1️⃣ «Чистый код»
Для: Junior+/Middle, кто хочет избавиться от неидеального кода.
Фишка: учимся именовать переменные, рефакторить и работать с legacy так, чтобы коллеги не проклинали вас в чатиках.
2️⃣ «Идеальный программист»
Для: всех, кто хочет прокачать и код, и профессиональное мышление.
Фишка: про ответственность, дисциплину и почему «работает» ≠ «норм».
3️⃣ «Чистая архитектура»
Для: Middle+/Senior, кто проектирует системы.
Фишка: SOLID, Dependency Rule и как сделать архитектуру, которая не развалится через полгода.
4️⃣ «Head First. Архитектура ПО»
Для: тех, кто любит объяснения без скуки.
Фишка: интерактивный формат, картинки и «разжёвано» для новичков в теме.
🔥 По промокоду
BROADCAST -25% на книги в издательстве Питер
Читали что-то из этого? Делитесь впечатлениями в комментариях!
#реклама14 578
🤖 Strict-режим Android Resource Shrinker — аккуратнее, он без компромиссов
В Android можно включить resource shrinking, чтобы убрать из финального APK/Bundlа неиспользуемые ресурсы (строки, drawables, layouts и т.д.)
android {
buildTypes {
release {
shrinkResources true
minifyEnabled true
}
}
}
С недавних пор Google экспериментирует со strict режимом работы шринкера, который делает эту очистку более агрессивной, а именно:
👉 Удаляет все ресурсы, которые не удалось найти в коде или XML.
👉 Не делает допущений, что ресурс “вдруг используется где-то через reflection”. Нету явного использования или keep правила - удаление
👉 Режет всё под корень — даже если вы явно используете getIdentifier() или динамически загружаете ресурсы по имени, он может их не заметить и выкинуть.
📉 Эффект - меньший размер сборки, но есть риск крешей в рантайме, если ресурсы удалены, а были нужны
Как включается strict режим:
# В gradle.properties android.experimental.enableStrictResourceShrinking=true🛡 Как сохранить нужные ресурсы от удаления? Если вы точно знаете, что ресурс используется, но shrinker может его не заметить: 1️⃣ProGuard правила (R8 учитывает их для ресурсов тоже):
# Правила для R8
-keepresources R.string.some_dynamic_string
-keepresources R.drawable.icon_loaded_by_name
2️⃣Файлы в папках res/raw/ и assets/ shrinker не трогает вообще.
3️⃣tools:keep и tools:discard в XML (подробнее тут):
<resources xmlns:tools="http://schemas.android.com/tools"
tools:keep="@layout/landing,@drawable/logo"
tools:discard="@drawable/unused_image" />
Рекомендации:
👉 Не включайте strict-режим без хорошего UI-тест-покрытия.
👉 Проверьте, что не используете динамическое получение ресурсов getIdentifier() без крайней необходимости.
👉 Добавляйте -keepresources, если есть малейшие сомнения.
Подробнее про оптимизацию ресурсов читайте в официальной документации
#android #r8 #оптимизация14 578
‼️ Следите за правила для минификации кода R8 - такой вывод стоит сделать из доклада
Из-за того что одна команда добавила правило, это сильно затормозило весь этап работы R8 🤯
# The proguard configuration file for the following section is
/builds/../feature-1.0.0/proguard.txt
-if class ru.tinkoff.feature.**.*$Companion {
kotlinx.serialization.KSerializer serializer(...);
}
-keep,includedescriptorclasses class ru.tinkoff.feature.**$$serializer { *; }
# End of content from /builds/../feature-1.0.0/proguard.txt14 578
📹 Как мы случайно ускорили релизную сборку в два раза. Роман Заремба, Юрий Анисимов из Т-Банк, Mobius 2025 Весна
Спикеры рассказали о том, как боролись за ускорение релизной сборки в мобильном банке и что из этого в итоге получилось. Разобрали особенности релизной сборки, связанные с подрезкой (shrinking) кода и ресурсов. Посмотрели, как профилировать и анализировать работу R8, а также отдельных Gradle-тасок, участвующих в подготовке релизной версии приложения.
Доклад для практикующих Андроид-инженеров с элементами хардкора.
🔗 Подробнее о конференции Mobius
🔗 Скачать презентацию
#android #mobius #gradle
14 578
Меняете работу приложения в зависимости от состояния/возможностей устройства?
14 578
🐱 Droidex - Android библиотека для определения уровня производительности устройства на основе характеристик и состояния: процессора, памяти, размера heap, скорости доступа в сеть, свободного хранилища, заряда батаерии и прочих настроек на устройстве.
DroidDex.getPerformanceLevelLd(PerformanceClass.CPU, PerformanceClass.MEMORY)
.observe(lifecycleOwner) { level: PerformanceLevel ->
when(level) {
EXCELLENT -> // Флагманский уровень
HIGH -> // Довольно сильное устройство, но не самое мощное
AVERAGE -> // Средняя производительность/возможности
LOW -> // Бюджетный телефон/низкая производительность
UNKNOWN -> // Не смогли понять ничего
}
}
Больше подробностей в статье или вот ссылка
#android #производительность14 578
📹 Code Review примера от Google "Now in Android" (1.5 часа)
Делаю ревью кода проекта примера от Google - "Now in Android". Весь стек технологий от Google, Compose и адаптивная верстка UI
#AndroidBroadcast #codereview
14 578
📹 Эти фичи изменят разработку на Kotlin (15 мин)
Прошла Kotlin Conf и в рамках keynote показали 3 фичи:
🏝 улучшение destructing declaration
🏝 обязательное использование возвращаемых значений для всех методов
🏝 улучшение работы с ошибками (не с exception, именно ошибками логики)
Версия на 📹 VK Video и 📺 RuTube
#AndroidBroadcast #kotlin #kotlinconf25
