Ето защо Nova Launcher работи по-добре на телефони Google Pixel

Google добави API, който позволява на програми за стартиране на трети страни, като Nova Launcher, да показват по-плавни анимации за преход. Сега го имат само телефони Pixel.

В миналото приложенията за стартиране на трети страни често предоставяха превъзходно изживяване в сравнение със стандартния стартер, който се намира на повечето телефони с Android. С обновяването на екрана на последните приложения и въвеждането на жестове в Android 9 Pie обаче, Стартовите програми на трети страни бяха поставени в неизгодно положение, тъй като тези нови изживявания бяха интегрирани в запаса приложение за стартиране. С течение на времето Google се опита да направи изживяването на стартовия панел на трети страни не толкова ужасно при използване на жестове и те всъщност започнаха да успяват в това наскоро.

Ако сте използвали скорошна бета версия на Nova Launcher на телефон Google Pixel през последните няколко месеца, може да сте забелязали плавните анимации при използване на навигация с жестове. За съжаление няма да видите същите тези анимации, когато използвате Nova Launcher на друго устройство, поне засега. За да разберем защо първо трябва да обясним накратко какво отличава програмите за стартиране на трети страни като Nova Launcher от стандартните програми за стартиране като Pixel Launcher на Google.

Google за първи път представи навигация с жестове в Android 9 Pie. За да направи жестовете възможно най-плавни, Google трябваше да направи преходите между приложенията да изглеждат безпроблемни. Те също така искаха да позволят на потребителите да имат достъп до целия си списък с приложения от екрана с последните приложения. За да направи и двете, Google реши да премести кода, който обработва екрана с последните приложения от този на Android SystemUI към Launcher3, приложение за стартиране с отворен код на Android, от което се разклоняват повечето стартови програми на OEM. По този начин, QuickStep е роден и поради привилегированото си естество Android позволява само предварително инсталираното приложение за стартиране да бъде зададено като скорошен доставчик на приложения. Това може да бъде заменен с root достъп ако програмата за стартиране на трета страна го поддържа, но за повечето потребители това означава, че приложението за стартиране на трета страна винаги ще разчита на стандартната програма за стартиране, за да обработва жестове и екрана на последните приложения. Резултатът, както повечето от вас вероятно са изпитали, може да бъде малко дрезгав, с преходи, които не изглеждат плавни и безпроблемни. Освен ако не използвате телефон Google Pixel, т.е.

На повечето телефони Google Pixel съществува API, който стартиращите програми на трети страни могат да използват, за да направят прехода от приложение обратно към началния екран да изглежда много по-естествен. Някои приложения за стартиране на трети страни като Ракета за изстрелване на Ниагара и гореспоменатия Nova Launcher се възползват от този API, въпреки че последният го включва само в своя в процес на разработка v7 компилации. Когато се използва този API, приложението за стартиране на трета страна получава намерение и обратно извикване от QuickStep всеки път, когато потребителят извърши плъзгане, за да се върне вкъщи. След това програмата за стартиране на трета страна може да подскаже на системата за жестове как да анимира прозореца, докато се минимизира върху икона на приложение.

Ето пример за това как изглежда това в Niagara Launcher, с любезното съдействие на разработчика на стартера 8bitpit:

И ето сравнение, което показва как изглежда анимацията на ASUS ROG Phone 5 и Google Pixel 4, и двете работят с Nova Launcher v7.0.25 (най-новата бета версия към момента на публикуване) и Android 11:

\r\n https://www.youtube.com/watch? v=equ-8yDw_Do\r\n

Сега може би се чудите: Този API изключителен ли е за телефони Google Pixel? Отговорът е не, не е. API е част от Launcher3/QuickStep и може да се намери в AOSP, което означава, че е отворено за всяко приложение за стартиране на OEM. Докато API беше ангажиран с Launcher3 вътрешно на 21 юли 2020 г. изглежда беше така обединени в главния клон на AOSP с изданието на Android R QPR1 през декември.

API, който кара Nova Launcher и Niagara Launcher да се чувстват по-родни на телефони Google Pixel.

Кевин Бари, разработчикът на Nova Launcher и един от първите, забелязали този API, ни каза, че подозира част от причината, поради която производителите на оригинално оборудване не използват този API в своите разклонения на Launcher3, е, че дойде малко късно в изданието на Android 11 цикъл. Необходими са доста усилия за обединяване на големи промени в AOSP и актуализацията на Android R QPR1 определено съдържа много от тях. В минали години бихме нарекли тези премахвания на кода „издаване за поддръжка“, но Google всъщност вече не ги прави след отблъскване от OEM производителите (или поне така съм чувал). Ето защо LineageOS, популярният персонализиран ROM за Android, нарича последната си версия "LineageOS 18.1“ вместо „LineageOS 18“, за да означава, че ROM е базиран на най-новата кодова база на Android 11, а не на първоначалната версия на Android 11.

Също така си струва да се отбележи, че този API е достъпен само на телефони Google Pixel след Отпадане на Pixel Feature през декември, което съвпада с публичната версия на Android R QPR1. И въпреки че Pixel 2 получи своето окончателна актуализация през декември, тази актуализация не включва кодовата база на Android R QPR1, поради което собствениците на Pixel 2, работещи с Nova Launcher v7, нямат същото изживяване като другите Pixel. (Собствениците на Pixel 2 могат да заредят странично по-нова версия на Pixel Launcher, която има API от по-ново устройство Pixel, но показват потребителски доклади анимацията все още е бъги, дори и да работи от време на време. Напомняме, че Pixel Launcher е изграден върху Launcher3 точно както повечето стандартни стартери, но включва и някои ексклузивни за Pixel функции.)

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

Работата обаче няма да свърши дотук. Дори след включването на този API, има още работа, която трябва да се свърши, за да се постигне паритет между стартиращи програми на трети страни и OEM програми. Например, някои OEM устройства мигат, когато потребителят докосне екрана, преди да се появи анимация към началния екран. Понякога приложението за стартиране на системата се появява вместо избраното приложение за стартиране на трета страна (това ми се е случвало няколко пъти). Подобрената анимация на прехода е хубава, но никой не иска да се занимава с грешки нито в приложението за стартиране, нито в екрана на последните приложения, така че кадрите с код на жестове се нуждаят от известно почистване и/или стандартизиране.

Благодаря на Кевин Бари и Питър Хубер за помощта им в тази статия!