Android Broadcast
Подборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab #MQRZR
نمایش بیشتر📈 تحلیل کانال تلگرام Android Broadcast
کانال Android Broadcast (@android_broadcast) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 14 580 مشترک است و جایگاه 8 794 را در دسته فناوری و برنامهها و رتبه 44 714 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 14 580 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 26 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر 61 و در ۲۴ ساعت گذشته برابر -1 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 39.85% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 23.09% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 5 811 بازدید دریافت میکند. در اولین روز معمولاً 3 367 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 28 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند api, kotlin, gradle, сборка, androiddev تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“Подборка новостей и статей для Android разработчиков.
Реклама и связь с автором @ab_manager
РКН https://abdev.by/rkn_tg_ab #MQRZR”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 27 اکتبر, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
⚠️ Сроки проверок — личный опыт одной команды, а не обязательства магазинов.🔗 Личный опыт публикации в магазинах приложений в России в 2026 году (Хабр) #Android #AndroidDev #RuStore #GooglePlay
SentryAndroid.init стоит на критическом пути запуска каждого приложения с Sentry, а таких стартов, по подсчётам компании, около 4,5 млрд в день. За квартал команда сделала больше 40 изменений и сократила инициализацию на 20–30% между версиями 8.43.0 и 8.54.0. Узкие места искали по трейсам Perfetto, в том числе с LLM, а каждый фикс проверяли Macrobenchmark.
Приёмы, которые пригодятся и в вашем коде:
👉 Настройки из манифеста — в байткод при сборке: SDK больше не парсит манифест, одно это дало 6,5%.
👉 Свой парсер DSN вместо java.net.URI: было до 6 мс, стало около 1 мкс.
👉 Общие пулы вместо разовых потоков: в ART каждый поток резервирует 1 МБ под стек.
Нужны SDK от 8.54.0 и Sentry Android Gradle Plugin от 6.20.0.
⚠️ Цифры сняты на синтетическом демо-приложении, в реальных проектах эффект может отличаться.🔗 Sentry Blog #Android #AndroidDev #Performance #Sentry
// Системный список исключений из оптимизации батареи
startActivity(Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS))
// Страница настроек приложения: там на большинстве телефонов Autostart и батарея
startActivity(Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS,
Uri.fromParts("package", packageName, null)))
⚠️ Google Play разрешает прямой запрос исключения (REQUEST_IGNORE_BATTERY_OPTIMIZATIONS) лишь в немногих случаях — большинству приложений стоит вести пользователя на экран настроек.
Как проверить, что дело в прошивке: отправьте одно и то же уведомление на Pixel/Samsung и на Xiaomi, смахнув приложение на обоих. Пришло на первом, но не на втором — это battery saver, и одними изменениями на сервере это не исправить.
⚠️ Названия пунктов меню меняются между версиями прошивок — актуальные инструкции по брендам собраны на dontkillmyapp.com.🔗 Why push notifications go missing on Xiaomi, Oppo, Vivo and Realme #Android #AndroidDev #FCM #Push #Xiaomi
val safeClient = client.newBuilder()
.hostnameVerifier(ForbiddenCertificatesHostnameVerifier())
.build()
⚠️ Первая версия обхода была на Interceptor, но он получает сертификаты слишком поздно, когда секреты уже ушли атакующему. Если вы скопировали её 20 октября, замените на HostnameVerifier. На устройствах с Google Play Services Google уже раздал автоматическое обновление, под угрозой прежде всего JVM и AOSP-устройства.🔗 Jesse Wilson · Mozilla · Changelog 5.5.1 · 4.12.1 #Android #AndroidDev #OkHttp #Security
Buy milk tomorrow at 7pm получается Buy milk и завтрашние 19:00 в выбранной таймзоне.
Библиотека для Kotlin Multiplatform понимает английский и русский: Android, JVM и iOS. Она разбирает даты, время, диапазоны вроде «завтра с 17:30 до 20:00» и повторения вроде «каждые 2 дня». Context и инициализация не нужны.
val parser = DateParser()
val matches = parser.parse(
text = "buy in 5 hours",
reference = Instant.parse("2024-02-28T10:15:00Z"),
timeZone = TimeZone.UTC
)
val instant = matches.single().instant // 2024-02-28T15:15:00Z
Неоднозначные даты не угадываются: 03/04/2026 без явного DateOrder.MDY или DMY вернёт пустой результат. Кроме момента времени, DateMatch отдаёт конец диапазона, период повторения и оставшийся текст напоминания.
⚠️ Парсер построен на правилах: произвольный текст за пределами поддерживаемых форм может не распознаться. Android — от API 26, Swift/XCFramework-дистрибутива нет. Версия 0.1.3, репозиторий создан в октябре.🔗 GitHub · Документация · klibs.io #Kotlin #KMP #Multiplatform #OpenSource
IllegalArgumentException: RemoteViews for widget update exceeds maximum bitmap memory usage. Так Android 17 ведёт себя с приложениями на targetSdk 37: если картинки в RemoteViews не влезают в лимит, система отклоняет обновление и бросает исключение. На targetSdk 36 и ниже это пока только предупреждение в логе. Google переписал описание этого изменения и добавил, как считается лимит и как в него уложиться.
Лимит — 6 * width * height байт, то есть полтора полноэкранных буфера ARGB_8888. Считаются картинки для всех ориентаций и размеров виджета сразу, поэтому responsive-виджет легко съедает бюджет копиями одного и того же Bitmap.
👉 Размер экрана берите из WindowManager.currentWindowMetrics, а не из displayMetrics: на складных устройствах тот может вернуть размер неактивного дисплея.
👉 Уменьшайте картинки до размеров виджета, а для непрозрачных используйте RGB_565 — это вдвое меньше памяти.
👉 В Glance декодируйте Bitmap один раз в provideGlance до provideContent, иначе для каждого размера создаётся своя копия.
URI-картинки в лимит не входят, но лаунчер декодирует их в полном разрешении, так что класть в cacheDir тоже стоит уменьшенную версию.
🔗 Изменения поведения Android 17 · Виджеты на Glance
#Android #AndroidDev #Android17 #AppWidgets./gradlew assembleDebug; не «бери свежие версии», а «версии из gradle/libs.versions.toml, новые зависимости — только после вопроса». Навыки устаревают, поэтому свежие факты агенту лучше давать через поиск по документации в Android CLI.
В квикстарте инструменты подобраны под опыт: новичкам — Google AI Studio, своему агенту вроде Claude Code — Android CLI и skills, для продакшена — Android Studio.
🔗 Как работают агенты · Квикстарт
#Android #AndroidDev #AI #AIAgents⚠️ Это альфа-версия: нужны Apple Silicon и macOS 26.4+, часть приложений пока не запускается.🔗 GitHub · Как это устроено · Для разработчиков #Android #AndroidDev #macOS #OpenSource
ANDROID10 действует на сайте Эргостол и на Ozon!
Как насчёт апгрейда кресла? 🪑
🎥Смотрите обзор кресла Экзо Флекс: https://abdev.by/EiMt
👉 Выбрать себе обновления можно: тут
#рекламаproguard-android-optimize.txt и добавила Baseline и Startup Profiles, через девять месяцев — на R8 full mode. Вместо широких исключений нашли конкретные классы, к которым обращаются через рефлексию и динамические прокси, и написали для них точечные keep-правила. Оценки оптимизации R8 теперь отслеживают в CI, а новые keep-правила планируют пропускать только с обоснованием.
Итог: ANR меньше на 32%, холодный старт быстрее на 35%. Недавно писал, что Google взялся за R8 всерьёз, — вот как это выглядит на большом проекте.
🔗 Кейс Grab
#Android #AndroidDev #R8 #Performancedatastore-tink, а 12 октября вышел 1.3.0-rc01, то есть API уже стабилен.
Шифрование подключается обёрткой над вашим сериализатором: AeadSerializer шифрует данные через Tink (AES-256-GCM), а ключ защищён Android Keystore.
// keysetHandle создаётся через AndroidKeysetManager
val aeadSerializer = AeadSerializer(
aead = keysetHandle.getPrimitive(
RegistryConfiguration.get(), Aead::class.java
),
wrappedSerializer = SettingsSerializer,
// уникальное имя защищает от подмены шифротекста
associatedData = "settings.json".encodeToByteArray(),
)
val dataStore = dataStore(
fileName = "settings.json",
serializer = aeadSerializer,
scope = scope,
)
Работает на Android и JVM. Ошибки расшифровки приходят как CorruptionException, так что их ловит обычный CorruptionHandler. Заодно в 1.3 появился DataStore.Builder, и Google советует переходить на него с DataStoreFactory.
🔗 Release notes DataStore · Разбор на ProAndroidDev
#Android #AndroidDev #DataStore #Securitytasks-genai вышла на Google Maven ещё в конце апреля. Если вы через MediaPipe встроили в приложение языковую модель, которая работает прямо на телефоне, она продолжит работать, но всё новое теперь появляется только в LiteRT-LM, так что переезд стоит спланировать заранее.
LiteRT-LM — рантайм Google для языковых моделей поверх LiteRT. У него свой Kotlin API для Android и JVM с ускорением на GPU и NPU, мультимодальностью и вызовом инструментов. Модели нужны в формате .litertlm, готовые лежат в LiteRT Community на Hugging Face. Актуальная версия — litertlm-android:0.18.0, ещё до 1.0. Базовый сценарий из документации:
val engine = Engine(EngineConfig(modelPath = modelPath, backend = Backend.GPU()))
engine.initialize() // до ~10 секунд, не на главном потоке
engine.createConversation().use { conversation ->
conversation.sendMessageAsync("Привет!").collect { print(it) }
}
Для GPU в манифест нужно добавить uses-native-library для libOpenCL.so и libvndksupport.so с required="false".
⚠️ В AAR LiteRT-LM 0.18.0 нативные библиотеки есть только для arm64-v8a и x86_64. На 32-битных ARM-устройствах загрузка упадёт с🔗 MediaPipe LLM Inference · LiteRT-LM для Android · dev.to #Android #AndroidDev #AI #LiteRTUnsatisfiedLinkError, поэтому проверяйтеBuild.SUPPORTED_ABISзаранее — на это наткнулся Charles Hartmann.
WRITE_CONTACTS, а оно позволяет менять всю адресную книгу в фоне. Интенты были альтернативой, но на разных устройствах вели себя по-разному. Google меняет правила: приложения с targetSdk следующей версии Android не смогут писать в контакты напрямую, такие записи упадут с SecurityException.
Вместо этого — ACTION_INSERT, ACTION_EDIT и ACTION_INSERT_OR_EDIT: они откроют стандартный системный редактор и не потребуют разрешений. Для чтения выбранных контактов есть Contact Picker, для «Позвонить через…» в мессенджерах — новый People Directory. Приложениям с фоновой синхронизацией (CRM, облака) дадут спецдоступ MANAGE_CONTACTS в Android 17 QPR2.
⚠️ Свои MIME-типы в🔗 Android Developers Blog #Android #AndroidDev #Contacts #PrivacyInsert.DATAсистемный редактор молча проигнорирует, аSHOW_OR_CREATE_CONTACTон не обрабатывает.
