Edición n.º 12 de Ahora en Android

Video + podcast de Ahora en Android, lanzamientos de AndroidX, módulos de funciones dinámicas en el componente de navegación de Jetpack, artículos sobre las clases integradas de Kotlin y los ajustes de estilo de Android, y otro episodio del podcast de ADB

Ilustración de Virginia Poltrack

Te damos la bienvenida a Ahora en Android, una guía que actualizamos constantemente con las novedades más importantes sobre el desarrollo de Android.

Edición n.º 12 de Ahora en Android: versión en video

https://medium.com/media/4f3a449fc38792b91391b460b58b5dc1/href
Ahora en Android también se ofrece en formato de video. El contenido es el mismo, pero hay más movimiento y menos texto. Echa un vistazo al video o ignóralo y sigue leyendo debajo.

Ahora en Android… ahora en audio y video

Ahora en Android es más que un conjunto de artículos: ¡es una lista de reproducción en YouTube!

Para quienes prefieren recibir su dosis de noticias publicitarias sobre tecnología en otro formato, ampliamos Ahora en Android a los formatos de artículo, video e incluso podcast.
A partir de ahora, recibirás cada episodio en el formato «clásico» de estos artículos en Medium. Además, habrá una versión en video del artículo en la que explicaré en cámara el mismo contenido. Este video aparecerá publicado en la lista de reproducción de Ahora en Android en el canal de Android para desarrolladores de YouTube.
Y, ya que tenemos el video, aprovechamos para extraer el audio y publicarlo en un nuevo podcast de Ahora en Android, disponible en cualquier plataforma en la que consumas podcasts.
Ahora en Android
También decidí cambiar los títulos de los episodios (¡otra vez!) para que sean iguales en todos los formatos. Por eso, a partir de este episodio, el número del artículo (en este caso, 12) debería coincidir con el número del video y el podcast relacionados. Decidí hacer esto porque, incluso si prefieres el formato de video o audio, puedes visitar el artículo de Medium correspondiente para tener acceso a los vínculos.
Recibe las actualizaciones de Ahora en Android como lo prefieras: el contenido es el mismo, pero el método de entrega es diferente. Después, regresa cada dos semanas (aproximadamente) para tener acceso a la siguiente entrega, porque la verdad es que el contenido sobre software nunca termina.

Lanzamientos de AndroidX

Recientemente, AndroidX publicó algunas versiones interesantes de su biblioteca.
En primer lugar, hubo algunas versiones estables. La mayoría de ellas fueron correcciones de errores, como fue el caso de Fragments, Media2, Navigation y WorkManager. Sin embargo, también se lanzó una versión de Core 1.2.0 con nuevas funcionalidades relativas a Notifications, BlendMode (se introdujeron nuevas funcionalidades en la plataforma para versiones anteriores), ShortcutInfo y WindowInsets. También es importante destacar que la versión de ViewModel-SavedState 2.2.0 es exactamente igual a la 1.0.0, pero se cambió el número de versión para que coincida con el de los demás artefactos de Lifecycle.
Algunas bibliotecas también alcanzaron la versión Alfa por primera vez:
Emoji 1.1.0 tiene algunos emojis nuevos, así que aprovecha la oportunidad si quieres incorporar a tu app algunos de la versión v12 o v12.1.
Navigation 2.3.0 incluye la nueva característica de navegación de funciones dinámicas (la información aparece más abajo), junto con un nuevo artefacto para probar la navegación.

Módulos de navegación y de funciones dinámicas

body[data-twttr-rendered=»true»] {background-color: transparent;}.twitter-tweet {margin: auto !important;}

function notifyResize(height) {height = height ? height : document.documentElement.offsetHeight; var resized = false; if (window.donkey && donkey.resize) {donkey.resize(height);resized = true;}if (parent && parent._resizeIframe) {var obj = {iframe: window.frameElement, height: height}; parent._resizeIframe(obj); resized = true;}if (window.location && window.location.hash === «#amp=1» && window.parent && window.parent.postMessage) {window.parent.postMessage({sentinel: «amp», type: «embed-size», height: height}, «*»);}if (window.webkit && window.webkit.messageHandlers && window.webkit.messageHandlers.resize) {window.webkit.messageHandlers.resize.postMessage(height); resized = true;}return resized;}twttr.events.bind(‘rendered’, function (event) {notifyResize();}); twttr.events.bind(‘resize’, function (event) {notifyResize();});if (parent && parent._resizeIframe) {var maxWidth = parseInt(window.frameElement.getAttribute(«width»)); if ( 500 < maxWidth) {window.frameElement.setAttribute("width", "500");}}

P: ¿Qué es mejor que una API nueva?
R: Una API existente que haga cosas nuevas.

Wojtek Kaliciński y Ben Weiss están trabajando en una nueva API del componente de navegación que facilita el uso de los módulos de funciones dinámicas mediante la misma API de navegación que ya utilizas para los destinos no dinámicos.
Comencemos con algo de historia y terminología:
Android App Bundle es el nuevo formato de app (el primero desde la invención del APK) que permite a los desarrolladores subir un superconjunto de lo que necesitan todos los usuarios. Luego, Play Store determina el subconjunto que se instalará en un dispositivo determinado (según su configuración). Con esto, los desarrolladores pueden abarcar más fácilmente todas las situaciones posibles sin tener que subir demasiados APK distintos, y Play Store puede reducir el tamaño de las descargas solo a lo que es necesario.
Los módulos de funciones dinámicas ofrecen a los desarrolladores la capacidad adicional de dividir su app en partes distintas (módulos) que no hace falta instalar de inmediato. Así, es posible instalar una app con el subconjunto mínimo que haga falta para iniciarla y se pueden instalar los módulos posteriores (por ejemplo, recursos adicionales de rutas opcionales en la app) más adelante, cuando sea necesario.

Los desarrolladores pueden usar las API en la biblioteca de Play Core para solicitar manualmente la descarga e instalación de módulos de funciones dinámicas.
Sin embargo, ahora estos módulos son más sencillos gracias a la versión 2.3.0 del componente de navegación. Puedes usar la llamada de navegación habitual navigate(). Si el destino es un módulo de funciones dinámicas, la biblioteca se ocupa de los pormenores relativos a la descarga e instalación de las partes necesarias.
Por el momento, la biblioteca se encuentra en la versión Alfa y es posible que no esté preparada para el código de producción que uses. Sin embargo, si quieres usar esta funcionalidad, hazlo y envíanos tus comentarios. Consulta los documentos para obtener más información y prueba el ejemplo que Ben Weiss publicó la semana pasada.

Artículos

Abstracciones sin costo* en Kotlin

Abstracciones sin costo* en Kotlin
Florina Muntenescu sigue explicándonos el vocabulario de Kotlin con este artículo sobre las clases integradas, que son una función experimental de Kotlin 1.3.50.
Las clases integradas pueden ofrecer un nivel mejorado de seguridad de tipo para variables que, de otro modo, podrían generar conflictos y errores en el tiempo de ejecución. Lo mejor de todo es que pueden hacerlo sin agregar sobrecarga* porque se compilan en un código que usa el tipo subyacente en lugar de crear la clase que encapsula el tipo.
* Según el uso de la clase. Consulta el artículo para conocer los detalles y las desventajas.

Ajustes de estilo de Android: comparación entre temas y estilos

Ajustes de estilo de Android: comparación entre temas y estilos
Comúnmente, se confunden los conceptos y el uso de los temas y los estilos. Después de todo, ambos usan la etiqueta <style>, por lo que se ven muy similares a simple vista.
Nick Butcher empezó a escribir una nueva serie de artículos para ayudar a explicar con mayor profundidad este aspecto del desarrollo de Android.
En este primer artículo, Nick analiza la diferencia entre los temas y los estilos, y en qué situaciones los desarrolladores pueden elegir uno u otro.
Nota: Estos artículos amplían la información que Nick Butcher y Chris Banes presentaron en Android Dev Summit:
https://medium.com/media/4d0907f1fcabf62199aa5c3ffbc602ef/href

Episodios del podcast de ADB

Desde la última edición de Ahora en Android, se publicó un episodio del podcast de Android Developers Backstage. Escúchalo en el siguiente vínculo o en tu cliente de podcast favorito:

ADB 132: almacenar datos con Store

Episodio 132: Almacenar datos con Store
Uno de los patrones de almacenamiento y recuperación de datos que recomendamos en nuestra Guía de arquitectura de apps es usar un repositorio, que tiene una capa de abstracción además del lugar del que provienen los datos. Por ejemplo, imagina que tienes datos almacenados en una memoria caché local y en un servidor en el otro extremo de la red. Con este enfoque, puedes usar código para obtener los datos sin tener que preocuparte por el lugar donde residen ni la forma de conseguirlos, ya que es el repositorio el que se encarga de eso.
Tener una técnica es fantástico, pero sería todavía mejor tener una API que facilitara el proceso.
Allí es donde entra en juego la biblioteca Store (por el momento, en versión Alfa). En este episodio, hablamos con Mike Nakhimovich de Dropbox y Yigit Boyar del equipo de Android Toolkit. Mike lidera el desarrollo de la biblioteca Store de código abierto (que Yigit modifica en su tiempo libre).

Para terminar…

Eso es todo por hoy. Echa un vistazo a la serie de videos y el podcast de Ahora en Android. Prueba las versiones de AndroidX más recientes. Visita la nueva biblioteca de navegación para navegar con módulos de funciones dinámicas. Lee los artículos sobre clases integradas en Kotlin y sobre la comparación entre temas y estilos. Escucha el último episodio del podcast de ADB. Te esperamos pronto para ofrecerte más novedades desde el universo de desarrolladores de Android.
Source: Google Dev

Deja un comentario