Как стать автором
Обновить
Usetech
Международная IT-компания

Google I/O 2025. Что нового в Android

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров2.1K
image

Всем привет! С вами Анна Жаркова, руководитель практики по мобильному направлению из компании Usetech. Прошли 2 дня Google I/O и живых сессий и воркшопов, новинки уже представлены, не все туториалы и плейлисты еще не выложены, но у нас уже есть, что обсудить. Поговорим мы не с AI, хотя про него сегодня тоже будет, а об Android. Все аспекты мы затронуть не сможем, все-таки информации было очень много, а по каждой из новинке можно писать и отдельную статью, и даже доклад. Поэтому рассмотрим наиболее яркие моменты.

Jetpack Compose

Как говорится, это база и основной инструмент разработки UI для приложений экосистемы Android (но знать про Activity, Fragment и View вам все еще полезно, ибо это есть под капотом Compose).
Команда инженеров Google провела большую работу по оптимизации, что позволило значительно улучшить производительность:
image

В процессе такие работы:
— Pausable Composition, позволяет приостанавливать композиции и распределять их выполнение на несколько кадров.
— фоновая предзагрузка текста позволяет заранее подготавливать кеши разметки текста в фоновом потоке, что ускоряет его отрисовку.
— улучшения предзагрузки LazyLayout делают ленивые списки умнее в определении объёма контента для предзагрузки, используя преимущества Pausable Composition.

Также повышена стабильность решений Jetpack Compose, а количество экспериментальных библиотек сокращено на 32% процента (т.е они признаны стабильными).
Попробовать улучшенный Compose можно с версии Compose Bill of Materials (BOM) version 2025.05.01.

Из новых возможностей Compose был сделан акцент на следующих:
— поддержка автозаполнения в текстовых полях,
— автоматическое изменение размера текста под родительский контейнер,
— отслеживание видимости элемента (актуально для списков и скроллов) с помощью специального модификатора,
— модификатор анимации границ для красивой анимации перестройки объектов внутри LookaheadScope,
— проверки доступности в тестах помогают создавать более доступный интерфейс с помощью автоматизированного a11y-тестирования.

Была представлена новая дизайн-система для экосистемы Android Material Expessive 3:
image

Из приятного: разработчики позаботились об обратной совместимости решений, чтобы не ломать ваш код и не принуждать к срочному переходу на новый дизайн-кит.

Особый акцент в этом году был сделан на адаптивности UI под разные устройства Android. Начиная с Android 16 и Android SDK36, ограничения ориентации, соотношения сторон и размера будут игнорироваться для устройств с дисплеями от sw600dp, а UI автоматически перестраиваться:
image

Что интересно, адаптивная разработка затрагивает и Android XR (новый девайс от Google). Причем вы можете попробовать поиграть как с шаблоном для разработки приложений под него, так и с эмулятором.
Еще один девайс, которому на этой сессии уделили внимание, умные часы от Google, а также как сделать для них красивые, адаптивные и удобные приложения:
image
Подробно смотрите в тематических воркшопах и туториалах.

Также была представлена новая библиотека для навигации Navigation3 (пример работы ниже):

// Define the routes in your app and any arguments.
data object Home
data class Product(val id: String)

// Create a back stack, specifying the route the app should start with.
val backStack = remember { mutableStateListOf<Any>(ProductList) }

// A NavDisplay displays your back stack. Whenever the back stack changes, the display updates.
NavDisplay(
    backStack = backStack,

    // Specify what should happen when the user goes back
    onBack = { backStack.removeLastOrNull() },

    // An entry provider converts a route into a NavEntry which contains the content for that route.
    entryProvider = { route ->
        when (route) {
            is Home -> NavEntry(route) {
                Column {
                    Text("Welcome to Nav3")
                    Button(onClick = {
                        // To navigate to a new route, just add that route to the back stack
                        backStack.add(Product("123"))
                    }) {
                        Text("Click to navigate")
                    }
                }
            }
            is Product -> NavEntry(route) {
                Text("Product ${route.id} ")
            }
            else -> NavEntry(Unit) { Text("Unknown route: $route") }
        }
    }
)


Заявлено, что новое решение более гибкое и удобное, чем предыдущее. Также оно позволяет разработчику самому управлять backStack, расширять и реализовывать собственную навигацию на базовых компонентах, сохранять состояние каждого элемента стэка, поддерживает предиктивный возврат. Из дополнительных плюсов — собственная анимация, поддержка многомодульности и адаптивность.
Возможно (мое допущение), позже нам представят версию и для Compose Multiplatform.

Еще стоит отметить поддержку в Compose API для более простой и удобной работы с камерой:
@Composable
private fun VideoPlayer(
    player: Player?, // from media3
    modifier: Modifier = Modifier
) {
    Box(modifier) {
        PlayerSurface(player) // from media3-ui-compose
        player?.let {
            // custom play-pause button UI
            val playPauseButtonState = rememberPlayPauseButtonState(it) // from media3-ui-compose
            MyPlayPauseButton(playPauseButtonState, Modifier.align(BottomEnd).padding(16.dp))
        }
    }
}

И многое другое.

Kotlin Multiplatform

Google продолжает развивать и поддерживать разработку приложений с помощью Kotlin Multiplatform. За прошедший год было выпущено (не только Google) более 900 новых библиотек для KMP, а также выпущены стабильные версии Jetpack библиотек на разные случаи жизни:
image

Правда, мы знаем, что это специальные версии библиотек, и часть из них промаркирована, как альфа, но на стабильность это не влияет.
На I/O анонсировали новый шаблон для создания приложения KMP. Попробовать его вы можете, установив себе Android Studio Narwal (Preview) и плагин Kotlin Multiplatform. Последний по-прежнему доступен в РФ только не напрямую.
Что изменилось:
— убран шаблон для создания библиотеки KMP из студии. Хорошо, хоть по-прежнему можно добавить shared-модуль отдельно к нативному проекту;
— убран выбор способа поставки общего модуля кода, только framework xcode;
— добавлены шаблоны для выбора приложения с разными настройками и таргетами (как Kotlin Multiplatform Wizard), также на экране выбора есть ссылка для перехода на веб-форму Kotlin Multiplatform Wizard.

Базовый пример почти не поменялся: добавилась поддержка Compose iOS и подключение ComposeView в нативном iOS приложении.

Виджеты, живые обновления (live updates)

Google продолжают развивать виджеты экрана и улучшать их.
image
Вышла улучшенная версия фрейворка Glance (1.2) с поддержкой превью виджетов, также улучшен перформанс данного функционала.
Из знакового: виджеты становятся доступны на Launch-скрине, а также виджеты и уведомления с поддержкой Live-Updates (живых обновлений). Это практически полный аналог Live Activity виджетов iOS. Более того, для Live Updates представлен специальный прогрессивный стиль реализации. Такое живое уведомление позволит отображать, на каком этапе находится задача, для которой оно было создано. Например, если вы ждете заказ или такси.

Gemini-помощник в Android Studio

В этой части нам представили, бесспорно, крутые и полезные новинки:

— генерация кода Gemini с поддержкой не только контекста проекта, но и отдельных файлов и даже изображений,
— AI-агент для управления зависимостями в коде, исправления ошибок и встраивания нового кода прямо в ваш код,
— создание Preview для Composable, изменения UI с помощью AI:
image

— AI-тесты Journeys c описанием шагов на естественном языке для комплексного тестирования различного функционала приложения:

image

И это далеко не все.

Подробный разбор функционала Gemini в нашем блоге в ближайшее время.

Кстати, доработки действительно не без вдохновения обычными разработчиками/энтузиастами, их решениями, изысканиями и болями:
image

Я прям вижу свой промпт.

Но команда инженеров, безусловно, молодцы. Они проделали огромную работу, чтобы можно было использовать расширенный функционал в IDE и применять правки прям к своему коду. Так и хочется узнать, чем им ответят Apple.

Производительность, энергопотребление и безопасность

Представленные возможности требуют производительности, оптимизации кода, улучшения перформанса, а также уменьшения энергопотребления. По традиции, это затрагивает квоту фоновых процессов для приложений:
— к процессам, стартующим при активном приложении, применяется квота ограничения по времени,
— для процессов из standby-bucket квоты увеличиваются,
— задачи, выполняющиеся параллельно с Foreground Service, также будут учитывать квоту времени.

Также меняется API Expedited Work:

image

В новой версии Android 16 анонсирована поддержка 16kb страниц памяти.
В плане безопасности представлена Privacy Sandbox, специальная изолированная среда выполнения приложений. Также в этой версии ожидается улучшенная защита от атак с перенаправлением Intent (Intent Redirection). По умолчанию обеспечивается защита от стандартных атак с перенаправлением Intent с минимумом необходимых изменений для совместимости и разработчиков.
И это тоже далеко не все.

Подведем итог

Проделана огромная работа по разным направлениям разработки Android, IDE, различных фич и инструментов. Подготовлены разнообразные кодлабы для разработчиков разных уровней. Есть действительно крутые и революционные вещи (одни новшества для Gemini чего стоят). Осталось проверить их на практике.

Плейлист с видео тематических сессий можно найти здесь.

А что понравилось больше всего вам? Какие из новинок вам зашли, а какие нет?
Пишите в комментариях
Теги:
Хабы:
+3
Комментарии9

Публикации

Информация

Сайт
usetech.ru
Дата регистрации
Дата основания
Численность
1 001–5 000 человек
Местоположение
Россия
Представитель
Usetech