Google I/O 2023

1. Novedades de Android Studio
2. Passkeys
3. Google Android TV
4. Google Pay y Wallet
5. Depuración con Jetpack Compose
6. SDK de Firebase
7. Material Design
8. Optimizar deep linking
9. Novedades de Firebase Crashlytics
10. Novedades de Kotlin para Desarrollo Android
11. Mejoras Android 14

El pasado mes de mayo tuvo lugar otra edición del Google I/O 2023  un evento enfocado en sus inicios hacia los desarrolladores pero que con su keynote de apertura sirve para que Google enseñe al mundo sus novedades para el 2023.

Las Google I/O de este año bien se podría rebautizar como Google A/I pues una buena parte de la Keynote estuvo enfocada a los progresos y novedades sobre inteligencia artificial. Por ejemplo la nueva función de “Ayúdame a escribir” de Gmail, mejoras de edición de fotografías de Google Fotos o la presentación del nuevo asistente conversacional Bard, que estará integrado en el propio buscador y herramientas como Google Docs. y Sheets.

Por supuesto no faltó la presentación de nuevos dispositivos como fueron el Píxel 7a, Pixel Fold y Pixel Tablet.

Pero Google I/O es mucho más que una Keynote. Durante los 3 días del evento se realizan varios talleres y charlas enfocadas a desarrolladores. En el equipo de Android de O2O se ha querido destacar las siguientes. Gracias Carlos Ramos, Javier Mancebo, Biel Fernñandez,  Jose Antonio Campillo, Juan Ruano, Nuria Martínez, Rubén Dominguez, Alberto Hernández, Jorge Tsitsaris, Pedro Sánchez y por supuesto a nuestro TL Esteban Lamas:

Novedades de Android Studio

Estas son las novedades que presenta el nuevo Android Studio “Flamingo”:

  • Intercepción de tráfico: Nuevo en el Network inspector, permite crear reglas e inyectar encabezados, códigos de estado, etc.
  • Theme AppsIcon Preview: Previsualizar iconos en función del background (circular, cuadrado, dimensiones, modo claro o modo oscuro).
  • Dynamic color en Compose Preview.
  • Nuevas plantillas para Compose y Material 3.

Por otro lado, se presentaron las versiones Beta, “Giraffe” y canary de “Hedgehog”:

  • Documentación por cada versión del SDK
  • Migración de Groovy a Kotlin DSL
  • Se puede conectar el dispositivo y que automáticamente haga el modo espejo en el IDE.
  • Probando la app, parecida a la vista de límites de diseño, podemos hacer clic en los diferentes componentes, y hacer análisis de ellos, incluso editarlos en tiempo real.
  • Ante un crash, a través de un bot de IA, el propio IDE te dice por qué has tenido el crash y la posible solución.
  • Nueva interfaz del IDE.
  • Studio Bot: realiza sugerencias que puedes incluir en tú código. Se le puedes hacer peticiones de código, incluso test unitarios, y también pedirle sugerencias de naming de clases.

Passkeys

Las claves de acceso o passkeys nacen de la necesidad de eliminar las contraseñas a la hora de autenticar usuarios en sistemas. Este sistema lo desarrolla FIDO (Fast Identity Online) una alianza de grandes empresas que incluye Google, Apple o Microsoft y W3C.

Para ello desarrollan WebAuthN (web authentication) un estándar para autenticación de usuarios que se basa en claves asimétricas. Se usa una clave privada que se almacena en el dispositivo del usuario y una pública que se comparte con el servidor. De esta manera el servidor no almacena información sensible por lo que no importa que sufra un ataque. Además, su otra gran ventaja es que los usuarios no tienen que recordar contraseñas, ni hay que desarrollar sistemas para recuperar o cambiarlas.

En el caso de Android, el encargado de gestionar las claves del usuario es Google Credential Manager. El administrador de credenciales es una API de Jetpack que admite varios métodos de acceso, no solo con passkeys, sino también como nombres de usuario y contraseñas o acceso federado (acceso con Google, Facebook) en una sola API y con una interfaz unificada para una mejor experiencia de usuario.

Si un usuario tiene contraseña y passkeys, el credential manager le ofrece al usuario por defecto la opción de passkeys pero el usuario puede escoger otra opción.

Para implementar passkeys en una app, solo se necesita usar la dependencia de “Credentials” y usar la clase credential manager.

Google Android TV

Google Android TV está experimentando un gran crecimiento en el mercado a nivel global. Empresas líderes del ecosistema asociadas con Google han anunciado que seguirán invirtiendo y potenciando lo que ofrece este servicio, y es que, de la multitud de socios tecnológicos entre operadoras y fabricantes de dispositivos, todos ellos han decidido potenciar aún más sus productos apostando aún más por dicho servicio. Además de una renovada interfaz, para los desarrolladores de apps de dicho sistema se anuncian varias novedades que deberían facilitarles la vida y enriquecer la plataforma al ser más sencillo el crear apps para dicho sistema como es la inclusión de jetpack compose.

Google Pay y Wallet

En cuanto a Google Pay se mostraron varias novedades: el pago con tarjetas será todavía más seguro que antes, nuevos botones más personalizables y dinámicos para introducir en las aplicaciones que requieran de pagos con Google Pay y la última, añadirán una serie de tarjetas para poder realizar las pruebas de las aplicaciones, a las cuales llaman “PSP test cards”, que permitirán probar todo tipo de flujos para el correcto desarrollo.

Google Wallet saldrá para más de 60 países en este mismo año y para principio del siguiente seguirán ampliando la lista. Entre estas nuevas funcionalidades se encuentra la novedad de poder realizar el check-in de las tarjetas de embarque desde la aplicación de mensajes (que es la misma desde la que se reciben los mensajes SMS) mediante el sistema RCS; además una vez hecho el check-in, se podrá añadir dicha tarjeta a la cartera de Google Wallet. Otra novedad que presentaron fue una ya anunciada el año pasado y que se está empezando a poner en marcha en unos pocos lugares de Estados Unidos, y es el poder llevar carnets de identificación, tarjetas relacionadas con la sanidad…; en general tarjetas que contengan información personal, para las cuales se les ha agregado una gran seguridad. Al igual que para algunos códigos QR que necesiten de una seguridad extra, a los cuales se les han agregado unos códigos rotativos. Y por último agregaron algunas cuestiones para el desarrollo de apps que quieran implementar Google Wallet y quieran crear sus propias tarjetas personalizadas, para la cual han añadido plantillas al IDE para su fácil desarrollo.

Depuración con Jetpack Compose

Uno de los talleres han tratado diferentes técnicas de depuración en Compose:

  • Nuestro composable se está recomponiendo y no sabemos qué parámetro ha cambiado. Supuestos tipos de recomposición: direct recomposition (Un estado dentro del composable cambió), indirect recomposition (Un padre composable se recompuso y esto causó que los parámetros cambiasen), unskippable recomposition (Recomposición que no podemos omitir. Por ejemplo, al recomponer variables que aun no habiendo cambiado son Unnestable como por ejemplo listas List). A veces depurar esto puede ser complejo. Android Studio Hedgehog ha incorporado una nueva herramienta y así vemos valores de estado para los argumentos de un composable, pudiendo ser estos:
  • El argumento no cambió.
  • El argumento ahora tiene distinto valor.
  • Compose aún está evaluando si cambió este argumento.
  • Compose ha determinado que este argumento no va a cambiar.
  • El argumento es de tipo Unstable.

De esta forma buscamos que parámetros cambiaron por causa de la recomposición y vamos hacia arriba en jerarquía de composables para encontrar la raiz de la recomposición que generó el defecto de performance que pudo presentarse, para su corrección.

  • Recomposición frecuente: el Composable se recompone durante el desplazamiento o una animación. Usar el depurador nos ayudaría a detectar esta recomposición.Pero no queremos que el punto de interrupción del depurador se detenga en cada marco, sería molesto. Así que los logs son una buena herramienta aquí.
  • Pruebas Benchmark: Nos ayudarán a medir el alcance de la mejora en performance que obtenemos, a partir de implementar nuestras correcciones sobre elementos no skipables en la recomposición.
  • Tracing System trace method: con la ayuda de estas herramientas se pueden afinar aún más, consideraciones a favor del mejor aprovechamiento de recursos de nuestra app.

SDK de Firebase

En esta sesión de las novedades de la SDK de Firebase para Android, echan la vista atrás para mostrarnos todo lo acontecido durante el 2022 destatancod la integración de Crashlytics con App Quality Insights en el IDE de Android Studio, mejoras en App Performance, habilitación de App Distribution, habilitación de App Check  (con Play Integrity API) entre otras novedades.

Para este 2023 podemos destacar las siguientes novedades:

  • Mayor rendimiento y velocidad de la SDK: aseguran que se ha mejorado +- 3% y siguen trabajando en ampliar ese porcentaje. Como usuarios, no tenemos que hacer nada, ya en su próxima actualización de la SDK vendrá con dichos cambios implementados.
  • Kotlin First: están trabajando para que toda la SDK esté construida por y para “Kotlin First”, esto significa que la integración de la propia SDK estará orientada a las ventajas que Kotlin nos ofrecen, por ejemplo, en las Task<DocumentSnapshot> con la nueva versión de SDK desaparecerá ya que la gestión de los hilos de ejecución se podrá hacer con corrutinas, entre otras muchas funcionalidades.
  • También destacaron que están integrando Kotlin no solo en la SDK de Android, si no en todos sus sistemas a nivel de plataformas. Será cuestión de tiempo tener soporte para kotlin en Functions, Hosting, etc.…
  • Hosting / Functions: Permiten Python como lenguaje de desarrollo, esto abre la puerta de integraciones web, api, etc. con este lenguaje.
  • Firestore + Extensions: La integración con el modelo de lenguaje PALM-2 permite mediante las extensiones de Firebase y Firesetore, crear un chat natural con la IA.

Material Design

Más allá de la búsqueda de experiencias de usuario prácticas y funcionales, entra en juego un nuevo objetivo: la emoción. Material You explora por un lado un enfoque más humanista del diseño sin comprometer la parte más funcional y, por otro lado, ofrece la posibilidad de personalizar y por lo tanto convierte a los usuarios en cocreadores. Además, permite una fácil adaptación a los diferentes dispositivos y tamaños de pantalla.

Entre las novedades en cuanto a componentes destacamos:

  • Un nuevo carrusel con patrones de movimiento fluidos en cuanto a forma, movimiento e interacción. Actualmente la implementación de dicho carrusel se encuentra disponible en el MDC de Android, aunque se está trabajando para implementarlo en Jetpack Compose y a futuro, se le espera en Flutter y Web.
  • Surgen las animaciones de retroceso predictivas. Estas animaciones ayudarán a sus usuarios a anticipar hacia dónde los lleva el gesto de retroceder. Siendo así una experiencia de retroceso más cómoda, natural y óptima.
  • A partir de los Dynamics Colors surgen otras variantes: Color Fidelity, una gama más amplia de colores que se ajustan mejor; Content-based Dynamic Color, el color se ajusta según el que más predomine; contrast Schemes, tres diferentes contrastes estándar, medio y alto.
  • Mejor adaptación a dispositivos como tablets, dispositivos plegables, teléfonos full screen, etc.

Optimizar deep linking

Debido a los diferentes beneficios que aportan los deep links, como por ejemplo una experiencia del usuario más fluida o un mayor tráfico hacia la app que se puede traducir en conversiones y ventas, Google mejora el apartado de deep link de la Google Play Console, en la cual ya se podían realizar algunas tareas, como por ejemplo la revisión del estado del deeplink y su reparación.

En esta nueva versión:

  • Se podrá acceder a una nueva herramienta que se enlaza con la cuenta de AdWords, donde se puede revisar el estado de las campañas, así como el estado de los deep links.
  • se podrá comprobar el rendimiento de los deep links para priorizarlos.
  • añaden nueva métrica, la cual te indica el número de usuarios que aterrizan en la app versus la web.

Por último, están trabajando también en la herramienta de validación para enlaces profundos en iOS.

Novedades de Firebase Crashlytics

Se ha integrado Crashlytics en la mayoría de productos de Google. Como todo el ecosistema Android, Flutter, Unity… Las novedades se dividen en dos grandes grupos:

  • Encontrar crashes: por un lado, se han integrado mejoras en las últimas versiones de Android Studio. Concretamente en la parte «App quality Insights»:

* Filtros por versión de la app
* Filtrado por Signals, los tags de los bugs
* Posibilidad de añadir notas para la corrección de los bugs
* Botón para cerrar el bug si ha sido corregido

Por otro lado, se ha añadido la detección de errores de memoria de C++, para aplicaciones nativas. Se ha integrado la tecnología GWP-ASan, un addresssanitizer, en la consola

  • Arreglar crashes:

– Se han mejorado las trazas de pila que se muestran en la consola. Mejor ubicación de clases y números de línea.

– Ante la acumulación de errores con trazas similares, se ha introducido un nuevo subgrupo llamado variants. Un error puede ocurrir en un método, pero venir de diferentes entradas a dicho método.

– Si el código ha cambiado, se introduce información de los commits en app quality (aún en canary)

Novedades de Kotlin para Desarrollo android

Compilador K2:

El compilador K2 se está estabilizando en Kotlin 2.0. Se ha estado trabajando en un nuevo frontend para el compilador de Kotlin llamado «K2». El frontend es la parte del compilador que analiza el código y realiza el análisis semántico, el análisis del flujo de datos, la resolución de llamadas y la inferencia de tipos. Esta es la parte del compilador con la que interactúa más el desarrollador. También es la parte del compilador que se ejecuta continuamente dentro de tu entorno de desarrollo integrado (IDE). El nuevo frontend ya está disponible como vista previa y están, con planes de convertirlo en el frontend de compilador predeterminado en la futura versión de Kotlin 2.0.

Kotlin y Gradle:

El DSL de Kotlin ahora es la opción predeterminada para nuevos proyectos de Gradle. El DSL de Kotlin es un lenguaje de programación que se utiliza para escribir scripts y complementos de Gradle, y ofrece varias ventajas en comparación con el uso de Groovy.

El DSL de Kotlin proporciona comprobación en tiempo de compilación, lo que significa que los errores en los scripts de construcción se detectan antes de la ejecución. Además, ofrece una mejor experiencia en el IDE, con funciones como autocompletado, navegación de código y refactorización. El lenguaje también simplifica la sintaxis de los complementos y tiene una comunidad creciente de desarrolladores que contribuyen con bibliotecas y complementos de Gradle.

Aunque Gradle seguirá brindando soporte para el DSL de Groovy, recomiendan el uso del DSL de Kotlin para mejorar la experiencia de escritura y edición de los scripts de construcción.

KSP (Kotlin Symbol Procesing)

Kotlin Symbol Processing (KSP), una biblioteca construida por Google que proporciona una API para crear complementos de compilador livianos. KSP ofrece una API simplificada para complementos de compilador que aprovecha el poder de Kotlin al tiempo que mantiene una curva de aprendizaje mínima. En comparación con KAPT, los procesadores de anotaciones que utilizan KSP pueden ejecutarse hasta 2 veces más rápido, ofrecen acceso directo a los constructos del lenguaje Kotlin y admiten múltiples plataformas.

KSP procesa los programas de Kotlin de manera idiomática. Entiende características específicas de Kotlin, como las funciones de extensión, la variación en el lugar de declaración y las funciones locales. También modela los tipos explícitamente y proporciona verificación básica de tipos, como la equivalencia y la compatibilidad de asignación.

KSP facilita la creación de complementos de compilador livianos. Oculta los cambios en el compilador, minimizando los esfuerzos de mantenimiento para los procesadores que lo utilizan. KSP no está ligado a la JVM, por lo que en el futuro se puede adaptar más fácilmente a otras plataformas, como Kotlin/Native o Kotlin/JS. Para algunos procesadores, como Glide, KSP reduce significativamente los tiempos totales de compilación en comparación con KAPT (hasta un 25% menos). KSP mejora drásticamente la velocidad de compilación para los desarrolladores de Kotlin (hasta 2 veces más rápido para la aplicación de prueba de Kotlin de Room).

Mejoras Android 14

Android 14 trae consigo una serie de mejoras y características destinadas a mejorar la experiencia de los usuarios. Entre estas mejoras se encuentra una mayor eficiencia en la duración de la batería, gracias a cambios en el manejo de tareas en segundo plano y descargas. Además, se introduce la opción de escalar las fuentes hasta un 200% con un escalado no lineal para una mejor legibilidad. Otras adiciones incluyen destellos de notificación mediante el flash de la cámara o pantalla, un mejor soporte para pantallas grandes, mayor control de privacidad al seleccionar qué fotos y videos puede acceder una aplicación, mejoras en la seguridad con la prohibición de instalar aplicaciones antiguas y mayor compatibilidad con autenticación biométrica, personalización regional de preferencias y la posible inclusión de conectividad satelital. Aunque no se espera una actualización revolucionaria, Android 14 ofrece una serie de mejoras significativas para mejorar la experiencia general de los usuarios de dispositivos Android.

Anterior

Kafka Streams: Transformando el Marketing Online

Siguiente

Teletrabajo en O2O: Transformando la forma en que trabajamos

Talento O2O

¿Te apetece formar parte de nuestro equipo?

Mira las oportunidades