adblock check

Nova Launcher работает на смартфонах Pixel лучше, чем на других устройствах: почему

Это связано с внедрением в прошивку для Pixel нового API, улучшающего взаимодействие лаунчеров с системой

В прошлом сторонние лаунчеры часто обеспечивали куда более приятный опыт использования Android, чем при использовании встроенных решений. Однако, с введением новых жестов в Android 9, сторонние лаунчеры оказались в затруднённом положении, ведь это новшество поддерживалось только стандартным приложением. Со временем Google начала работать над этой проблемой, и с недавних пор компания смогла добиться в этом успеха.

Если вы использовали недавно вышедшую бета-версию Nova Launcher на Google Pixel в последнее время, вы могли заметить более плавную анимацию при использовании жестовой навигации. К сожалению, это новшество недоступно для остальных смартфонов, по крайней мере сейчас. Чтобы понять, почему так происходит, сначала нужно пояснить, чем отличается взаимодействие с системой Nova Launcher от встроенных лаунчеров, наподобие Pixel Launcher.

Google впервые представила навигацию с помощью жестов в Android 9 Pie. Чтобы жесты казались максимально плавными, Google нужно было сделать соответствующие анимации для переходов между приложениями и правильно реализовать меню недавних приложений. Чтобы сделать и то, и другое, Google решила переместить код, который обрабатывает меню неданих приложений, из SystemUI (системного приложения, отвечающего за графический интерфейс) в Launcher3 — так называется почти любой встроенный лаунчер. Таким образом, родился компонент QuickStep, и из-за его привилегированного положения в системе, Android позволяет установить только встроенный лаунчер в качестве приложения, отвечающего за меню недавних приложений. Это можно исправить с помощью root-доступа, но для большинства пользователей это означает, что сторонние лаунчеры всегда будут работать «криво». В результате, почти каждый столкнулся с тем, что не может использовать сторонний лаунчер в качестве основного, так как тот работает куцо.

Nova Launcher работает на смартфонах Pixel лучше, чем на других устройствах: почему
GIF-анимация доступна по нажатию

На большинстве смартфонов Google Pixel существует API, который сторонние лаунчеры могут использовать, чтобы переход от приложения обратно к главному экрану выглядел гораздо более естественным. Некоторые сторонние лаунчеры, такие как Niagara Launcher и вышеупомянутая Nova Launcher, используют этот API, хотя последний включает его только в те свои сборки, которые всё ещё находятся в разработке. Когда этот API используется, сторонний лаунчер обращается к QuickStep каждый раз, когда пользователь выполняет жест, чтобы вернуться домой. Затем лаунчер указывает системе жестов, какую анимацию нужно воспроизвести, чтобы свернуть приложение.

Вот пример того, как это выглядит в Niagara Launcher:

Nova Launcher работает на смартфонах Pixel лучше, чем на других устройствах: почему
GIF-анимация доступна по нажатию

А вот сравнение, которое показывает, как выглядит анимация на ASUS ROG Phone 5 и Google Pixel 4, работающих под управлением Nova Launcher v7.0.25 (последняя бета-версия на момент публикации статьи) и Android 11:

Вы можете задаться вопросом: является ли этот API эксклюзивным для смартфонов Google Pixel? Ответ — нет. API является частью Launcher3/QuickStep и может быть найден в AOSP, что означает, что он доступен для использования любым лаунчером. Хотя API был передан для Launcher3 21 июля 2020 года, похоже, что он был объединен с основной веткой AOSP с выпуском Android R QPR1 в декабре.

Nova Launcher работает на смартфонах Pixel лучше, чем на других устройствах: почему

Кевин Барри, разработчик Nova Launcher и один из первых, кто заметил этот API, выразил своё подозрение о том, что одна из причин, по которой OEM-производители не используют этот API в своих форках Launcher3, заключается в том, что он появился в Android 11 довольно поздно. Чтобы объединить большие изменения AOSP в одном обновлении, требуется немало усилий, и версия Android R QPR1 определенно содержала огромное их количество. Это послужило причиной того, что LineageOS называет свою последнюю прошивку не «LineageOS 18», а «LineageOS 18.1», хотя основана на версии Android 11 — это сделано для того, чтобы обозначить не версию Android, а тот факт, что прошивка основана на его последней кодовой базе.

Также стоит отметить, что этот API стал доступен только на смартфонах Google Pixel после декабрьского Pixel Feature Drop, который совпадает с общедоступным выпуском Android R QPR1. И несмотря на то, что Pixel 2 получил свое последнее обновление в декабре, это обновление не включало кодовую базу Android R QPR1, поэтому владельцы Pixel 2, использующие Nova Launcher v7, не получили новых анимаций, как другие Pixel (владельцы Pixel 2 могут загрузить новую версию Pixel Launcher, в которой есть новое API, но пользователи сообщают, что даже в таком случае анимации содержат ошибки).

Итак, что потребуется, чтобы этот API был добавлен на другие устройства Android? К сожалению, на этот вопрос нет простого ответа, потому что мы не знаем точно, как именно OEM-производители разрабатывают свои лаунчеры. Учитывая, насколько жестко Google контролирует навигацию с помощью жестов, есть подозрение, что большинство OEM-производителей не сильно изменяют код, связанный с жестами и/или QuickStep. Если OEM-производители не сделают всё для того, чтобы разработать свою реализацию системы жестов, то, по идее, они должны будут использовать этот API в Android 12. Как минимум один производитель, ASUS, уже заявил о том, что будет использовать API в своих будущих прошивках на Android 12. Неизвестно, сообщил ли Google о введении нового API OEM-производителям, но мы надеемся, что они заметят это нововведение и решат включить API в свои форки Launcher3, чтобы улучшить опыт использования сторонних лаунчеров.

Однако на этом работа закончена не будет. Даже после включения этого API, разработчикам еще предстоит проделать большую работу для достижения баланса между сторонними и встроенными лаунчерами, когда нужно будет использовать элементы обоих одновременно. Это нужно для того, чтобы избавиться от подёргиваний и мерцаний во время использования жестов. Иногда может открываться встроенный лаунчер вместо стороннего. Улучшения в анимации — это очень хорошо, но не стоит забывать про оптимизацию кода и исправления багов.

Внимание: это перевод статьи xda-developers.

toddnach
Пользователь
🇷🇺
2 комментария по лайкам по дате
Оставьте комментарий...
Оставьте комментарий...
а что мешает разработчику nova launcher просто добавить новую анимацию отдельно?
🇷🇺
Автор
Они есть, но работают криво :) К сожалению, всё не так просто, как хотелось бы