У нас в Росатоме сотрудникам иногда предлагают ездить смотреть на разные предприятия госкорпорации. Вот удалось скататься за счёт компании в Мурманск, попасть на Атомфлот и на ледокол-музей «Ленин».
Мурманск сам по себе показался мне особенно примечательным своим рельефом: дворы на разном уровне и для перемещения от дома к дому нужно то и дело ходить по лестницам. В целом же конечно после Петербурга он смотрится простовато, а некоторые дома в глубине откровенно страшные и с точки зрения жителя столиц выглядят чуть ли не аварийно. Здание аэропорта вообще похоже на среднестатистическую коробку государственной конторы где-нибудь во дворах. Однако, ведётся строительство нового аэропорта. И, вообще, приятно удивляет сам факт, что в таких тяжёлых условиях есть вполне современный развитый город, в котором присутствует всё, к чему мы привыкли в плане сервисов и комфорта: от топовых отелей до Яндекс Такси. Правда, я жил в квартире, потому что отели в ноль раскупили китайцы. Говорят, у них есть такое поверье, что в дни зачатия ребёнка нужно увидеть Полярное Сияние, вот они и летят в Мурманск толпами.
На Атомфлоте почти ничего нельзя было фотографировать. В доке в этот момент стоял красивый ледокол «Сибирь» из новой универсальной серии проекта 22220. Эта машина с двумя реакторами по 175 МВт может менять свою осадку и одинаково подходит как для ведения судов по Северному Морскому Пути, так и для работы в крупных замерзающих зимой реках, таких, как Енисей и Обь. Зато есть снимок из центра морских операций, куда выводят интерактивную карту местоположения всех ледоколов и спутниковый анализ плотности льда во всём арктическом регионе. А ещё глянули на тренажёры, за которыми учатся и сдают экзамены операторы ядерной установки. На фото тренажёр, который дублирует пульт довольно старого ледокола 70-х годов, но ещё в ходу; а у новых дисплеи и трекпады везде. Так вот, работа этих операторов похожа на то, что нам показывали в сериале «Звёздный Путь», когда капитан просит машинное отделение дать мощности на варп-ядро, чтобы сделать быстрый скачок, и инженеры начинают быстро перебирать кнопки, а индикаторы менять своё состояние.
Ледокол «Ленин» это первое в мире надводное атомное судно. Сейчас он снят с эксплуатации и превращён в музей. В то время для его работы требовался персонал порядка 250 человек. У современных ледоколов эта цифра около 50, хотя они больше, сложнее и мощнее, потому что много работы выполняет теперь автоматика. Ещё два интересных факта:
1. Ледоколу часто нужно рывками с разбегу преодолевать какой-то особо сложный участок, и именно поэтому установка у него электрическая, а не прямой привод от турбин реактора. Электричество даёт большую динамику.
2. Если ледокол застрял во льдах, у него есть специальная система изменения центра тяжести, позволяющая ему раскачиваться вперёд-назад и влево-вправо, чтобы чуть-чуть освободиться, а дальше уже рывками выбраться.
В общем и целом понравилось. Я бы и сам с удовольствием съездил, а тут ещё и на работе предложили. Но в Мурманске и вообще за Полярным Кругом ещё много всего можно посмотреть, это уже в личном порядке надо будет.
#travel#life
🤖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
🤖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
🤖 Google объявила о полноценной поддержке внешних дисплеев в Android (также нужна поддержка со стороны устройства)
Я попробовал подключить Pixel 9 Pro к внешнему 4K монитору по Type-C. Итог - зернистость такая, что пользоваться невозможно. В настройках выбрать выше FullHD не дает (возможно, ограничение моего устройства). Приложения можно растягивать как угодно, что порой приводит к проблемам их отображения и они не перестраиваются полностью. Начало хорошее, но очень много работы с разработчиками по адаптации под больши экраны и ресайз на лету.
Google дала множества библиотек и руководств по адаптации под большие экраны, а также как работать с несколькими дисплеями.
🔗 Источник - Android Developers Blog
#Android#AndroidDev
🤖Почему разработчик не контролирует, как выглядят уведомления в системной панели
Когда разработчик использует NotificationCompat.Builder для создания уведомлений из Android приложения, может показаться, что прямого контроля на внешний вид нету 🤯 На самом деле формируется не визуальный компонент, а объект данных, который описывает что есть в уведомление.
Этот объект — это просто структура, сериализуемая через Parcelable. Он передаётся в системный процесс через Binder — механизм межпроцессного взаимодействия в Android. А вот принимать и интерпретировать этот объект будет специальное системное приложение — SystemUI.
Уведомления отображаются не Android сам по себе, а конкретное приложение, которое называется com.android.systemui. И это приложение полностью отвечает за то, как будет выглядеть уведомление. Оно решает, какие поля отобразить, где их разместить, какой стиль применить, как будет выглядеть кнопка, будут ли видны иконки — и многое другое. Часть из данных может игнорироваться.
Вот почему одно и то же уведомление может выглядеть совершенно по-разному на разных устройствах и версиях ОС. Один и тот же вызов setContentTitle("Новость") может дать совершенно разный результат на Pixel с чистым Android и на Xiaomi с MIUI. Более того, даже RemoteViews, которые позволяют задавать кастомные layout’ы для уведомлений, могут игнорироваться или ограничиваться прошивками производителей.
Именно по этой причине я не люблю когда в уведомления вставляют Custom View, который выбивается из стиля и часто портит визуал системы и поведение. Мечтаю чтобы его поскорее запретили в Android. Пожалуйста, хотя бы в Android 17 🙏
Запомните ‼️ Уведомление в Android — это не UI объект, это контракт между приложением и SystemUI, который интерпретируется, а не исполняется дословно. Поэтому пишите уведомления так, чтобы они были понятны системе, а красоту UI вы можете контролировать только внутри вашего приложения.
#android#androiddev
Пример App Widget из Tier 1
👉 Персонализированы (работают с Material You)
👉 Используют всё доступное место
👉 Следуют лучшим практикам размещения компонентов
👉 Полезные для пользователя
#android#androiddev
📱В 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
🚀 Вышел 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
🚀Jetpack Ink 1.0 стабильна! Библиотека для работы с рукописным вводом и графикой
Google выпустил стабильную версию Jetpack Ink 1.0 — библиотеку для создания продвинутых функций рукописного ввода (inking) и рисования в Android-приложениях.
Это многомодульная библиотека, которая обрабатывает цифровые штрихи (strokes) от ввода (стилус или палец) до их показа. Она предоставляет все необходимые инструменты для создания реалистичного и отзывчивого опыта письма или рисования.
👨💻 Кому будет полезна?
👉 Разработчикам приложений для заметок, скетчей, цифровых подписей.
👉 Образовательным приложениям, требующим аннотирования документов или изображений.
👉 Любому продукту, где нужен реалистичный, выразительный пользовательский ввод поверх контента.
Библиотека берет на себя сложности обработки графики, физики мазков и обработки жестов, позволяя легко добавить профессиональные функции рисования.
#Jetpack#AndroidDev#Android
🤖 Отлаживайте фоновые задачи в Android Studio как профи: Background Task Inspector для WokrManager
Работаете с WorkManager? Тогда вам точно пригодится встроенный в Android Studio инструмент — Background Task Inspector. Это ваш главный помощник для визуального мониторинга и отладки фоновых задач.
Что вы видите в инспекторе:
- Все WorkManager задачи в одном месте
- Текущие статусы: Running, Enqueued, Failed, Succeeded
- Детальную информацию о каждом воркере
Особенно мощно инструмент работает с цепочками задач:
// Например, у вас есть такая цепочка:
val workA = OneTimeWorkRequestBuilder<CleanupWorker>().build()
val workB = OneTimeWorkRequestBuilder<WaterColorFilterWorker>().build()
val workC = OneTimeWorkRequestBuilder<BlurEffectFilterColor>().build()
workManager
.beginWith(workA)
.then(workB)
.then(workC)
.enqueue()
Визуализация графа выполнения покажет:
- Какая задача завершилась успешно (Succeeded)
- Какая упала (Failed) и почему
- Как это повлияло на последующие задачи
Типичный сценарий отладки:
Видите статус «Enqueued»? Значит задача в очереди, но не запускается. Возможные причины:
- Ограничения не выполняются (нет сети, не заряжается устройство)
- Предыдущая задача в цепочке не завершилась
- Достигнут лимит параллельных задач
Преимущества использования:
- Экономия времени на логирование и отладку
- Наглядное представление сложных цепочек задач
- Быстрая диагностика проблем с выполнением фоновых операций
Инструмент уже ждет вас в Android Studio → View → Tool Windows → App Inspection → Background Task Inspector.
#AndroidStudio#Android#AndroidDev
🤖Android 16 QPR2 вышел — первый минорный релиз SDK с новыми API!
Google выпустил Android 16 QPR2 — первое минорное обновление платформы, которое приносит новые функции без ломающих изменений.
🔧Новый подход к версиям SDK
Теперь можно проверять минорные обновления через новые поля в Build:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.BAKLAVA &&
Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
// API из QPR2
}
Ключевые изменения:
👉Расширенная темная тема — система автоматически инвертирует интерфейс для доступности
👉Пользовательские формы иконок — пользователи могут менять форму всех иконок
👉Интерактивный шеринг — обновление контента в реальном времени в превью шаринга
👉Новый сборщик мусора — снижает нагрузку на CPU
Каждую фичу разберем подробнее в следующих постах! Подписывайте на @android_broadcast, чтобы не пропустить
#Android16#AndroidDev#Android
🤖 Пример работы расширенной темной темы с Compose приложением. Тут придется темную делать сам, так как настройка не повлияла
#android16#android#androiddev