Publicado por Greg Hartrell, director de producto, Games on Play/Android
Con el paso del tiempo, vimos que los juegos y las apps no son solo experiencias: son negocios, liderados por personas talentosas como ustedes. Por lo tanto, nuestro objetivo es seguir apoyando sus empresas para que liberen aún más su potencial. En nuestra más reciente Google for Games Developer Summit, compartimos cómo los equipos de Google siguen compilando la nueva generación de servicios, herramientas y funciones a fin de ayudarlos a crear y monetizar experiencias de alta calidad; más programas adaptados a sus necesidades, y más recursos educativos sobre prácticas recomendadas.
Queremos ayudarlos durante todo el ciclo de vida de desarrollo de juegos facilitando la creación de títulos de alta calidad y la publicación de experiencias increíbles a un creciente número de personas y dispositivos.
Facilitamos la implementación de juegos en más pantallas Para habilitar juegos en más pantallas y dispositivos, queremos ayudarlos a localizar a los jugadores y ofrecerles la posibilidad de jugar donde quieran.
Facilitamos el desarrollo de juegos de alta calidad
Nos comprometemos a apoyar la compilación de juegos para Android de alta calidad enfocándonos en herramientas y SDK que simplifiquen el desarrollo y brinden estadísticas sobre los juegos; además, nos asociamos con motores de juego como los c/c++ nativos particulares. El año pasado, lanzamos el kit para desarrolladores de juegos para Android (AGDK), un conjunto de herramientas y bibliotecas para mejorar la eficiencia del desarrollo de juegos para Android, y realizamos varias mejoras en función de los comentarios de los desarrolladores.
Más herramientas para alcanzar el éxito en Google Play
Play Console es un invaluable recurso en el ciclo de vida de un juego, ya que tiene herramientas y estadísticas que sirven tanto antes como después del lanzamiento.
Obtengan más información sobre todo lo que compartimos en Google for Games Developer Summit y visiten g.co/android/games para obtener documentación y recursos adicionales. Seguimos con nuestro compromiso de apoyar el ecosistema de desarrolladores y apreciamos mucho su flujo continuo de comentarios y sus inversiones en pos de crear experiencias de juego de alta calidad para los jugadores de todo el mundo.
Desde que lanzamos Flutter, nos concentramos en ofrecer una solución multiplataforma para apps atractivas y personalizadas que se compilan para el código de máquina y aprovechan al máximo el hardware de gráficos subyacente de tu dispositivo. La actualidad marca una expansión significativa de esta visión con la primera versión de producción de compatibilidad con Windows como un objetivo de app, lo que permite que los desarrolladores de Windows se beneficien de la misma productividad y potencia que aprovechan los desarrolladores de dispositivos móviles.
Nuestro objetivo con Flutter es brindarte las herramientas que necesitas para crear una gran experiencia, independientemente del sistema operativo para el que compiles. Por eso, queremos ofrecerte el mismo framework central y las mismas herramientas en todos los lugares en los que quieras pintar píxeles. Flutter te permite crear hermosas experiencias en las que tu marca y diseño se destacan. Flutter es rápido y se compila directamente en el código de máquina; gracias a la compatibilidad con la funcionalidad hot reload, obtienes la productividad de un entorno interactivo que te permite realizar cambios mientras tu app se ejecuta y ver los resultados de inmediato. Y como Flutter es de código abierto, miles de colaboradores se suman al framework central y lo amplían con un ecosistema de paquetes.
Casi medio millón de apps usan Flutter…
Hasta ahora, hemos observado un impulso que supera nuestras expectativas, con casi medio millón de apps ya lanzadas que usan Flutter, incluidas grandes apps de empresas, como Betterment, BMW y ByteDance, y apps de treinta equipos de Google. En 2021, Flutter se convirtió en el kit de herramientas de interfaz de usuario multiplataforma más popular, según las mediciones de analistas como Statista y SlashData:
Nuestros propios datos lo respaldan: un constante 92% de los desarrolladores de Flutter expresa una satisfacción positiva con nuestras herramientas en las cuatro encuestas trimestrales de 2021. (Y con respecto al otro 8%, leemos sus comentarios y queremos que también estén contentos).
La compatibilidad con Windows se solicitó con frecuencia.
Hoy, nos complace anunciar la disponibilidad total de la compatibilidad para apps de Windows con Flutter en versiones estables.
Hace un par de años, presentamos una visión ambiciosa con el fin de que Flutter se expandiera de apps para dispositivos móviles en iOS y Android a otras plataformas, incluidas la Web y computadoras de escritorio.
El centro de Flutter se transmite a través de plataformas: desde el motor de gráficos portátil, acelerado por hardware de Skia hasta el sistema de renderización de Flutter; los primitivos centrales, como la animación, los temas, la entrada de texto y la internacionalización; y los cientos de widgets que ofrece Flutter.
Pero las apps de escritorio no son solo apps para dispositivos móviles que se ejecutan en una pantalla más grande. Están diseñadas para diferentes dispositivos de entrada, como teclado y mouse. Tienen ventanas que pueden cambiar de tamaño y que se suelen ejecutar en un monitor de pantalla ancha. Existen diferentes convenciones para cuestiones críticas, como la accesibilidad, los editores de los métodos de entrada y el estilo visual. Y se integran con diferentes API en el sistema operativo subyacente: las apps de escritorio son compatibles con todo, desde selectores de sistemas de archivos hasta hardware de dispositivos y almacenes de datos, como el registro de Windows.
Por lo tanto, si bien trajimos Flutter a Windows, también lo adaptamos para Windows.
Del mismo modo que con nuestra compatibilidad para Android e iOS, la implementación de Flutter para Windows combina un framework de Dart y un motor de C++. Windows y Flutter se comunican a través de una capa incorporada que aloja el motor de Flutter y se ocupa de traducir y distribuir los mensajes de Windows. Flutter se coordina con Windows a fin de pintar tu interfaz de usuario en la pantalla, controlar eventos, como el cambio de tamaño de ventanas y los cambios de DPI, y funciona con las modalidades actuales de Windows para la internacionalización, como los editores de los métodos de entrada.
Tu app puede usar todas las partes del framework de Flutter y, en Windows, también puede comunicarse con las API de Windows Runtime, Win32 y COM, ya sea directamente a través de la capa de interoperabilidad C de Dart o mediante un complemento de plataforma escrito en C++. También adaptamos una serie de complementos frecuentes para incluir compatibilidad con Windows, incluidos camera, file_picker y shared_preferences. Más importante aún, la comunidad ya agregó compatibilidad con Windows a una amplia variedad de otros paquetes, que cubren todo, desde la integración de la barra de tareas de Windows hasta el acceso al puerto en serie.
Para una interfaz de usuario de Windows totalmente personalizada, también puedes usar paquetes como fluent_ui y flutter_acrylic a fin de crear una app que exprese el sistema de Microsoft Fluent Design a la perfección. Y con la herramienta msix, puedes incluir tu app en un instalador que se puede cargar en Microsoft Store en Windows.
Juntos, se promueve la creación de apps que lucen muy bien en Windows, se ejecutan con rapidez en Windows e incluso se transfieren a otros dispositivos de escritorio o móviles, así como a la Web. Estos son algunos de los primeros ejemplos que vimos hasta ahora:
Le preguntamos a los miembros del equipo de Windows si estarían dispuestos a compartir algunas palabras sobre la compatibilidad de Flutter. Esto es lo que nos contó Kevin Gallo, vicepresidente corporativo de la plataforma para desarrolladores de Windows en Microsoft:
“Nos encanta ver que Flutter agrega compatibilidad para crear apps de Windows. Windows es una plataforma abierta y les damos la bienvenida a todos los desarrolladores. Nos emociona ver a los desarrolladores de Flutter traer sus experiencias a Windows y también publicar en Microsoft Store. La compatibilidad de Flutter con Windows es un gran paso para la comunidad, y estamos ansiosos por ver lo que traerá a Windows”.
De hecho, varios equipos de Microsoft colaboraron con el anuncio de hoy. En particular, nos gustaría expresar nuestro agradecimiento al equipo de diseño de Fluent por su contribución de iconografía para las apps de Flutter en Windows. Su paquete fluentui_system_icons recibió el estado de Favorito de Flutter como reconocimiento a su calidad.
También nos impresionaron las inversiones que Microsoft realizó en torno a la accesibilidad para Windows, y estamos agradecidos por la ayuda del equipo a fin de garantizar que Flutter sea compatible con los lectores de pantalla desde el primer día. Es un error descartar la accesibilidad como un requisito especializado. Como se ilustra en este diagrama del kit de herramientas de diseño inclusivo de Microsoft, todos tenemos motivos para preocuparnos por brindar experiencias que se adapten a diferentes necesidades permanentes, temporales o situacionales.
En el siguiente video, se muestra cómo Flutter se integra con Windows Narrator. A los efectos de este video, desenfocamos a propósito la pantalla a fin de darte una idea del valor que tiene esta función para los usuarios que la necesitan.
Nuestros socios de herramientas también incluirán compatibilidad con Windows. Destacamos algunos:
Es muy emocionante para nosotros observar un ecosistema maduro creado en torno a Flutter, y te recomendamos que consultes a cada uno de estos socios a medida que comienzas a compilar apps de Windows con Flutter.
La compatibilidad estable y con calidad de producción para compilar apps de Windows está disponible como parte de Flutter 2.10, que se lanza hoy. Flutter 2.10 también incluye muchas otras características, mejoras de rendimiento y correcciones de errores, que se tratan con más detalle en otra entrada de blog.
En los próximos meses, te enviaremos más novedades sobre cómo completamos la compatibilidad estable con macOS y Linux y logramos que el conjunto completo de plataformas de escritorio, web y móviles esté disponible para tus apps de producción de Flutter.
Mientras tanto, gracias por tu apoyo a Flutter. Nos entusiasma descubrir lo que compilas para Windows.
El pasado 31 de enero, un avión Hércules C-130H de la Fuerza Aérea Uruguaya aterrizó en la isla Jorge Rey, de la Antártida. En él iba el emprendedor uruguayo Nicolás Bianchi y su hermano Santiago, quienes ese día comenzaron a cumplir un viejo sueño: llegar al continente más septentrional del planeta, al desierto más grande del mundo, al agreste Polo Sur. Todo para mapear sus calles para Google Street View.
El sueño surgió hace muchos años, cuando un amigo de Bianchi le contó de su viaje por esa región del mundo en medio de una expedición científica. “Como que me volvía loco, de alguna forma quiero llegar allá y generar valor en cierta forma, tener un impacto positivo”, dijo Nicolás en una entrevista.
Lo que siguió fueron cuatro años de planeación: buscar la forma de llegar, los patrocinadores y el proyecto que le permitiría a Bianchi lograr el impacto positivo que quería. Cuando todo estaba listo, en marzo de 2020, llegó la pandemia de coronavirus y frustró los planes. El día señalado finalmente llegó dos años después, luego de una cuarentena en un complejo de la armada con hisopados día de por medio. La espera ayudó: el plan original era pasar 16 días en la Antártida, pero con este nuevo itinerario los Bianchi tendrán seis semanas allí.
En su vida ‘normal’, Nicolás Bianchi es diseñador de UX en Mercado Libre, y asesora emprendedores en ese campo como Google Expert y mentor en el programa Launchpad. Además, es profesor universitario y ha sido emprendedor.
La misión de los Bianchi es caminar las calles que unen algunas de las diferentes bases científicas del norte de la Antártida, capturando imágenes en 360 grados para la plataforma de mapas de Google. Cada día tendrán que cargar 10 kilos de equipos, y medir las coordenadas de cada paso que dan.
El objetivo inicial es mapear la zona donde se ubican las bases uruguaya, rusa, china y chilena. Además, tratarán de llegar a las inmediaciones de las bases coreana y argentina, para lo cual deberán viajar cinco horas en bote. “Estimamos, mínimamente, hacer entre 20 y 50 kilómetros en una primera instancia; si podemos hacer más, mejor; según lo permita el clima”, dijo al periódico El País de Uruguay.
El principal reto es superar los obstáculos que imponga el clima de la Antártida. En enero y febrero, el verano austral, la temperatura promedio llega a 1,8 grados centígrados, pero puede haber borrascas y vientos que hagan más difícil el trabajo de los Bianchi. También está el reto de tener el menor impacto ecológico posible, para lo cual estarán acompañados en todo momento de personal de la Base Científica Antártica Artigas; que además podrán ayudarles a evitar los caminos más peligrosos del inhóspito continente.
Otro reto es entender cómo funcionan los equipos en condiciones tan extremas. En Uruguay se hicieron algunas pruebas antes del viaje, especialmente para calibrar los lectores de GPS sin otros puntos de referencia. Pero sigue siendo una incógnita entender qué dificultades podrían tener las cámaras, las baterías y los demás gadgets con esas condiciones de temperatura, viento y humedad.
A su regreso, Bianchi espera regresar con terabytes de imágenes y datos para luego subir a la plataforma de Google Street View, de modo que todos los demás usuarios de internet podamos recorrer sus pasos en el continente más inhóspito del mundo y recorrer virtualmente esos caminos, en los que tan pocos seres humanos han puesto sus pies.
Ciudad de México . Tras un arduo proceso de selección, Google for Startups se complace en anunciar las 10 compañías mexicanas seleccionadas para la primera edición del Google for Startups Accelerator LATAM en 2022. Este programa está dirigido a startups mexicanas en etapa de crecimiento e iniciará en el mes de febrero, con una duración de tres meses, y será totalmente virtual.
Muchas de las compañías elegidas en esta versión ya tienen operación en varios países de Hispanoamérica y participan en industrias diferentes, que van desde el fintech hasta la educación, pasando por la salud y la economía circular. Además, en esta edición, siete de las 10 compañías seleccionadas cuentan con mujeres cofundadoras, lo que representa la mayor presencia femenina en la historia del programa en la región.
“El esfuerzo que venimos haciendo en apoyar compañías y equipos liderados por mujeres y personas LGBTQ cada vez rinde más frutos, cosa que nos complace porque creemos que la economía digital debe ser un lugar incluyente y diverso”, dijo Francisco Solsona, Gerente de Relaciones con Desarrolladores para Google Latinoamérica.
Para las compañías seleccionadas, la experiencia de Accelerator será crucial para definir sus prioridades y cimentar su crecimiento futuro. Para eso contarán con el apoyo de decenas de mentores y expertos en temas de negocio; mercadeo, branding y relaciones públicas; cultura organizacional, inteligencia artificial y machine learning; y Google Ads, Google Cloud y Android Play; entre otras tecnologías y habilidades organizacionales.
Además, Google pondrá a disposición de las empresas una plataforma de contenidos por demanda a la que podrán acceder en línea todos los equipos al interior de las compañías. “Ya tenemos experiencia adaptando los contenidos del programa a un entorno virtual, y eso ha ayudado a que el programa sea más flexible y efectivo”, dice Solsona.
En medio de la pandemia, Accelerator ha logrado desarrollar nuevos contenidos para que las compañías aprendan a adaptarse a las cambiantes circunstancias, como una sección dedicada a mejores prácticas de trabajo remoto y distribuido geográficamente y un fortalecimiento en los contenidos relacionados con finanzas e inversión. Además, el programa ofrece espacios virtuales de relacionamiento y mentoría, que puedan ayudar a los emprendedores seleccionados a construir contactos de manera eficaz.
Accelerator les permitirá a los emprendedores seleccionados aprender de los mejores, escalar sus productos, superar desafíos en materia tecnológica y de ejecución y establecer conexiones con redes de emprendimiento en la región y en Sillicon Valley, apalancándose en su talento y su éxito para convertirse en agentes de cambio e innovación en el ecosistema de nuestra región.
Las compañías seleccionadas son:
Aptuno (Colombia): Una plataforma que usa la tecnología y la IA para facilitar el proceso de renta de inmuebles residenciales.
Boitas (México): Busca ayudar a los restaurantes a resolver sus problemas de abastecimiento mediante el uso de tecnología y datos para ayudar a predecir lo que necesitan, y despachárselos cuando lo necesitan.
Clara (Mexico): Ofrece una tarjeta de crédito empresarial, solución de pagos y plataforma de control de gastos enfocada en startups y empresas pequeñas. Tiene operación en siete países de Suramérica.
Come Bien (México): Ofrecen un servicio de delivery de comidas saludables y prelistas a domicilio, que se preparan en ocho minutos y son aprobadas por nutriólogos.
Finerio (México): Un servicio que agrega información bancaria y financiera de clientes bancarios, con productos para usuarios finales e instituciones financieras y seguridad de nivel bancario.
Homely (México): Es un marketplace de servicios de aseo y limpieza para hogares y oficinas, facilitando el pago a los clientes y una contratación justa y apegada a la ley para las y los prestadores de los servicios.
Saeko (México): Ofrece una serie de herramientas en la nube para la gestión académica y administrativa de escuelas, universidades y otras instituciones educativas.
Uellbee (México): Ofrece un servicio de compra de cartera, educación y planeación financiera orientado a mujeres, dándoles independencia financiera.
Vopero (Uruguay): Un marketplace de economía circular de moda que les permite a sus usuarios vender la ropa y accesorios que no usan, haciendo dinero y ayudando al planeta en el proceso.
Al finalizar el programa, estas startups formarán parte del prestigioso grupo internacional de alumni de Google Launchpad Accelerator, donde se unirán a otras compañías latinoamericanas de gran escala como Canasta Rosa, Ben & Frank, Platzi, Konfio, Ualá, La Haus, Ripio, ComparaOnline, Tienda Nube, y Miroculus, entre otras.
Acerca de Google for Startups Accelerator LATAM
Google for Startups Accelerator es la evolución de más de seis años de experiencia del equipo Google Developers trabajando con startups en más de 40 países, a través de su programa Launchpad. GFS Accelerator incluye una programación de vanguardia en temas cruciales, acercando emprendedores y startups a distintos expertos de Google, así como a la red de aliados y colaboradores en la región: fondos de inversión, aceleradoras y empresas.
GFS Accelerator LATAM se ejecuta en conjunto con aliados estratégicos en diferentes países, así como decenas de profesionales que conforman nuestra selecta red de mentores y aliados.
El programa de Expertos de Google Developers es una red global de expertos en tecnología, influencers y líderes de opinión de gran trayectoria, que apoyan activamente a los desarrolladores, empresas y comunidades de tecnología. Para ello, participan en conferencias y publican contenido.
Joel Humberto Gómez es desarrollador en IBM y crea apps que mejoran el rendimiento de la organización interna de la empresa. Si bien su trabajo se centra en el desarrollo de frontend con React, también tiene experiencia en desarrollo web con JavaScript. Ha ocupado muchas funciones de líder en tecnología, en las que tomó decisiones técnicas y creó planes de envío de productos. Joel tiene un título en Ciencias de la Educación de la Universidad Veracruzana y conocimientos de bases de datos, desarrollo para dispositivos móviles, desarrollo web, redes y servidores. Es GDE en tecnologías web y Google Maps Platform.
“He participado en proyectos relacionados con envío de activos y NFC en desarrollo para dispositivos móviles, y en proyectos sobre procesos de visualización y automatización de datos en empresas”, comentó. “En 2022, quiero involucrarme más en la comunidad del código abierto”.
Joel usa Google Maps Platform para visualizar datos y explorar datos en proyectos centrados en la visualización de datos. En un proyecto, utilizó la API de JavaScript de Maps. En otro, se concentró en hacer un seguimiento de rutas y visualizar puntos para recolectar y entregar paquetes. En un tercer proyecto, usó los servicios de Place Autocomplete y la API de Directions. Ahora, trabaja en un proyecto sin fines de lucro para mostrar lugares relacionados con servicios médicos.
Participación en la comunidad de desarrolladores
En la universidad, uno de los instructores de Joel organizaba eventos relacionados con Linux, como el Festival Installfest, a los que invitaba a sus alumnos.
“Con el tiempo, me convertí en uno de sus estudiantes y me motivó a compartir mis conocimientos con el resto, y a que tuviera el valor para ir más allá de la universidad y salir de mi zona de confort”, explicó Joel. “Comencé a organizar eventos y charlas, y a conocer personas de otras comunidades”.
Finalmente, Gómez se convirtió en organizador de GDG.
“Mi sección era GDG Monterrey”, comentó. “Organizamos una Android Study Jam y algunos eventos de Google I/O Extended”.
Gómez disfrutó de compartir información con su comunidad y recibió el apoyo de otros GDEs para postularse al programa de GDE y compartir sus conocimientos con un público más amplio.
“Me encanta compartir información con mi comunidad, pero a veces el conocimiento se mantiene dentro de la comunidad”, explicó. “Diego DeGranda, un GDE que se especializa en tecnologías web, me alentó a que me postulara y que fuera más allá de mi comunidad para compartir mis conocimientos con otras comunidades fuera de mi país”.
Como GDE, Gómez ha conocido a desarrolladores de todo el mundo, con quienes habla sobre tecnología y comparte experiencias. Otro beneficio de ser GDE es la oportunidad de aprender de otros GDEs y empleados de Google.
“En 2020, tuve más actividades porque la ubicación ya no era un impedimento”, explicó. “Para los oradores, los encuentros virtuales suelen ser complicados, pero nos estamos adaptando a la situación, y usamos y creamos herramientas para obtener y brindar una mejor experiencia”.
Funciones favoritas de Google Maps Platform
La función de Google Maps Platform favorita de Gómez es la API de Contexto Local.
“Creo que es una función genial y tiene mucho potencial para crear mejores apps”, comentó. “En algunos proyectos, Contexto Local me ayudó con algunas funciones y no necesito realizar mi propio desarrollo. En 2020, di algunas charlas sobre las nuevas funciones, y escribí entradas de blogs e hice videos sobre ellas”.
Planes para el futuro
Joel planea crear más contenido sobre Contexto Local, Plus Codes y otras funciones de Google Maps Platform.
“Planeo lanzar un podcast sobre Maps y cómo usarlo para crear mejores apps”, comentó. “Lo estuve haciendo en español, así que necesito crear contenido en inglés”.
Tiene tres objetivos profesionales: comenzar a contribuir al código abierto, crear una pequeña startup e iniciar proyectos en los que se utilice Google Maps Platform.
Sigue a Joel en Twitter:@DezkaReid | Descubre los proyectos de Joel en GitHub
Para obtener más información sobre Google Maps Platform, visita nuestro sitio web u obtén más información sobre nuestro programa GDE.
Es esa época del año en el hemisferio norte: las hojas cambian de color, la temperatura refresca y la última versión estable del año ya está aquí. ¡Hola y bienvenido a Flutter 2.8! Esta versión representa el trabajo duro de 207 contribuyentes y 178 revisores, que produjeron 2424 peticiones de validación (PR) fusionadas y 2976 problemas resueltos. Queremos agradecer especialmente al contribuyente principal de la comunidad de esta versión, Bartosz Selwesiuk, un ingeniero de Flutter en Very Good Ventures, que proporcionó 23 PR, de las cuales la mayoría estuvieron "enfocadas" (cita textual) más que nada en el complemento de cámara para la Web.
Todo este trabajo colectivo produjo mejoras de rendimiento significativas, tanto en el motor como en Flutter DevTools: una versión estable del kit de desarrollo de software (SDK) de Google Mobile Ads para Flutter, una gran cantidad de funciones y mejoras nuevas de Firebase, WebView 3,0, un nuevo lote de paquetes de Flutter Favorite, una serie de actualizaciones de computadora de escritorio en el camino hacia una versión estable y una nueva versión de DartPad con compatibilidad para más paquetes, incluido el propio Firebase. Puede que este sea el último lanzamiento del año, pero de ninguna manera el menos importante. ¡Comencemos!
Como siempre, la prioridad número uno de Flutter es la calidad. Pasamos mucho tiempo asegurándonos de que Flutter se ejecute de la forma más fluida y robusta posible en todo el rango de dispositivos compatibles.
Esta versión incluye mejoras en la latencia de inicio de apps. Probamos estas mejoras en Google Pay, una app popular de gran tamaño con más de un millón de líneas de código para asegurar que estos cambios generen un impacto perceptible en el mundo real. En conjunto, estas mejoras han generado una reducción del 50% en la latencia de inicio de Google Pay cuando se ejecuta en un dispositivo Android poco sofisticado y una mejora del 10% en dispositivos de alta gama.
Gracias a las mejoras en la manera en que Flutter influye en la política de recolección de elementos no utilizados de la VM de Dart, ahora se pueden evitar ciclos de recolección de elementos no utilizados (GC) inoportunos durante la secuencia de inicio de la app. Por ejemplo, antes de que se renderice el primer fotograma en Android, Flutter ahora solo envía notificaciones a la VM de Dart sobre exigencia de memoria para señales TRIM_LEVEL_RUNNING_CRITICAL y posteriores. En las pruebas locales, este cambio disminuyó el tiempo para el primer fotograma hasta 300 ms en un dispositivo poco sofisticado.
Debido a un exceso de precaución, en versiones anteriores, Flutter bloqueaba el subproceso de la plataforma mientras generaba visualizaciones de la plataforma. En el análisis y razonamiento cuidadoso, se determinó que se podía quitar parte de la serialización, lo que quitó más de 100 ms de bloqueo durante el inicio de Google Pay en un dispositivo poco sofisticado.
En el pasado, la configuración del administrador de fuente predeterminada generaba un retraso artificial en la configuración del primer elemento aislado de Dart. El retraso en la configuración del administrador de fuente predeterminada para que se ejecute de forma simultánea con la configuración del elemento aislado de Dart mejoró la latencia de inicio e hizo que los efectos de las optimizaciones anteriores sean mucho más visibles, ya que esto era el cuello de botella principal.
Los desarrolladores de Flutter que trabajaban con dispositivos que tenían restricciones de memoria tenían problemas con los registros del rendimiento debido a que Flutter cargaba con rapidez el "elemento aislado del servicio" de la VM de Dart, cuyo código AOT estaba unido a la app de manera que Flutter leía a ambos en la memoria al mismo tiempo. Para Android en la versión 2.8, se dividió el elemento aislado del servicio de la VM de Dart en su propio conjunto que se puede cargar por separado, lo que da como resultado ahorros de memoria de hasta 40 MB hasta que se necesite el elemento aislado del servicio. Se redujo aún más el consumo de memoria hasta un 10% mediante la VM de Dart que informa al SO que las páginas de la memoria utilizadas por el programa AOT están respaldadas por un archivo que es probable que no se necesite leer de nuevo. Por lo tanto, las páginas que tenían una copia de los datos respaldados por el archivo se pueden recuperar y destinar a otros usos.
En ocasiones, los desarrolladores desean ver los datos de registro de rendimiento de Flutter junto con los eventos de seguimiento nativos de Android. Además, a veces desean ver eventos de registro incluso en compilaciones en modo de lanzamiento a fin de comprender mejor los problemas de rendimiento en sus apps implementadas. Con ese propósito, la versión estable 2.8 ahora envía eventos de seguimiento al registrador de Systrace de Android si está habilitado en el inicio de la app, y estos eventos se envían incluso cuando la app de Flutter se compila en modo de lanzamiento.
También, para ayudar a crear animaciones con menos bloqueo, algunos de ustedes querían recibir más información en los registros de seguimiento sobre el comportamiento del caché de trama, lo que permite a Flutter copiar imágenes costosas reutilizadas en lugar de volver a dibujarlas en cada fotograma. Los nuevos eventos de flujo en los registros de seguimiento ahora permiten rastrear las vidas útiles de las imágenes de caché de trama.
Para la depuración de problemas de rendimiento, esta versión de DevTools agrega una nueva función de "mejora de seguimiento" para ayudarte a diagnosticar bloqueos de IU que surgen de operaciones costosas de compilación, diseño y pintura.
Cuando se habilita cualquiera de estas funciones de seguimiento, el cronograma incluye nuevos eventos para widgets compilados, objetos de renderización diseñados y objetos de renderización pintados, según corresponda.
Además, esta versión de DevTools agrega una nueva compatibilidad para la creación de perfiles del rendimiento del inicio de tu app. Este perfil contiene muestras de CPU desde la inicialización de la VM de Dart hasta la renderización del primer fotograma de Flutter. Luego de presionar el botón de "Perfil de inicio de app" y después de que se haya cargado el perfil de inicio de la app, verás que la etiqueta de usuario "AppStartUp" está seleccionada para el perfil. También puedes cargar el perfil de inicio de la app mediante la selección de este filtro de etiqueta de usuario, si está presente, en la lista de etiquetas de usuario disponibles. La selección de esta etiqueta muestra tus datos de perfil para el inicio de tu app.
Android y iOS no son las únicas plataformas con mejoras del rendimiento. Esta versión también mejora el rendimiento de las vistas de plataforma de la web de Flutter. Si no estás familiarizado con las vistas de plataforma, estas son las maneras en que Flutter permite alojar componentes de IU nativos desde la plataforma subyacente en tu app. La web de Flutter implementa esto mediante el widget HtmlElementView, que permite alojar elementos HTML dentro de tu app web de Flutter. Si utilizas las versiones web del complemento google_maps_flutter o del complemento video_player, o si sigues el consejo del equipo de Flutter sobre cómo optimizar las imágenes de la pantalla en la Web, entonces utilizas las vistas de plataforma.
En versiones anteriores de Flutter, la incorporación de una vista de plataforma creaba un lienzo nuevo de forma inmediata, y cada vista de plataforma adicional agregaba otro lienzo. Es costoso crear lienzos adicionales, ya que cada uno tiene el tamaño de toda la ventana. Esta versión reutiliza lienzos creados para vistas de plataforma anteriores, por lo que, en lugar de incurrir en el costo 60 veces por segundo, incurres en el costo una vez en toda la vida útil de la app. Esto significa que puedes tener varias instancias HtmlElementView en tus apps web sin degradar el rendimiento, mientras reduces el bloqueo de desplazamiento cuando se utilizan las vistas de plataforma.
Flutter no solo implica el marco de trabajo, el motor y las herramientas: hay más de 20 000 paquetes y complementos compatibles con Flutter en pub.dev y se agregan más cada día. Una parte significativa de las interacciones que los desarrolladores de Flutter tienen día tras día forma parte del ecosistema más amplio, así que veamos lo que ha estado sucediendo en el ecosistema de Flutter desde la versión anterior.
En primer lugar, la versión del SDK de Google para móviles para Flutter tiene disponibilidad general en noviembre.
Esta versión es compatible con 5 formatos de anuncios, integra compatibilidad para AdMob y Ad Manager e incluye una versión beta de una nueva función de mediación para ayudarlo a optimizar el rendimiento de los anuncios. Para obtener más información sobre la integración de Google Ads en tu app de Flutter y otras opciones de monetización, consulta la nueva página de monetización en flutter.dev.
Otro nuevo lanzamiento que viene con Flutter en esta ocasión es la versión 3.0 del complemento webview_flutter. Hemos incrementado el número de versión debido a la cantidad de funciones nuevas, pero también debido a un posible cambio rotundo en la manera en que funcionan las vistas web en Android. En versiones anteriores de webview_flutter, estaba disponible el modo de composición híbrida, pero no el modo predeterminado. Mediante la composición híbrida, se arreglan ciertos problemas que tiene el modo de visualizaciones virtuales predeterminado anterior. Según los comentarios de los usuarios y el rastreo de problemas, creemos que es hora de que la composición híbrida se convierta en la opción predeterminada. Además, webview_flutter también agrega varias funciones muy solicitadas:
Además, en la versión 3.0, webview_flutter proporciona compatibilidad preliminar para una nueva plataforma: la Web. Muchos de ustedes pidieron la capacidad de alojar WebView en una app web de Flutter, lo que permite compilar una app para dispositivos móviles o la Web de una única base de código. ¿Cómo luce el alojamiento de WebView en una app web de Flutter? Bueno, desde una perspectiva de programación, luce exactamente igual:
Cuando se ejecuta en la Web, funciona de la manera esperada:
Ten en cuenta que la implementación actual de webview_flutter para la Web tiene algunas limitaciones, con base en el hecho de que está compilado con iframe, que solo admite cargas de URL simples y no tiene capacidad de controlar o interactuar con el contenido cargado (para obtener más información, consulta el archivo README de webview_flutter_web). Sin embargo, estamos tratando de que webview_flutter_web esté disponible como un complemento no aprobado debido a la gran demanda. Si deseas probarlo, agrega la siguiente línea a tu pubspec.yaml:
Si tienes comentarios sobre webview_flutter v.3.0, ya sea en la Web o fuera de esta, regístralos en el repositorio de Flutter como un problema de WebView. Además, si no has utilizado WebView antes o te gustaría ver un repaso, consulta el nuevo codelab de WebView, que te guía paso por paso a través del proceso de alojamiento de contenido web en tu app de Flutter.
El Comité del ecosistema de Flutter se ha reunido de nuevo para designar lo siguiente como paquetes de Flutter Favorite:
Felicitamos a esos creadores de paquetes y les agradecemos por apoyar a la comunidad de Flutter con su trabajo duro. Si estás interesado en nominar a tu paquete de Flutter favorito para que reciba un premio de Flutter Favorite, sigue las guías e instrucciones en la página del programa Flutter Favorite.
Si eres creador de paquetes, una decisión que debes tomar es qué plataformas vas a admitir. Si compilas un complemento con un código nativo para plataformas específicas, puedes hacerlo con la propiedad pluginClass en el pubspec.yaml de tu proyecto, que indica la clase nativa que proporciona la funcionalidad:
Sin embargo, a medida que la interfaz de funciones foráneas (FFI) de Dart se vuelve más madura, es posible implementar la funcionalidad para plataformas específicas en Dart al 100%, como lo hace el paquete path_provider_windows. Cuando no tienes ninguna clase nativa para utilizar, pero aún deseas designar tu paquete para que admita solo ciertas plataformas, utiliza la propiedad dartPluginClass en su lugar:
Con esta configuración implementada, has designado a tu paquete para que solo admita ciertas plataformas, incluso si no tienes ningún código nativo. También debes proporcionar la clase de complemento de Dart; obtén más información en los documentos sobre implementaciones de plataformas solo en Dart en flutter.dev.
Otra parte importante del ecosistema de Flutter es FlutterFire, que se utiliza en dos tercios de apps de Flutter. Esta versión agrega un conjunto de funciones nuevas que facilitan la compilación de apps con Flutter y Firebase:
Todos (o casi todos) los complementos de FlutterFire han dejado de ser versiones beta para pasar a ser versiones de calidad estable.
Entre los complementos que pasan a ser versiones estables para Android, iOS y la Web, se incluyen Analytics, Dynamic Links, In-App Messaging, Performance Monitoring, Realtime Database, Remote Config y, el recién llegado, Installations. El complemento App Check y la compatibilidad para plataformas macOS todavía se encuentran en versiones beta debido a la fase de las propias bibliotecas de Firebase, que también están en versiones beta. Si te has preocupado por elegir Realtime Database, Analytics o Remote Config porque las bibliotecas de FlutterFire no estaban listas para hacerse públicas, ya no te preocupes. Ahora estos son complementos totalmente compatibles listos para usar en la producción.
A medida que los paquetes se han trasladado a la calidad de producción, hemos agregado la capacidad de inicializar Firebase en cualquier plataforma compatible de Dart:
Este código inicializa una app de Firebase mediante las opciones adecuadas para cada plataforma compatible, como se define en el archivo firebase_options.dart, que contiene estructuras de datos según plataformas que tienen el siguiente aspecto:
A fin de recolectar los datos para cada estructura de datos de la opción de inicialización de cada plataforma, consulta la nueva herramienta de la CLI de FlutterFire.
Esta herramienta analiza los datos en tus subcarpetas de plataformas específicas para encontrar la ID de conjunto única y, luego, la utiliza con el fin de buscar los detalles específicos del proyecto de Firebase para tus apps de plataformas específicas compatibles e incluso crea nuevas apps para plataformas específicas o un nuevo proyecto de Firebase si no había ninguno. Lo que esto significa es que ya no necesitarás descargar y agregar un archivo json a tu proyecto de Android, descargar y agregar un archivo plist a tus proyectos de iOS y macOS ni pegar código en el index.html de tus proyectos web; sin importar con qué plataforma compatible con Firebase estés trabajando, este único fragmento de código Dart inicializa Firebase para tu app. Ten en cuenta que puede que esta no sea la única inicialización que tengas que realizar para hacer funcionar tu app de FlutterFire; por ejemplo, puede que desees integrar la creación de tus símbolos de Crashlytics en tu compilación Android o compilación iOS, pero debería ponerse en marcha en minutos con cualquier proyecto nuevo de Firebase.
Con esta inicialización de FlutterFire solo en Dart, ahora puedes utilizar Firebase desde dentro de DartPad.
En este ejemplo, se demuestra una pequeña app de chat con Flutter, Firebase y DartPad, los que puedes utilizar ahora mismo sin instalación. En la compatibilidad para Firebase de DartPad actual, ya se incluyen las API principales, la autenticación y Firestore. Se espera que surjan más servicios de Firebase en DartPad con el tiempo.
Otra función que la compatibilidad de FlutterFire en DartPad habilita es la capacidad de utilizar una instancia incorporada de DartPad en los documentos.
En este ejemplo, estás viendo los documentos de Cloud Firestore con el código para la app de ejemplo que puedes ejecutar y editar directamente en tu navegador sin tener que instalar nada, crear un proyecto de prueba o incluso copiar o pegar el código. Todo está allí para que lo utilices de forma inmediata.
Cuando se integra Firebase en una app, la mayoría de las apps tienen algún tipo de flujo de autenticación. Esto incluye permitir que los usuarios inicien sesión con un correo electrónico y una contraseña o con un proveedor de autenticación social como el que proporciona Google. Firebase Authentication también permite crear cuentas nuevas sobre la marcha, validar direcciones de correo electrónico, cambiar contraseñas, y hasta puede implicar la verificación de 2 pasos con SMS, iniciar sesión con un número de teléfono o hasta combinar varias cuentas de usuario en una sola cuenta. Firebase Authentication admite todas estas funcionalidades, pero, como desarrollador de Flutter, eres responsable de implementar la IU para todas ellas. Así era hasta hoy.
Hoy estamos felices de anunciar que el paquete flutterfire_ui puede crear una experiencia de autenticación básica con una pequeña cantidad de código. Como ejemplo, asume que tienes configurada la autenticación por correo electrónico y la de Google en tu proyecto de Firebase:
Con esta configuración, puedes activar una experiencia de autenticación de la siguiente manera:
Esto inicializa Firebase y, cuando se observa que el usuario todavía no ha iniciado sesión, se muestra la pantalla de inicio de sesión. El widget SigninScreen se configura mediante los proveedores de autenticación de correo electrónico y Google. El código también escucha el estado de autenticación del usuario con el paquete firebase_auth, de manera que, una vez que el usuario inicie sesión, puedes mostrar el resto de la app. Con este código, obtienes un inicio de sesión en funcionamiento para todas las plataformas admitidas por Firebase: Android, iOS, Web y macOS.
Con un poco más de configuración, puedes agregar de forma fácil una imagen y algo de texto personalizado (los detalles están disponibles en los documentos), lo que te da una experiencia de inicio de sesión repleta de funciones.
En esta captura de pantalla se muestra la versión para dispositivos móviles, pero, como las pantallas de flutterfire_ui son adaptables, esto es lo que ves en un dispositivo de escritorio:
Si el usuario ya tiene un correo electrónico o una contraseña, puede iniciar sesión y terminar. Si utiliza la autenticación de Google, se le mostrará el flujo de autenticación normal de Google, ya sea si utiliza un dispositivo móvil, la Web o la computadora. Si no tiene una cuenta todavía, puede presionar el botón en la pantalla de inicio de sesión e ir a la pantalla de registro. Una vez que el usuario haya iniciado sesión o se haya registrado, hay flujos para validar su correo electrónico, cambiar la contraseña, cerrar sesión y vincular cuentas de autenticación social. El inicio de sesión por correo electrónico funciona en todas las plataformas junto con la compatibilidad para la autenticación social de Google, Facebook y Twitter y compatibilidad parcial para Apple (no funciona en Android). La compatibilidad de autenticación en flutterfire_ui admite varios escenarios y esquemas de navegación, junto con opciones de localización y personalización. Consulte las muestras y documentos detallados en los documentos de firebase.flutter.dev.
Además, la autenticación no es la única función de Firebase relacionada con IU compatible con flutterfire_ui. Para mostrarles a los usuarios una lista de datos desplazable, infinita y en vivo de una consulta de Firebase, esta versión incluye la función FirestoreListView, que puedes incorporar en tu app con una consulta en vivo de la siguiente manera:
Y así luce cuando está en funcionamiento:
O, si te gustaría ofrecer a tus usuarios la capacidad de crear, leer, actualizar y borrar entradas en una tabla, ya tienes lo básico en FirestoreDataTable:
Que funciona de la siguiente manera:
Para obtener detalles sobre autenticación, vistas de lista y tablas de datos, consulta los documentos de flutterfire_ui. Como esta es una versión preliminar, se prevén funciones adicionales. Si tienes alguna duda o una solicitud de función, dirígete al repositorio de GitHub para registrar problemas o preguntar dudas en la sección de discusiones.
Y por último, aunque no menos importante, una nueva función de la integración entre Firebase y Flutter que deberías conocer es la versión alfa del asignador de objetos/documentos de Firestore. El ODM de Firestore está orientado a ayudar a los desarrolladores de Flutter a ser más productivos mediante la simplificación del uso de Firestore a través de objetos y métodos estructurados familiares de tipo seguro. Mediante la generación de código, el ODM de Firestore mejora la sintaxis para interactuar con documentos y colecciones y te permite modelar tus datos de forma segura:
Con estos tipos en funcionamiento, ahora puedes ejecutar consultas de tipo seguro:
El ODM también admite la definición de subcolecciones de asignación rigurosa y proporciona opciones incorporadas para optimizar recompilaciones de widget con su función selecta. Puedes leer acerca de todo esto y mucho más en los documentos sobre el ODM de Firestore. Como esta es una versión alfa, proporciónanos tus comentarios. Para enviar comentarios y preguntar dudas, únete al hilo sobre ODM de Firestore en la discusión de FlutterFire.
En la versión 2.8 de Flutter, se incluye otro gran paso en el camino hacia la versión estable de Windows, macOS y Linux. El estándar de calidad es alto, incluida la compatibilidad con internacionalización y localización, como la compatibilidad con IME china, la compatibilidad con IME coreana y la compatibilidad con IME de kanji recién lanzadas. O como la integración sólida que se está incorporando en la compatibilidad de accesibilidad de Windows. No es suficiente que Flutter se ejecute en computadoras de escritorio en el canal estable (algo que ya hace en la versión beta detrás de una marca), tiene que ejecutarse de forma correcta para lenguajes y culturas alrededor del mundo y para personas con distintos tipos de capacidades. Todavía no funciona como queremos, ¡pero lo estamos logrando!
Un ejemplo del trabajo continuo a fin de preparar a las computadoras de escritorio para una versión estable es el cambio de arquitectura completo de cómo Flutter administra eventos de teclado para permitir una respuesta síncrona. Esto habilita a un widget a administrar una pulsación de tecla y cancelar su propagación a través del resto del árbol. El trabajo inicial incorporado en Flutter 2.5 y Flutter 2.8 agrega correcciones para problemas y regresiones a medida que se aproxima a la calidad estable. Esto se suma al trabajo continuo para renovar la forma en que administramos la entrada del teclado de dispositivos específicos y una refactorización de la manera en que Flutter administra la edición de texto, todas funciones necesarias para las apps de computadora de escritorio con teclado de gran entrada.
Además, continuamos ampliando la compatibilidad de Flutter para la densidad visual y la alineación de exposición de los diálogos, ambas para habilitar una IU más compatible con la computadora de escritorio.
Y, finalmente, el equipo de Flutter no es el único que trabaja en la computadora de escritorio de Flutter. Solo como un ejemplo, el equipo de computadoras de escritorio de Canonical está trabajando con Invertase en una implementación de los complementos de Firebase más populares para Flutter en Linux y Windows.
Puedes leer más sobre la versión preliminar en el blog de Invertase.
Una versión de Flutter no está completa sin analizar las mejoras de herramientas. Esta publicación se enfoca en las mejoras de DartPad, de las cuales la mayor admite una gran cantidad de paquetes. De hecho, hay 23 paquetes disponibles para importación. Además de varios servicios de Firebase, la lista incluye paquetes populares como bloc, characters, collection, google_fonts y flutter_riverpod. El equipo de DartPad continúa agregando nuevos paquetes, así que si deseas ver qué paquetes se admiten actualmente, haz clic en el ícono de información en la esquina inferior derecha.
Para conocer sobre el plan de agregar nuevos paquetes a DartPad con el transcurso del tiempo, consulta este artículo en el wiki de Dart.
También hay otra función nueva de DartPad que es muy útil. Anteriormente, DartPad siempre se ejecutaba en la última versión estable. Con esta versión, puedes seleccionar las versiones de canal beta más recientes como también la versión estable anterior (llamada el "canal antiguo") mediante el nuevo menú Canal en la barra de estado.
Esta opción puede ser muy útil si, por ejemplo, estás escribiendo una entrada de blog donde la versión estable más reciente no es lo suficientemente nueva…
Un "canal" de Flutter administra qué tan rápido el marco y el motor subyacentes de Flutter cambian en su máquina de desarrollo, y el canal estable representa la menor tasa de abandono y el maestro la mayor. Debido a restricciones de recursos, hace poco dejamos de actualizar el canal para desarrolladores. Aunque recibimos algunas preguntas acerca de esto, observamos que menos del 3% de los desarrolladores de Flutter utilizan el canal para desarrolladores. Por lo tanto, hemos decidido comenzar el proceso de quitar el canal para desarrolladores de manera formal. Aunque algunos desarrolladores utilizan el canal para desarrolladores, exige una cantidad considerable de tiempo y esfuerzo por parte de los ingenieros de Flutter para mantenerlo. Si pasas todo tu tiempo en el canal estable (como más del 90% de los desarrolladores de Flutter), no lo extrañarás. Si se quita, tienes una decisión menos por tomar, y el equipo de Flutter puede usar su tiempo y energía en otras cosas.
Puedes decidir qué canal te gustaría utilizar mediante el comando de canales de Flutter. A continuación, se describe lo que el equipo de Flutter piensa sobre cada canal:
A medida que quitamos el canal para desarrolladores en los próximos meses, considera los canales beta o maestro según tu tolerancia a la tasa de abandono y tu necesidad de mantenerte actualizado.
Como siempre, nos esforzamos por reducir la cantidad de cambios rotundos en cada versión. En esta versión, Flutter 2.8 no presenta cambios rotundos, además de las API obsoletas que han expirado y se han quitado según nuestra política de cambios rotundos.
Si todavía utilizas estas API y te gustaría obtener detalles sobre cómo actualizar tu código, puedes leer la guía de migración en flutter.dev. Como siempre, agradecemos a la comunidad por contribuir con pruebas que nos ayudan a identificar estos cambios rotundos.
A medida que despedimos el 2021 y esperamos con ansias el 2022, el equipo de Flutter quiere expresar nuestra gratitud por el trabajo y la asistencia de toda la comunidad de Flutter. Aunque es cierto que compilamos Flutter para la cantidad en aumento de desarrolladores del mundo, también es cierto que no podríamos compilarlo sin ti. La comunidad de Flutter es diferente a cualquier otra, y estamos agradecidos por eso. ¡Te deseamos unas felices vacaciones y nos vemos el año próximo!