Авторизация в Android-приложениях исторически была болью: Smart Lock, One Tap, FIDO2, Google Sign-In — каждый жил отдельно, со своими проблемами и способом интеграции. Credential Manager заменяет всё это единым Jetpack API.
val request = GetCredentialRequest(
listOf(
GetPasswordOption(),
GetPublicKeyCredentialOption(requestJson = fetchJsonFromServer())
)
)
coroutineScope.launch {
try {
val result = credentialManager.getCredential(
context = activityContext,
request = request
)
when (val credential = result.credential) {
is PublicKeyCredential -> sendToServer(credential.authenticationResponseJson)
is PasswordCredential -> signInWith(credential.id, credential.password)
is CustomCredential -> handleFederatedSignIn(credential)
}
} catch (e: GetCredentialException) {
handleError(e)
}
}
Суть простая: один вызов
getCredential() показывает пользователю bottom sheet, где агрегированы passkeys, сохранённые пароли и Sign in with Google. Пользователь выбирает аккаунт, а не метод входа — API само подбирает подходящий тип учётной данных.По возможностям:
👉 Passkeys — беспарольная аутентификация через публичный ключ с подтверждением биометрией или PIN. Работает с Android 9+, синхронизируется через Google Password Manager
👉 Пароли — поддержка через
GetPasswordOption с Android 4.4, то есть покрывает всю реальную аудиторию👉 FIDO — Sign in with Google теперь нативно встроен в тот же bottom sheet, никаких отдельных SDK
Что происходит в реальных приложениях с passkeys — числа впечатляют. Zoho после интеграции ускорил авторизацию в 6 раз и видит рост использования passkeys на 31% месяц к месяцу. X за 4 недели мигрировал с SmartLock/One Tap/Google Sign-In, удалил сотни строк кода и вдвое улучшил показатели успешного входа.
‼️ ВАЖНО: поддержка сторонних менеджеров паролей (1Password, Bitwarden и т.д.) появилась только с Android 14. На более ранних версиях работает только Google Password Manager.
На мой взгляд, это тот редкий случай когда Google реально упростила жизнь разработчикам, а не наоборот. Если в приложении до сих пор живут отдельные интеграции авторизаций — посмотрите в сторону миграции, оно того стоит и по коду, и по UX.
А вы уже интегрировали Credential Manager к себе? Если да — что больше всего зашло или наоборот споткнулись? Если нет — что останавливает?
#Android #Безопасность #Passkeys
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62👎6
⚡️ R8 наконец-то починил AtomicReferenceFieldUpdater в корутинах на Android
Это история про баг, которому больше двух лет. В 2023 году в трекере
Корень проблемы в том, что корутины используют atomicfu, который на JVM компилируется в Atomic*FieldUpdater ради совместимости с KMP. На десктопном JDK это нормально, но ART на Android оптимизирует их хуже. Бенчмарк на Pixel 4a давал 135 нс против 50 нс — разница почти в 3 раза на
R8 в составе AGP 9.2 закрывает этот разрыв на уровне компилятора: он определяет, где
Для нас это значит: никаких изменений в коде, просто обновить AGP. Бесплатное ускорение каждого launch и cancel в приложении.
На мой взгляд, абсолютно правильно решать проблему именно на стороне R8, а не правками всех библиотек.
🔗 Источник - X Andrei Shikov
#kotlin #coroutines #performance
Это история про баг, которому больше двух лет. В 2023 году в трекере
kotlinx.coroutines появился issue: AtomicReferenceFieldUpdater, которым корутины управляют состоянием Job, на Android работает в 2–4 раза медленнее, чем обычный AtomicReference на операциях compareAndSet и lazySet.Корень проблемы в том, что корутины используют atomicfu, который на JVM компилируется в Atomic*FieldUpdater ради совместимости с KMP. На десктопном JDK это нормально, но ART на Android оптимизирует их хуже. Бенчмарк на Pixel 4a давал 135 нс против 50 нс — разница почти в 3 раза на
compareAndSet.R8 в составе AGP 9.2 закрывает этот разрыв на уровне компилятора: он определяет, где
Atomic*FieldUpdater можно заменить на Unsafe-вызовы, и генерирует одну инструкцию вместо цепочки. ART тоже получит аналогичную оптимизацию в JIT, но она имеет ограничения по версии платформы и хуже масштабируется по тестам автора.Для нас это значит: никаких изменений в коде, просто обновить AGP. Бесплатное ускорение каждого launch и cancel в приложении.
На мой взгляд, абсолютно правильно решать проблему именно на стороне R8, а не правками всех библиотек.
🔗 Источник - X Andrei Shikov
#kotlin #coroutines #performance
👍57👎7
В новом стабильном релизе Android Studio два изменения, которые напрямую влияют на работу с Agent Mode.
Первое — собственные Agent Skills. Создаёшь папку .skills/ в корне проекта, кладёшь туда SKILL.md с описанием нужного воркфлоу, и агент начинает использовать его автоматически. Можно вызвать вручную через @имя. Скилл может содержать инструкции по код-ревью под ваши стандарты, информацию о внутренних библиотеках, любые кастомные практики команды. Концепция ровно та же, что в Claude Code с CLAUDE.md, только встроена прямо в Studio.
Второе — гранулярные разрешения для AI. Агент явно запрашивает разрешение перед чтением файлов, запуском shell-команд и веб-запросами. Можно настроить постоянные исключения для доверенных операций, SSH-ключи всегда требуют явного OK. Плюс опциональный sandbox для полной изоляции.
#AndroidStudio #AgentMode #AIdev
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍25👎18
Media is too big
VIEW IN TELEGRAM
🔗 Источник Android Dev Blog
#AI #ИИ #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30👎6
Google представил Gemma 4 — новое семейство открытых моделей для сложных рассуждений и вызова инструментов. Главная цель: сделать локальный агентный ИИ стандартом на Android — от разработки до продакшена на смартфоне.
Сейчас фокус на Android Studio. Gemma 4 работает полностью локально на вашем компьютере. Код не уходит в облако.
Agent Mode в Android Studio с Gemma позволит вам делать
👉 рефакторинг легаси‑кода
👉 создание целого приложения или новых фич
👉 итеративное исправление ошибок (агент сам применяет правки)
Без интернета, с полным контролем приватности и без оплаты за токены.
———
Gemma 4 бывает разного размера: от E2B (2 млрд параметров) до 31B. Требования зависят от модели:
👉 E2B (2B) — 8 ГБ RAM, работает на CPU. Для базовых подсказок.
👉 E4B (4B) — от 16 ГБ RAM. Идеальный баланс для большинства разработчиков.
👉 7B–14B — от 16 ГБ (лучше 32 ГБ). Нужен GPU или мощный нейронный движок.
👉 26B A4B / 31B — 32+ ГБ RAM. Только с квантованием или на профессиональных станциях.
Для обладателей MacBook Pro с 32+ ГБ и чипом M Pro/Max открвается много интересного. На такой конфигурации вы комфортно запустите:
👉 E4B (4B) — молниеносно
👉 26B A4B — отличный уровень интеллекта
👉 31B — с квантованием (потеря качества минимальна)
Благодаря Unified Memory и оптимизации через Metal MacBook Pro часто эффективнее PC с дискретными видеокартами в том же классе памяти.
———
Gemma 4 в Android Studio делает локального агентного ассистента реальностью. Вы получаете современный AI для сложных задач без облаков и без счетов за API.
Выбрать модель можно прямо в настройках Android Studio через LLM‑провайдера (LM Studio, Ollama и др.). Я пойду тестировать её, потому что локальный AI агент - это очень круто!
🔗 Источник - Android Dev Blog
#Gemma4 #AndroidDe #AndroidStudio #AgentMode
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍79👎12
Какую модель Gemma выбрать в зависимости от вашего железа. Размер оперативки указан для запуска Android Studio + Gemma локально. Как минимум стоит иметь запас по оперативки для комфортной работы, когда начнется сборка,
По цифрам кажется очень интересным вариантом чтобы попробовать кодинг через CLI без IDE
#AI #AndroidStudio #Gemma4
По цифрам кажется очень интересным вариантом чтобы попробовать кодинг через CLI без IDE
#AI #AndroidStudio #Gemma4
👍28👎14
This media is not supported in your browser
VIEW IN TELEGRAM
Для себя я выработал правило привязки работы стоя/сидя к определенным задачам в работе. Например, все онлайн встречи и code review я провожу стоя за рабочим столом, а кодинг - сидя.
ANDROID10 на сайте Ergostol.Так же специально для моих подписчиков промокод действует и на Ozon
Please open Telegram to view this post
VIEW IN TELEGRAM
👎35👍26
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
Please open Telegram to view this post
VIEW IN TELEGRAM
👎16👍13
Forwarded from Compose Broadcast
This media is not supported in your browser
VIEW IN TELEGRAM
HotSwan - быстрое обновление Composable на реальном устройстве. Доступно как плагин для Android Studio
Я выбрал другой путь - делаю СMP проект с поддержкой Android + Desktop JVM и так можно быстро проверять + делать код чище.
#Compose
Я выбрал другой путь - делаю СMP проект с поддержкой Android + Desktop JVM и так можно быстро проверять + делать код чище.
#Compose
👍24👎9
Если ты пишешь Gradle plugin для Android — она ловит ошибки, которые сложно заметить вручную:
👉 использование внутренних API Gradle и AGP (которые могут сломаться в любой момент)
👉 eager task configuration вместо lazy (
withType без configureEach)👉 вызовы, несовместимые с Gradle Project Isolation (
getRootProject, findProject, getParent)👉
Provider<String>.toString() — почти всегда баг👉
configurations.create вместо configurations.register (проблема с Gradle 8.14+)👉
System.getenv() напрямую вместо Provider API👉
mustRunAfter / shouldRunAfter — дорогие операции из-за перестройки task graphСейчас в alpha06 (апрель 2026), стабильного релиза ещё нет, но и в прод этот код не пойдет.
#Gradle #Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍30👎8
AGSL (Android Graphics Shading Language) появился в Android 13 как нативный язык шейдеров для GPU. Работает через RuntimeShader и RenderEffect, позволяет делать попиксельные эффекты на любом View или Composable. Но писать его больно: код живёт в строках, uniform-ы привязываются вручную, IDE не помогает.
Библиотека RedByteFX оборачивает это в Kotlin DSL. Вот волновое смещение — сначала голый AGSL, потом то же самое через библиотеку:
// Голый AGSL — строка в коде
uniform shader content;
uniform float wave_amplitude;
uniform float wave_frequency;
half4 main(float2 fragCoord) {
float2 offset = float2(
0.0,
sin(fragCoord.x * wave_frequency) * wave_amplitude
);
return content.eval(fragCoord + offset);
}
// RedByteFX DSL
val effect = redbytefx {
val amplitude = uniformFloat(0f, "wave_amplitude")
val frequency = uniformFloat(0.08f, "wave_frequency")
val offset = let(
float2(0f, sin(fragCoord.x * frequency) * amplitude),
"wave_offset"
)
sample(fragCoord + offset)
}
🔗 habr.com
#Android
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53👎6
This media is not supported in your browser
VIEW IN TELEGRAM
Раньше чтобы два эмулятора увидели друг друга по сети, надо было руками прописывать 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍91👎6
Идея простая: вместо того чтобы объяснять агенту контекст каждый раз руками, ты даёшь ему готовый 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.
#AndroidDev #AIDev #ClaudeCode
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍110👎9
ИИ уже везде. Нравится вам это или нет, но с этим придется жить и в какой-то момент адаптироваться. Но с любой большой силой приходит и большая ответственность, а доступность этой силы всего за 20 $ в месяц делает её опасной в руках дилетантов, что приводит к печальным изменениям в процессе open source. С другой стороны, это заставит проекты адаптироваться и стать лучше. Все подробности в новом
#AndroidBroadcast #Видео
Please open Telegram to view this post
VIEW IN TELEGRAM
5👎45👍9
Главное изменение — доступ к контактам. Приложениям, которым не нужен широкий доступ к контактам, теперь обязательно использовать Android Contact Picker. Никакого READ_CONTACTS без реальной необходимости, которую теперь придется доказываться. Тот самый пикер, который появился в Android 17, сразу стал требованием политики — не опцией.
Я писал об этом ещё когда Contact Picker появились в превью Android 17. Google никогда не оставляет такие инструменты просто опцией — новые системные механизмы приватности рано или поздно становятся политикой магахина.
С геолокацией та же история. Location Button из Android 17 — новый системный UI-элемент для разового доступа к точной позиции — уже прописан в политике как рекомендованный минимум для precise location. Фича ещё в бете, требование уже действует.
🔗 Подробности обновления политик Google Play
#GooglePlay #AndroidDev #Android17
Please open Telegram to view this post
VIEW IN TELEGRAM
👍29👎9
Что нового:
👉 Ограничения на выделяемую память для приложений (некий новый механизм)
👉 Автоматической обнаружение аномалий в использовании приложениями ресурсов устройства
👉 Пост квантовое шифрование в Android Keystore
Подробно читайте в отдельных постах @android_broadcast
🔗 Источник Android Developers Blog
#Android #Android17
Please open Telegram to view this post
VIEW IN TELEGRAM
👍34👎5
По замерам 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
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍67👎12