Dit is waarom Nova Launcher beter werkt op Google Pixel-telefoons

Google heeft een API toegevoegd waarmee launchers van derden, zoals Nova Launcher, vloeiendere overgangsanimaties kunnen weergeven. Alleen Pixel-telefoons hebben het nu.

In het verleden boden launcher-apps van derden vaak een superieure ervaring ten opzichte van de stocklauncher die op de meeste Android-telefoons te vinden is. Met de vernieuwing van het recente apps-scherm en de introductie van gebaren in Android 9 Pie, draagraketten van derden werden benadeeld omdat deze nieuwe ervaringen in de voorraad werden geïntegreerd launcher-app. In de loop van de tijd heeft Google geprobeerd om de launcher-ervaring van derden niet zo verschrikkelijk te maken bij het gebruik van gebaren, en daar zijn ze de laatste tijd ook in geslaagd.

Als je de afgelopen maanden een recente bètaversie van Nova Launcher op een Google Pixel-telefoon hebt gebruikt, heb je misschien de vloeiende animaties opgemerkt bij het gebruik van gebarennavigatie. Helaas zul je dezelfde animaties niet zien als je Nova Launcher op een ander apparaat gebruikt, althans voorlopig niet. Om te begrijpen waarom we eerst kort moeten uitleggen wat launchers van derden, zoals Nova Launcher, onderscheidt van stocklaunchers zoals Pixel Launcher van Google.

Google introduceerde voor het eerst gebarennavigatie in Android 9 Pie. Om gebaren zo vloeiend mogelijk te laten aanvoelen, moest Google app-overgangen er naadloos uit laten zien. Ze wilden gebruikers ook toegang geven tot hun volledige app-lijst vanuit het scherm met recente apps. Om beide te doen, heeft Google besloten de code die het scherm met recente apps afhandelt, van Android te verplaatsen SystemUI naar Launcher3, de open-source launcher-app van Android waar de meeste OEM-aandelenlaunchers van zijn afgeleid. Dus de Quickstep component was geboren, en vanwege zijn bevoorrechte karakter staat Android alleen toe dat de vooraf geïnstalleerde launcher-app wordt ingesteld als de recente apps-provider. Dit kan zijn overschreven met root-toegang als de launcher van derden dit ondersteunt, maar voor de meeste gebruikers betekent dit dat een launcher-app van derden altijd afhankelijk zal zijn van de stocklauncher om gebaren en het scherm met recente apps af te handelen. Het resultaat kan, zoals de meesten van jullie waarschijnlijk hebben ervaren, een beetje janky zijn, met overgangen die er niet vloeiend en naadloos uitzien. Tenzij je een Google Pixel-telefoon gebruikt.

Op de meeste Google Pixel-telefoons bestaat er een API die launchers van derden kunnen gebruiken om de overgang van een app terug naar het startscherm er veel nativeer uit te laten zien. Sommige launcher-apps van derden, zoals Niagara-lanceerder en de eerder genoemde Nova Launcher profiteren van deze API, hoewel laatstgenoemde deze alleen in zijn API opneemt v7-builds in ontwikkeling. Wanneer deze API wordt gebruikt, ontvangt de launcher-app van derden een intentie en een terugbelactie van QuickStep wanneer de gebruiker een veegbeweging uitvoert om naar huis te gaan. Het opstartprogramma van derden kan het gebarensysteem vervolgens laten weten hoe het venster moet worden geanimeerd terwijl het wordt geminimaliseerd naar een app-pictogram.

Hier is een voorbeeld van hoe dit eruit ziet in Niagara Launcher, met dank aan de ontwikkelaar van de launcher 8bitpit:

En hier is een vergelijking die laat zien hoe de animatie eruit ziet op een ASUS ROG-telefoon 5 En Google Pixel4, beide met Nova Launcher v7.0.25 (de nieuwste bètaversie op het moment van publicatie) en Android 11:

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

Nu vraag je je misschien af: is deze API exclusief voor Google Pixel-telefoons? Het antwoord is nee, dat is niet zo. De API maakt deel uit van Launcher3/QuickStep en is te vinden in AOSP, wat betekent dat het open staat voor elke OEM-launcher-app. Terwijl de API was toegewijd aan Launcher3 intern op 21 juli 2020, zo lijkt het samengevoegd in de AOSP-masterbranch met de Android R QPR1-release in december.

De API waardoor Nova Launcher en Niagara Launcher meer native aanvoelen op Google Pixel-telefoons.

Kevin Barry, de ontwikkelaar van Nova Launcher en een van de eersten die deze API ontdekte, vertelde ons dat hij een deel van de De reden waarom OEM's deze API niet gebruiken in hun forks van Launcher3 is dat het een beetje laat kwam in de release van Android 11 fiets. Het kost nogal wat moeite om grote AOSP-wijzigingen samen te voegen, en de Android R QPR1-update bevatte daar zeker veel van. In de afgelopen jaren noemden we deze codedrops een 'onderhoudsrelease', maar Google doet dat niet echt meer na pushback van OEM's (zo heb ik gehoord). Dit is de reden waarom LineageOS, de populaire aangepaste Android-ROM, zijn nieuwste release "LineageOS 18.1" in plaats van "LineageOS 18" om aan te geven dat de ROM is gebaseerd op de nieuwste Android 11-codebase in plaats van op de oorspronkelijke Android 11-release.

Het is ook vermeldenswaard dat deze API alleen toegankelijk is op Google Pixel-telefoons na de Pixel-functiedaling van december, die samenvalt met de openbare Android R QPR1-release. En ondanks dat de Pixel 2 het krijgt laatste update in december, bevatte die update niet de Android R QPR1-codebase. Daarom hebben Pixel 2-bezitters met Nova Launcher v7 niet dezelfde ervaring als andere Pixels. (Pixel 2-bezitters kunnen een nieuwere versie van Pixel Launcher sideloaden die de API van een recenter Pixel-apparaat heeft, maar gebruikersrapporten geven aan de animatie bevat nog steeds fouten, ook al werkt deze af en toe. Ter herinnering: Pixel Launcher is net als de meeste stocklaunchers bovenop Launcher3 gebouwd, maar bevat ook enkele exclusieve Pixel-functies.)

Dus wat is er nodig voordat deze API aan andere Android-apparaten wordt toegevoegd? Helaas is daar geen eenvoudig antwoord op te geven, omdat we niet precies weten hoe elke OEM zijn launcher-app ontwikkelt. Gegeven hoe Google beheert strak de gebarennavigatie op volledig scherm, vermoeden we dat de meeste OEM's de code met betrekking tot gebaren en/of QuickStep niet ingrijpend wijzigen. Tenzij een OEM zijn uiterste best doet om de commit terug te draaien, de code te breken of te weigeren bij te werken Launcher3, dan zouden we moeten zien dat deze API wordt toegevoegd aan OEM-draagraketten wanneer ze bovenop de aanstaande Androïde 12 uitgave. Eén OEM waarmee we spraken, ASUS, vertelde ons zelfs dat ze van plan zijn deze API in hun Android 12-update op te nemen. We weten niet of Google deze wijziging aan OEM's heeft doorgegeven, maar we hopen dat meer OEM's kennis nemen van deze wijziging en besluiten de API op te nemen in hun forks van Launcher3 om de ervaring van het gebruik van derden te verbeteren draagraketten.

Het werk zal daar echter niet eindigen. Zelfs nadat deze API is opgenomen, moet er nog meer werk worden verzet om pariteit te bereiken tussen launchers van derden en OEM-launchers. Sommige OEM-apparaten flikkeren bijvoorbeeld wanneer de gebruiker op het scherm tikt voordat er een animatie naar het startscherm verschijnt. Soms verschijnt de systeemstarter-app in plaats van de geselecteerde opstartapp van derden (ik heb dit een paar keer meegemaakt). Een verbeterde overgangsanimatie is leuk, maar niemand wil te maken krijgen met bugs in de launcher-app of het scherm met recente apps, dus de gebaarcode heeft nog steeds wat opschoning en/of standaardisatie nodig.

Met dank aan Kevin Barry en Peter Huber voor hun hulp bij dit artikel!