TGINSIGHT CHAT
Android Broadcast
@android_broadcast
TechnologiesПодборка новостей и статей для Android разработчиков. Реклама и связь с автором @ab_manager РКН https://abdev.by/rkn_tg_ab#MQRZR
Posts récents
Tag : #androiddev · 66 posts
Publié il y a 28 jours
🚀Вышел AndroidX WebKit 1.16.0. Забирай в работу интеграции 👉 minSdk поднят до 24 (Android 7.0) — учитывайте при апгрейде. 👉 Async-старт WebView вышел из experimental. startUpWebView вместе с ProcessGlobalConfig позволяют прогреть WebView в фоне до того как он понадобится UI. Эту штуку давно ждали в стабильной версии — для меня самое ценное обновление этого релиза. 👉 Navigation API тоже стабильный. Больше не надо @OptIn — addNavigationListener даёт колбэки на разных стадиях навигации, ошибку загрузки через Navigation.webResourceError, URL текущей страницы через Page. Главное — теперь FCP и LCP метрики прилетают напрямую из WebView без инъекции JS: // Перед использованием проверь // WebViewFeature.isFeatureSupported(WebViewFeature.NAVIGATION_LISTENER) WebViewCompat.addNavigationListener(webView, object : NavigationListener { override fun onFirstContentfulPaintMillis(page: Page, millisFromNavStart: Long) { analytics.report("FCP", millisFromNavStart, page.url) } override fun onLargestContentfulPaintMillis(page: Page, millisFromNavStart: Long) { analytics.report("LCP", millisFromNavStart, page.url) } override fun onNavigationCompleted(navigation: Navigation) { navigation.webResourceError?.let { err -> Log.w("WV", "load failed: ${err.errorCode}") } } }) На один WebView можно вешать несколько листенеров и прокидывать свой Executor если нужны колбэки в фоновом потоке. 👉WebViewCompat.saveState теперь умеет ограничивать размер state. Если ловили TransactionTooLarge при сохранении состояния — это для вас. 👉 Подвезли addJavaScriptOnEvent для инъекции JS на загрузку документа и инъекцию скриптов в isolated worlds без конфликтов со страницей. Гибридным приложениям пригодится. 👉 [EXPERIMENTAL] BackForwardCacheSettings полностью переписали. Если использовали старый Builder через WebSettingsCompat.setBackForwardCacheSettings — ловите ошибку компиляции при апгрейде. Теперь так: val settings = WebSettingsCompat.getBackForwardCacheSettings(webView.settings) settings.setMaxPagesInCache(5) 👉Profile.setSpeculativeLoadingConfig депрекейтнут, замена через Profile.setMaxPrerenders плюс PrefetchCache.setMaxPrefetches и setPrefetchTtlSeconds (тоже experimental). #Android#Webview#Web#AndroidDev
Hashtags
Publié il y a 28 jours
🚀 Вышел Jetpack Paging 3.5.0 где добавили возможность получения данных как StateFlow // В ViewModel val pager = Pager(pagingConfig, pagingSourceFactory) val pagerFlow: Flow<ItemSnapshotList> = pager.flow.asState() // Пример в Compose val snapshotFlow = viewModel.pagerFlow.collectAsStateWithLifecycle(initialList) val snapshot = itemsFlow.value LazyColumn { items(items = snapshot.items) { ... } } Также появилась возможность явно вызвать загрузку новых страниц через методы append() и prepend(), а также refresh() и retry() LazyColumn { item { LaunchedEffect(viewModel) { viewModel.prepend() } } items(snapshot.items) { item -> Text("Item: $item") } item { LaunchedEffect(viewModel) { viewModel.append() } } } Кажется, что сделали жизнь проще, но мой опыт с Paging всегда упирался в проблемы кэширования и удобной работы в Data слое. Всегда считал эту библиотеку архитектурно неудачной и ждал когда же ее переделают полностью. #Android#Jetpack#AndroidDev
Hashtags
Publié 4 mai
🤯 Те кто использовал Jetpack Paging 3 знают насколько он может справиться только с базовыми сценариямми. Шаг влево или вправо - уже боль! Сегодня хочу познакомить вас с альтернативой — библиотекой 🐱Paginator. Это KMP-решение для пагинации, которое решает те самые проблемы, где Paging 3 начинает "буксовать". Paginator построен на отличной модели от Jetpack Paging 3: страница — это адресуемая ячейка в кэше, кэш — обычная структура данных, а навигация — обычные методы. 1️⃣✅ Адресуемые страницы Прямые методы goNextPage(), goPreviousPage() и jump(Bookmark). Deeplink на сообщение из пуша решается одной строкой. 2️⃣✅ Мутации по запросу MutablePaginator предоставляет CRUD-операции: replace { it.id == 42 }, removeWhere { it.deleted }. Один лайк меняет один элемент без инвалидации всей страницы. 3️⃣✅ Сохраняемое состояние Кэш — обычная структура данных, которую можно сериализовать через kotlinx.serialization. Методы serializeToJson() и restoreFromJson() решают проблему Process Death без плясок с бубном. 4️⃣✅ Библиотека, а не фреймворк Написан на чистом Kotlin без платформенных зависимостей и живёт в commonMain. Логика пагинации становится частью общего доменного слоя KMP, не копируется между платформами и не имеет двух реализаций. 5️⃣✅ Курсорная пагинация "из коробки" Отдельный класс CursorPaginator с единой моделью состояний, транзакций и сериализации. Paginator — это не обёртка над Paging 3. Это другая модель, переосмысливающая ключевые типы. Обёртка просто не смогла бы дать ни мутации элемента, ни сериализации кэша. 🔗Оригинальная статья на Хабре 🐱Репозиторий Paginator #Android#AndroidDev#KMP
Hashtags
Publié 27 avr.
🤖 Telegram выпустил нативный Android SDK для авторизации через свой аккаунт — больше никаких WebView и редиректов в мессенджер. Также есть версия для iOS До этого «Войти через Telegram» на Android означало либо открытие браузера, либо самостоятельную реализацию OIDC-флоу. Теперь есть отдельная библиотека login-sdk:1.0.0 — она запускает нативный экран подтверждения прямо из установленного Telegram. Библиотека распространяется через GitHub Packages, а не Maven Central. Подключение требует GitHub Personal Access Token с read:packages — неудобно для командных проектов и CI. Минимальная версия — API 23 (Android 6.0). Репо свежее: 2 коммита, 4 звезды. Стабильности пока ждать не стоит, но направление понятное. Для сервисов, которые уже сидят в Telegram-экосистеме — ботов, мини-аппов, каналов с платным доступом — это логичное решение. Для остальных порог входа через GitHub Packages немного портит картину. #Android#Telegram#AndroidDev
Hashtags
Publié 24 avr.
🤖Credential Manager теперь умеет отдавать верифицированный email без OTP Google начала выпускать криптографически верифицированные email credentials прямо на Android-устройства. Получить их можно через Credential Manager API, который реализует стандарт W3C Digital Credentials API. Механика простая: пользователь тапает "Sign up" или фокусируется на поле ввода email, появляется нативный bottom sheet с описанием запрашиваемых данных, один тап на "Agree and continue" - и приложение получает верифицированный адрес мгновенно. Никакого перехода в почту, никаких кодов. Три сценария, где это применимо: 👉 Регистрация - вместе с получением email сразу инициировать создание passkey 👉 Восстановление аккаунта - больше не нужно искать письмо с recovery кодом в спаме 👉 Step-up аутентификация - для подтверждения чувствительных действий без OTP ‼️ВАЖНО: верифицируется только email. Имя, фамилия, фото профиля доступны, но не верифицированы. Поддерживаются только личные аккаунты. #Android#AndroidDev
Hashtags
Publié 20 avr.
Android инструменты для отладки в терминальном интерфейсе, для тех кто решил отказаться от IDE 🐱Holo #Android#AndroidDev
Hashtags
Publié 17 avr.
🤖Google выпустила Android CLI — новую командную строку для Android-разработки, которая умеет работать не только с человеком, но и с AI-агентами: Gemini CLI, Claude Code, Codex, Antigravity и любыми другими. По замерам Google, в агентных сценариях CLI тратит на 70% меньше токенов на setup проекта и окружения и выполняет типовые задачи в 3 раза быстрее, чем когда агент разбирается через стандартные инструменты. Цифры от вендора, но механика понятная: один вызов android create вместо длинной цепочки команд. Основные команды: 👉android sdk install — ставит только нужные компоненты SDK 👉android create — создание проекта из официальных шаблонов с актуальной архитектурой 👉android emulator и android run — работа с виртуальными девайсами и запуск приложения 👉android skills — подключение SKILL.md инструкций для агента: Navigation 3, edge-to-edge, миграция AGP 9, XML в Compose, анализ R8 👉android docs — доступ к актуальной документации Android, Firebase и Kotlin в обход устаревшего training cutoff модели 👉android update — обновление самого CLI Установка curl -fsSL https://dl.google.com/android/cli/latest/darwin_arm64/install.sh | bash CLI пригодится не только с агентами: Google прямо позиционирует его для CI и скриптовой автоматизации. Похоже, Google серьёзно перестраивает базовый тулинг под реальность, где рядом с разработчиком всегда есть агент. Пошёл пробовать в своих проектах. 🔗Анонс Android Developers Blog #Android#AndroidDev
Hashtags
Publié 16 avr.
🛒Google Play обновил сразу несколько политик — и все они завязаны на фичи Android 17. Главное изменение — доступ к контактам. Приложениям, которым не нужен широкий доступ к контактам, теперь обязательно использовать Android Contact Picker. Никакого READ_CONTACTS без реальной необходимости, которую теперь придется доказываться. Тот самый пикер, который появился в Android 17, сразу стал требованием политики — не опцией. Я писал об этом ещё когда Contact Picker появились в превью Android 17. Google никогда не оставляет такие инструменты просто опцией — новые системные механизмы приватности рано или поздно становятся политикой магахина. С геолокацией та же история. Location Button из Android 17 — новый системный UI-элемент для разового доступа к точной позиции — уже прописан в политике как рекомендованный минимум для precise location. Фича ещё в бете, требование уже действует. ‼️ Geofancing убрали из разрешённых сценариев для Foreground Service. Рекомендуется переходить на Geofence API. На всё это у разработчиков 30 дней, начиная с 15 апреля 2026 года. 🔗 Подробности обновления политик Google Play #GooglePlay#AndroidDev#Android17
Hashtags
Publié 15 avr.
🤖Google выложила официальный репозиторий Android Skills — набор инструкций для ИИ-агентов, заточенных под Android-разработку. Идея простая: вместо того чтобы объяснять агенту контекст каждый раз руками, ты даёшь ему готовый SKILL.md — файл со структурированными инструкциями, шагами и справочными материалами по конкретной задаче. Агент читает его как спецификацию и работает точнее. Это следует открытому стандарту agentskills.io, то есть формат не завязан на один инструмент — подходит для Claude Code, Cursor и любого другого агента, который умеет читать файлы из контекста. Что уже есть в репозитории: 👉Миграция с XML-вёрстки на Jetpack Compose 👉Установка и миграция на Navigation 3 (deep links, multiple backstacks) 👉Анализ R8-правил и оптимизация размера APK 👉Обновление до последней версии Play Billing Library Как использовать: скачиваешь нужный SKILL.md из репозитория, добавляешь в контекст агента (в Claude Code — через команду /add-file или как часть промпта), говоришь что нужно сделать. Агент уже знает, как это делается по правилам Google. Набор пока небольшой, но сама идея правильная: вместо того чтобы учить агента с нуля на каждом проекте, ты даёшь ему готовую базу знаний от самой команды Android. 🐱GitHub Android Skills #AndroidDev#AIDev#ClaudeCode
Hashtags
Publié 14 avr.
📱В Android Emulator добавили нативную коммуникацию между эмуляторами Раньше чтобы два эмулятора увидели друг друга по сети, надо было руками прописывать port forwarding. Каждый эмулятор жил в своей изолированной виртуальной песоцнице. Теперь новый сетевой стек поднимает общий виртуальную сеть для всех запущенных инстансов на одной машине — до 4 эмуляторов одновременно. Wi-Fi Direct и Network Service Discovery (NSD) работают из коробки, ничего настраивать не нужно. Это вписывается в то, что Google активно делает последние пару лет: передача звонков между устройствами, кросс-девайсные сессии, Wear OS, Android Auto, XR-очки. Весь этот функционал раньше можно было нормально проверить только на реальных девайсах. Теперь это можно делать прямо в эмуляторе. Для использования надо Andorid Emulator версии 36.5 или новее 🔗 Источник - android-developers.googleblog.com #AndroidDev#AndroidStudio
Hashtags
Publié 3 avr.
🤖Важно для разработчиков Wear OS: с 2026 года обязательна 64-битная поддержка Google объявила, что с 15 сентября 2026 года все новые приложения и обновления для Wear OS, содержащие нативный код (C/C++), должны включать 64-битную версию наряду с 32-битной. Google Play начнёт блокировать загрузку несовместимых APK/AAB. Что нужно сделать разработчикам: 👉 Проверьте, есть ли в вашем приложении нативный код (файлы .so в lib/armeabi-v7a или lib/arm64-v8a). Даже если вы не пишете на C++, зависимости или SDK могут его добавлять. 👉 Для каждой 32-битной ABI (armeabi-v7a) добавьте 64-битную (arm64-v8a). 👉 Обновите сторонние SDK до версий с поддержкой 64 бит. 👉 Протестируйте приложение на 64-битном эмуляторе Wear OS (все новые образы уже 64-битные). ⚠️ Политика 32-битной поддержки не отменяется — Google Play по‑прежнему будет доставлять приложения на старые 32-битные устройства. 🔗Гайд по миграции 🔗 Источник - Android Dev Blog #WearOS#AndroidDev#GooglePlay
Hashtags
Publié 1 avr.
🤖 Вышла Jetpack Media3 1.10.0 Вышла новая версия Media3, и там заметное обновление для тех, кто строит плеерный UI на Compose. Главное в этом релизе — продолжение развития модуля media3-ui-compose-material3. Добавили готовый Player composable, который объединяет ContentFrame с настраиваемыми элементами управления сверху, по центру и снизу. Рядом появился ProgressSlider для перемотки через жесты и PlaybackSpeedControl с кнопкой переключения скорости. На мой взгляд, это уже почти полноценный out-of-the-box плеер на Compose Material3. Breaking changes: 👉FrameExtractor вынесен в отдельный модуль media3-inspector-frame 👉LottieOverlay переехал в media3-effect-lottie 🔗 Источники: android-developers.googleblog.com #Android#AndroidDev#Jetpack#Медия