He aquí por qué Nova Launcher funciona mejor en teléfonos Google Pixel

Google agregó una API que permite a lanzadores de terceros como Nova Launcher mostrar animaciones de transición más fluidas. Ahora solo los teléfonos Pixel lo tienen.

En el pasado, las aplicaciones de inicio de terceros a menudo brindaban una experiencia superior al iniciador estándar que se encuentra en la mayoría de los teléfonos Android. Sin embargo, con la renovación de la pantalla de aplicaciones recientes y la introducción de gestos en Android 9 Pie, Los lanzadores de terceros quedaron en desventaja a medida que estas nuevas experiencias se integraron en el stock. aplicación de inicio. Con el tiempo, Google ha intentado hacer que la experiencia del iniciador de terceros no sea tan terrible al usar gestos, y de hecho han comenzado a tener éxito en esto recientemente.

Si ha utilizado una versión beta reciente de Nova Launcher en un teléfono Google Pixel en los últimos meses, es posible que haya notado las animaciones fluidas al utilizar la navegación por gestos. Desafortunadamente, no verás estas mismas animaciones cuando uses Nova Launcher en ningún otro dispositivo, al menos por ahora. Para entender por qué, primero debemos explicar brevemente qué separa a los lanzadores de terceros como Nova Launcher de los lanzadores estándar como Pixel Launcher de Google.

Google introdujo por primera vez la navegación por gestos en Android 9 Pie. Para que los gestos se sintieran lo más fluidos posible, Google necesitaba que las transiciones de las aplicaciones parecieran fluidas. También querían permitir a los usuarios acceder a su lista completa de aplicaciones desde la pantalla de aplicaciones recientes. Para hacer ambas cosas, Google decidió mover el código que maneja la pantalla de aplicaciones recientes de Android. SystemUI to Launcher3, la aplicación de inicio de código abierto de Android de la que se bifurcan la mayoría de los lanzadores de stock OEM. Por lo tanto, la Paso rápido nació el componente y, debido a su naturaleza privilegiada, Android solo permite configurar la aplicación de inicio preinstalada como proveedor de aplicaciones recientes. Esto puede ser anulado con acceso root si el iniciador de terceros lo admite, pero para la mayoría de los usuarios, esto significa que una aplicación de inicio de terceros siempre dependerá del iniciador estándar para manejar los gestos y la pantalla de aplicaciones recientes. El resultado, como la mayoría de ustedes probablemente habrán experimentado, puede ser un poco extraño, con transiciones que no parecen fluidas ni perfectas. A menos que uses un teléfono Google Pixel, claro está.

En la mayoría de los teléfonos Google Pixel, existe una API que los lanzadores de terceros pueden usar para hacer que la transición de una aplicación a la pantalla de inicio parezca mucho más nativa. Algunas aplicaciones de inicio de terceros como Lanzador Niágara y el mencionado Nova Launcher están aprovechando esta API, aunque este último sólo la incluye en su compilaciones v7 en desarrollo. Cuando se utiliza esta API, la aplicación de inicio de terceros recibe una intención y una devolución de llamada de QuickStep cada vez que el usuario realiza un gesto de deslizar para ir a casa. El iniciador de terceros puede luego indicarle al sistema de gestos cómo animar la ventana mientras se minimiza en el ícono de una aplicación.

Aquí hay un ejemplo de cómo se ve esto en Niagara Launcher, cortesía del desarrollador del lanzador. 8 bits:

Y aquí hay una comparación que muestra cómo se ve la animación en un Teléfono ASUS ROG 5 y Google Píxel 4, ambos ejecutando Nova Launcher v7.0.25 (la última versión beta en el momento de la publicación) y Android 11:

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

Ahora quizás te preguntes: ¿Esta API es exclusiva de los teléfonos Google Pixel? La respuesta es no, no lo es. La API es parte de Launcher3/QuickStep y se puede encontrar en AOSP, lo que significa que está abierto a cualquier aplicación de inicio OEM. Mientras que la API estaba comprometido con Launcher3 internamente el 21 de julio de 2020, parece que fue fusionado en la rama maestra de AOSP con el lanzamiento de Android R QPR1 en diciembre.

La API que hace que Nova Launcher y Niagara Launcher se sientan más nativos en los teléfonos Google Pixel.

Kevin Barry, el desarrollador de Nova Launcher y uno de los primeros en detectar esta API, nos dijo que sospecha que parte del La razón por la que los OEM no utilizan esta API en sus bifurcaciones de Launcher3 es que llegó un poco tarde en el lanzamiento de Android 11. ciclo. Se necesita bastante esfuerzo para fusionar grandes cambios de AOSP, y la actualización de Android R QPR1 definitivamente contenía muchos de ellos. En años anteriores, llamábamos a estas caídas de código una "versión de mantenimiento", pero Google ya no las hace después de la oposición de los OEM (o eso he oído). Es por eso que LineageOS, la popular ROM personalizada de Android, llama a su última versión "LineageOS 18.1" en lugar de "LineageOS 18" para indicar que la ROM se basa en el último código base de Android 11 en lugar de la versión inicial de Android 11.

También vale la pena señalar que solo se puede acceder a esta API en teléfonos Google Pixel después de la Caída de funciones de píxeles de diciembre, que coincide con el lanzamiento público de Android R QPR1. Y a pesar de que el Pixel 2 obtuvo su actualización final en diciembre, esa actualización no incluía el código base de Android R QPR1, razón por la cual los propietarios de Pixel 2 que ejecutan Nova Launcher v7 no tienen la misma experiencia que otros Pixel. (Los propietarios de Pixel 2 pueden descargar una versión más nueva de Pixel Launcher que tiene la API de un dispositivo Pixel más reciente, pero Los informes de los usuarios indican la animación todavía tiene errores incluso si funciona de vez en cuando. Como recordatorio, Pixel Launcher está construido sobre Launcher3 al igual que la mayoría de los lanzadores estándar, pero también incluye algunas funciones exclusivas de Pixel).

Entonces, ¿qué se necesita para que esta API se agregue a otros dispositivos Android? Desafortunadamente, no hay una respuesta fácil para eso, porque no sabemos exactamente cómo cada OEM desarrolla su aplicación de inicio. dado como Google controla estrictamente la navegación por gestos en pantalla completa, sospechamos que la mayoría de los OEM no modifican mucho el código relacionado con gestos y/o QuickStep. A menos que un OEM haga todo lo posible para revertir la confirmación, romper el código o negarse a actualizar Launcher3, entonces deberíamos ver que esta API se agrega a los lanzadores OEM cada vez que se reorganizan sobre el próximo androide 12 liberar. De hecho, un OEM con el que hablamos, ASUS, nos dijo que planean incorporar esta API en su actualización de Android 12. No sabemos si Google ha comunicado este cambio a los OEM, pero esperamos que más OEM se den cuenta de este cambio. y deciden incorporar la API en sus forks de Launcher3 para mejorar la experiencia de uso de terceros lanzadores.

Sin embargo, el trabajo no terminará ahí. Incluso después de incluir esta API, aún queda trabajo por hacer para lograr la paridad entre los lanzadores de terceros y los lanzadores OEM. Por ejemplo, algunos dispositivos OEM parpadean cuando el usuario toca la pantalla antes de que aparezca una animación en la pantalla de inicio. A veces, aparece la aplicación de inicio del sistema en lugar de la aplicación de inicio de terceros seleccionada (me ha sucedido esto varias veces). Una animación de transición mejorada es buena, pero nadie quiere lidiar con errores ni en la aplicación de inicio ni en la pantalla de aplicaciones recientes, por lo que el código de gestos aún necesita algo de limpieza y/o estandarización.

¡Gracias a Kevin Barry y Peter Huber por su ayuda en este artículo!