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 583 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 8 750-o'rinni va Rossiya mintaqasida 45 369-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 14 583 obunachiga ega bo‘ldi.
10 Iyul, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni 39 ga, so‘nggi 24 soatda esa -1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 44.92% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 23.72% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 6 551 marta ko‘riladi; birinchi sutkada odatda 3 459 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 42 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 11 Iyul, 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.
android.widget), Fragments, RecyclerView, ViewPager переходят в maintenance mode: только критические баги, никаких новых фич. Вопрос «когда View умрёт» закрыт — она уже в maintenance.
Breaking changes при таргете SDK 37:
👉 resizeableActivity=false, screenOrientation, minAspectRatio / maxAspectRatio игнорируются системой на large screen (sw > 600 dp). Игры освобождены, остальные нет.
👉 static final поля нельзя менять через reflection: IllegalAccessException. Через JNI — краш.
👉 Native-библиотеки через System.load() должны быть read-only, иначе UnsatisfiedLinkError.
👉 Доступ к локальной сети заблокирован по умолчанию: нужен ACCESS_LOCAL_NETWORK.
👉 Lock-Free MessageQueue быстрее, но ломает код с reflection на приватных полях.
‼️ ВАЖНО CameraX: обновитесь до 1.5.2 или 1.6.0+ — краш на Android 17 из-за нового режима dynamic range.
Из остального: Generational GC в ART, жёсткие лимиты памяти с принудительным завершением процессов, Post-Quantum Cryptography (ML-DSA), AppFunctions как on-device MCP API для AI-агентов (alpha, Gemini в private preview).
#Android #Android17NavScreen с двумя реализациями — Fragment и Modo Screen, роутер выбирает через feature toggle в рантайме. Это позволило раскатывать переезд через A/B и не стопорить продуктовую разработку. При первой раскатке словили краш в ComposeView, продуктовые метрики просели — остановили, починили, раскатили снова. Без feature toggle был бы хотфикс-релиз.
Три реальные грабли:
👉 Слишком ранний выбор незрелой библиотеки — вложили много времени в доработки самой Modo
👉 Три параллельные миграции одновременно (View→Compose, Fragment→Modo, редизайн) — создали жёсткие зависимости и замедлили продуктовую разработку
👉 Старт без стратегии и метрик — месяцы хаоса, пока не завели дашборд с прогрессом
Если планируешь похожий переезд — там есть что взять.
#Android #Compose #Навигация@NavDestination, @NavEdge, @NavGraphRoot, KSP статически собирает граф, а IDE-плагин рисует карту: каждый экран отрендеренной @Preview-миниатюрой через Layoutlib, без эмулятора. Переходы стрелками, двойной клик прыгает в исходник, граф мёржится по всем модулям. Канвас редактируемый — тянешь связь от экрана к экрану, и плагин сам вписывает @NavEdge в код.
Работает с Navigation 3, Navigation 2 и даже голыми Activity. KMP из коробки: аннотации в commonMain, есть сэмпл на KotlinConf-приложении (26 экранов, 36 переходов).
Бонусом .nav baseline по аналогии с apiDump/apiCheck: navCheck валит сборку, когда граф разъезжается с закоммиченным базелайном.
#Compose #AndroidStudio1.103.0.3) и вскрыл его сам через jadx, а не пересказал чужую панику. Если коротко: градус угрозы надо сильно сбавить.
Главное, о чём автор смолчал - всё что он описал никогда не происходит в реально жизни из-за технических ограничений в самом Android. Тихая установка MAX и фоновая раскатка любого софта возможны только при системной привилегии установки, которую вендор должен выдать приложению отдельно. И тут важно не спутать: быть предустановленным и быть привилегированным - это разные вещи. RuStore действительно предустановлен на части устройств, но сама по себе предустановка такой привилегии не даёт, и фоновой установки на ней нет. Закон РФ об предустановки не требует привилегий, а только сам факт чтобы приложения были установлены сразу. А если вы поставили RuStore сами из APK или у вас есть Google Play, привилегии у него и вовсе не бывает: лицензия Google для производителей смартфонов не позволяет предустановить второй привилегированный стор. То есть на обычном телефоне принудительный сценарий мёртв ещё до старта.
И показательно: ни автор, ни полторы сотни комментаторов не привели ни одного живого устройства, где хотя бы одно приложение установилось само, в коде самого приложения нигде не защита установка какого-либо приложения.
Поставили RuStore сами? Сбор данных включается только вашими разрешениями: не выдали, отозвали, остановили, удалили. Всё под вашим контролем, а не разработчика приложения.
📄 Подробнее в разборе в лонгрид
Если зашло, накидайте реакций и напишите, чей стор вскрываем следующим тем же способом. Как насчет AppGallery от Huawei?
#RuStore #DeepDiveandroid init ставит android-cli skill с Android-контекстом, android skills add --all добавляет готовые паттерны под конкретные задачи: CameraX, Perfetto SQL, Adaptive UI, AppFunctions. Агент работает не вслепую.
2️⃣ Анализ экрана девайса/эмулятора. android screen capture --annotate делает скриншот с числовыми лейблами на каждом UI-элементе, android screen resolve переводит лейбл в координаты. android layout отдаёт дерево UI в JSON без скриншота вообще.
3️⃣ Запуск Journeys. Описываешь сценарий словами, агент проходит его на устройстве и проверяет результат.
4️⃣ Поиск по Android документации
Можно бы было сделать MCP. Он дал бы более тесную интеграцию, но CLI универсальнее и проще в поддержке с любой стороны. Для инструмента, который должен работать везде — это правильное решение.
#Android #AndroidDev #GoogleIOANDROID10
Если давно думали добавить в сетап регулируемый стол, удобное кресло или полезные аксессуары — сейчас хороший момент.
➡️ Собери свой идеальный сетап разработчика: по ссылке
Промокод ANDROID10 действует и на Ozon 🛒
#рекламаREASON_OTHER
👉 в описании строка "MemoryLimiter:AnonSwap"
👉 в Crashlytics этого НЕ будет: это не краш, а системное убийство процесса
И сразу разрушим главное заблуждение: это НЕ про heap size.
getMemoryClass() и largeHeap ограничивают только Java-кучу — объекты под управлением ART. Превысил — получишь OutOfMemoryError со стектрейсом, который ловится. А новый MemoryLimiter считает другое — анонимную память ВСЕГО процесса:
👉 битмапы (с Android 8 их пиксели в нативной памяти, в Java-куче их нет)
👉 нативные библиотеки, медиакодеки, Skia
👉 веса on-device ML/LLM моделей (mmap/нативка)
Всё это в getMemoryClass() не видно. Можно сидеть втрое ниже heap-лимита, никогда не словить OOM — и всё равно быть убитым, потому что суммарная нативная память процесса вылезла за порог. getMemoryClass и OOM — про Java-кучу. MemoryLimiter — про весь процесс. Это два разных предохранителя, и старый про новый вам ничего не скажет.
Важные оговорки, чтобы не было паники на пустом месте:
👉 в Android 17 лимиты заданы консервативно: цель — экстремальные утечки и выбросы, а не нормальные приложения
👉 включены только на части устройств
👉 конкретных чисел Google не публиковал. Реальный лимит своего девайса можно снять командой: adb shell am memory-limiter status
В зоне риска тяжёлые сценарии на устройствах среднего и бюджетного сегмента.
Уже есть задокументированный случай на бете — крупная on-device модель Gemma падала на Pixel 6a с 6 ГБ RAM именно из-за MemoryLimiter. 6 ГБ — это уже не бюджетник. Java-куча там небольшая, а нативка с весами модели — гигабайты в RAM.
Два мифа, которые гуляют по сети и которые повторять не надо:
👉 НЕТ подтверждения, что система шлёт «вежливое предупреждение» перед убийством
👉 НЕТ официального «дедлайна для разработчиков 30 июня». Google его не объявлял
Это первый раз, когда дисциплина по памяти не совет, а правило от ОС. Сейчас лимиты мягкие, но направление одностороннее — закручивать будут, а не отпускать. И самое неприятное тут не сам лимит, а его невидимость: пользователи будут терять сессии, а вы не узнаете, пока специально не начнёте смотреть.
💬 Как вы думаете, связаны ли меры с тем, что оперативка стала дорожать и вставить по 12–16 ГБ стало дорого?
#Android #Android17 #ПроизводительностьLazyVerticalGrid(
columns = GridCells.Adaptive(minSize = 160.dp),
modifier = Modifier.fillMaxSize()
) {
items(list) { ItemCard(it) }
}
Но почти всегда забывают про пагинацию. pageSize хардкодят, и это ломает всю адаптивность. На планшете с 4 колонками те же 20 элементов — это 5 строк. Пользователь упирается в конец страницы раньше чем успел проскроллить.
Правильно — считать pageSize от реального числа колонок:
BoxWithConstraints {
val columns = (maxWidth / 160.dp)
.toInt().coerceAtLeast(1)
val rows = (maxWidth / 120.dp)
.toInt().coerceAtLeast(1)
val pageSize = columns * rows
val items = remember(pageSize) {
Pager(PagingConfig(pageSize = pageSize)) { MyPagingSource() }
}.flow.collectAsLazyPagingItems()
LazyVerticalGrid(
columns = GridCells.Adaptive(minSize = 160.dp)
) {
items(items.itemCount) { ItemCard(items[it]) }
}
}
На смартфоне выйдет ~10 элементов, на планшете ~30. Никаких магических чисел — только математика от реального пространства.
Самый хороший пример тут - галерея. Они показывают адаптивную сетку контента и имеет возможность настройки другого расположения элементов
🔗 Lazy lists and grids — Android Developers
#Compose #Android #AndroidDev #Ui #Adaptive #Адаптивность