Publicado por Juan Sebastián Oviedo, administrador sénior de productos
Hoy, en Google I/O 2022, anunciamos un conjunto interesante de funciones nuevas disponibles en Android Studio Dolphin (beta) y Electric Eel Canary, que ya se pueden descargar. Nos comentaste que quisieras ser más productivo al momento de compilar apps para Android, por lo que nos enfocamos en incluir mejoras que hacen que la experiencia de desarrollo sea más rápida e informativa.
En la versión de Android Studio Dolphin, encontrarás las siguientes funciones y mejoras que puedes comenzar a usar en el canal beta, que se aproxima a la calidad estable:
Para obtener aún más funciones de vanguardia, puedes ver un adelanto del lanzamiento de Android Studio Electric Eel en el canal Canary:
Estas funciones se impulsarán a canales más estables una vez que recibamos tus comentarios y realicemos mejoras, así que pruébalas.
Para ver todas las funciones nuevas en acción, consulta la sesión de novedades en las herramientas para desarrolladores de Android.
A continuación, se muestra una lista de nuevas funciones y mejoras clave en Android Studio Dolphin:
Coordinación de animaciones de Compose
Anotaciones de diferentes vistas previas
Recuentos de recomposición de Compose
Asistente de sincronización del emulador de Wear OS
Barra de herramientas lateral del emulador de Wear OS
Nuevas clases de configuración de ejecución y depuración de Wear OS
Logcat V2
Dispositivos administrados de Gradle
A continuación, se incluye una lista de nuevas funciones y mejoras clave en Android Studio Electric Eel:
Emulador de Live Edit
Vista previa de Live Edit
Estadísticas del Índice de SDK de Google Play
App Quality Insights de Firebase Crashlytics
Emulador de tamaño ajustable
Visual Linting
Sincronización de dos Android Emulators con Bluetooth emulado
Duplicación de dispositivo
En resumen, estas son las nuevas funciones y mejoras que están disponibles en Android Studio Dolphin (beta), con una calidad casi estable:
Jetpack Compose
Wear OS
Herramientas de desarrollo
Estas son las nuevas funciones y mejoras que están disponibles en Android Studio Electric Eel Canary:
Google Play y Firebase
Pantallas grandes
Android Studio Dolphin (beta) y Electric Eel Canary están disponibles para descargar. Sigue estas instrucciones para instalarlos con la versión estable actual de Android Studio. Si bien la versión beta ofrece una estabilidad casi completa, aún puede presentar errores. Si encuentras alguno, infórmalo para que podamos corregirlo. Del mismo modo, si encuentras un problema o tienes comentarios sobre las funciones de la versión de Canary, comunícate con nosotros.
Realmente apreciamos tus comentarios sobre los problemas y las solicitudes de funciones. Puedes seguir al equipo de desarrollo de Android Studio en Twitter y en Medium.
Para obtener más información, consulta las notas de la versión preliminar.
Publicado por Yafit Becher, administrador de productos, y Ray Brusca, administrador de asociaciones estratégicas
Los desarrolladores de apps confían en los SDK para integrar funciones y servicios clave en sus apps y juegos. Los SDK son componentes fundamentales, pero los desarrolladores indicaron que puede ser difícil determinar qué SDK son confiables y seguros de usar. Por lo tanto, ayudar a los desarrolladores como tu a tomar decisiones informadas sobre los SDK es parte de que Google Play siga siendo un espacio seguro y confiable para miles de millones de personas.
En 2020, lanzamos SDK Console de Google Play para brindar a los proveedores de SDK informes de fallas, estadísticas de uso y una forma de comunicar problemas críticos a los desarrolladores de apps mediante Google Play Console y Android Studio. Hoy, daremos otro paso para aumentar la comunicación y la transparencia con el lanzamiento del Índice de SDK de Google Play, un nuevo portal público que enumera más de 100 de los SDK comerciales que más se usan y proporciona información sobre cada uno de ellos.
El Índice de SDK de Google Play muestra señales de confiabilidad y seguridad para que puedas decidir si un SDK es adecuado para tu empresa y tus usuarios.
Puedes buscar un SDK o una categoría, como Publicidad y monetización o Análisis. Por cada lista de SDK, el Índice de SDK de Google Play combina los datos de uso de las apps de Google Play con la detección de código SDK para brindar estadísticas diseñadas a fin de ayudarte a decidir si un SDK es adecuado para tu empresa y tus usuarios. Puedes ver lo siguiente:
Los proveedores de SDK también pueden brindarte información clave sobre los SDK que registraron en SDK Console de Google Play, como la siguiente:
No importa en qué momento del ciclo de vida del desarrollo te encuentres, esperamos que el Índice de SDK de Google Play te resulte útil para tomar decisiones informadas sobre los SDK. No te pierdas las novedades sobre los puntos de datos, categorías y volumen de SDK adicionales que agregaremos.
Para obtener más información, haz lo siguiente:
Android Jetpack es un pilar clave del desarrollo moderno de Android. Se trata de un paquete de más de 100 bibliotecas, herramientas y guías para ayudar a los desarrolladores a seguir prácticas recomendadas, reducir el código estándar y escribir código que funcione de forma coherente en todos los dispositivos y las versiones de Android, de modo que puedas concentrarte en crear funciones únicas para tu app.
En la arquitectura de la mayoría de las apps disponibles en Google Play se usa Jetpack. En la actualidad, más del 90% de las 1.000 apps más destacadas usan Jetpack.
Presentamos los aspectos más destacados de las últimas actualizaciones en Jetpack. Se trata de una versión ampliada de nuestra charla sobre las novedades de Jetpack en I/O.
A continuación, analizaremos las actualizaciones en tres áreas principales de Jetpack:
Luego, concluiremos con algunas actualizaciones adicionales clave.
Las bibliotecas de arquitectura de apps y sus componentes garantizan que las apps sean más confiables, tengan mayor capacidad de prueba y sean más fáciles de mantener.
Se recomienda la capa de persistencia de datos Room, que proporciona una capa de abstracción sobre SQLite y permite mayor usabilidad y seguridad en la plataforma.
En Room 2.4, la compatibilidad con Kotlin Symbol Processing (KSP) ahora es estable. Se demostró que KSP es 2 veces más rápido que KAPT en nuestras comparaciones de código Kotlin. Además, Room 2.4 agrega compatibilidad integrada para las enumeraciones y RxJava3, y es totalmente compatible con Kotlin 1.6.
Room 2.5 incluye el comienzo de una reescritura completa de Kotlin. Este cambio establece las bases para las mejoras relacionadas con Kotlin, a la vez que sigue siendo compatible a nivel binario con la versión anterior escrita en el lenguaje de programación Java. También se ofrece compatibilidad integrada con Paging 3.0 mediante el artefacto room-paging, que permite que las consultas de Room muestren objetos PagingSource. Por otra parte, ahora los desarrolladores pueden realizar consultas JOIN sin la necesidad de definir estructuras de datos adicionales, ya que Room admite métodos de consultas relacionadas con tipos de datos que se muestran en multimapa (mapas y arreglos anidados).
@Query("SELECT * FROM Artist JOIN Song ON Artist.artistName = Song.songArtistName") fun getArtistToSongs(): Map<Artist, List<Song>>
Métodos de consultas relacionadas con tipo de datos que se muestran en multicapa
Con las actualizaciones de AutoMigrations, las migraciones de bases de datos son más simples y se agregó compatibilidad con propiedades y anotaciones adicionales. Se puede usar una nueva propiedad de AutoMigration en la anotación @Database para declarar qué versiones se migran automáticamente. Cuando Room necesita más información sobre las modificaciones de la tabla y la columna, se puede usar la anotación @AutoMigration para especificar las entradas.
Database( version = MyDb.LATEST_VERSION, autoMigrations = { @AutoMigration(from = 1, to = 2, spec = MyDb.MyMigration.class), @AutoMigration(from = 2, to = 3) } ) public abstract class MyDb extends RoomDatabase { ...
La biblioteca Datastore es una solución de almacenamiento de datos sólida que aborda problemas con SharedPreferences. A fin de comprender mejor cómo usar este potente reemplazo en muchos de los casos de uso de SharedPreferences, puedes consultar una serie de videos y artículos en Habilidades para el desarrollo moderno de Android: Datastore, que incluye una guía para probar el uso que hace tu app de la biblioteca, con inserción de dependencias y migración de SharedPreference a Proto DataStore.
La biblioteca Paging te permite cargar y mostrar pequeños grupos de datos para mejorar el consumo de red y recursos del sistema. Los datos de apps se pueden cargar de forma gradual y correcta dentro de las listas diferidas de RecyclerViews o Compose.
Paging 3.1 ofrece compatibilidad estable con las integraciones Rx y Guava, que proporcionan alternativas de Java al uso nativo que hace Paging de las corrutinas de Kotlin. Esta versión también cuenta con un manejo mejorado de las condiciones de carrera de invalidación con un tipo de datos que se muestra nuevo, LoadResult.Invalid, para representar datos no válidos o estables. También se mejoró el control de cargas y operaciones no-op en páginas vacías con las API nuevas de onPagesPresented y addOnPagesUpdatedListener.
Para obtener más información sobre Paging 3, consulta el nuevo y simplificado Codelab sobre los aspectos básicos de Paging en el sitio para desarrolladores de Android, en el que se demuestra cómo integrar la biblioteca Paging a una app que muestra una lista.
La biblioteca Navigation es un marco de trabajo para trasladarse entre destinos dentro de una app.
Ahora, el componente de Navigation está integrado en Jetpack Compose mediante el nuevo artefacto navigation-compose, que permite que se usen funciones que admiten composición como destinos en tu app.
Se mejoró la función de varias pilas de actividades para que sea más fácil recordar el estado. La IU de Navigation ahora guarda y restablece automáticamente el estado de los destinos agregados, lo que permite ofrecer compatibilidad con varias pilas de actividades sin ningún cambio en el código.
Se mejoró la compatibilidad con pantallas grandes gracias al artefacto navigation-fragment, que brinda una implementación que ya se compiló de un diseño de dos paneles en AbstractListDetailFragment. Este fragmento usa un diseño SlidingPaneLayout para administrar un panel de lista (administrado por tu subclase) y un panel detallado que usa NavHostFragment.
Se rescribieron en Kotlin todos los artefactos de Navigation y se agregó una función que mejora la nulabilidad de las clases con elementos genéricos, como las subclases NavType.
Para obtener más información sobre cómo nuestras bibliotecas de arquitectura clave funcionan en conjunto, puedes consultar varios videos y artículos en los que se abordan las prácticas recomendadas del desarrollo moderno de Android en una serie llamada Habilidades para el desarrollo moderno de Android: Arquitectura.
El uso de bibliotecas de rendimiento te permite crear apps de gran rendimiento e identificar las optimizaciones para mantener un alto rendimiento, lo que resulta en mejores experiencias del usuario.
La velocidad de la app puede tener un gran impacto en la experiencia del usuario, sobre todo cuando las apps se usan inmediatamente después de instaladas. Para mejorar esa primera experiencia, creamos los perfiles de referencia. Los perfiles de referencia permiten que las apps y bibliotecas proporcionen un tiempo de ejecución de Android con metadatos sobre el uso de la ruta del código, que se utiliza para priorizar la compilación anticipada. Estos datos del perfil se agregan en varias bibliotecas y dirigen al APK de la app como un archivo baseline.prof, que luego se usa en el momento de la instalación para precompilar parcialmente la app y el código de la biblioteca vinculado de forma estática. Esto permite que tus apps se carguen más rápido y reduce los fotogramas la primera vez que el usuario interactúa con una app.
En Google, ya comenzamos a aprovechar los perfiles de referencia. Después de implementar los perfiles de referencia, la app de Play Store disminuyó en un 40% el tiempo de renderización de la página de resultados de búsqueda inicial. Los perfiles de referencia también se agregaron a bibliotecas populares, como Fragments y Compose, para ayudar a ofrecer una mejor experiencia del usuario final. Para crear tu propio perfil de referencia, debes usar la biblioteca Macrobenchmark.
La biblioteca Macrobenchmark extiende la cobertura de comparación de Jetpack a casos de uso más complejos y, así, ayuda a los desarrolladores a comprender mejor el rendimiento de la app. Esto incluye el inicio de la app y las operaciones integradas de la IU, como el desplazamiento a RecyclerView o la ejecución de animaciones. También se puede usar Macrobenchmark para generar perfiles de referencia.
Se actualizó Macrobenchmark para aumentar las pruebas de velocidad. Ahora cuenta con varias funciones experimentales nuevas. Además, se admiten las mediciones de tiempo personalizadas basadas en seguimientos con TraceSectionMetric, lo que permite a los desarrolladores comparar secciones específicas de código. Por otra parte, AudioUnderrunMetric ahora habilita la detección de subdesbordamientos de búfer de audio para ayudar a comprender los bloqueos audibles.
BaselineProfileRule genera perfiles que ayudan a optimizar el tiempo de ejecución. BaselineProfileRule funciona de manera similar a las macrocomparativas, en las que representa las acciones de los usuarios como código dentro de lambdas. En el ejemplo que se muestra a continuación, el recorrido crítico del usuario que el compilador debe optimizar de forma anticipada es un inicio en frío: se abre la actividad de destino de la app desde el selector.
@ExperimentalBaselineProfilesApi @RunWith(AndroidJUnit4::class) class BaselineProfileGenerator { @get:Rule val baselineProfileRule = BaselineProfileRule() @Test fun startup() = baselineProfileRule.collectBaselineProfile( packageName = "com.example.app" ) { pressHome() // This block defines the app's critical user journey. Here we are // interested in optimizing for app startup, but you can also navigate // and scroll through your most important UI. startActivityAndWait() } }
Para obtener más información y una guía detallada sobre cómo generar y usar perfiles de referencia con Macrobenchmark, consulta nuestra guía en el sitio para desarrolladores de Android.
La nueva biblioteca JankStats te ayuda a hacer un seguimiento de los problemas de rendimiento en la IU de tu app y analizarlos, lo que incluye informes sobre la disminución de los fotogramas de renderización (que se conoce como “bloqueos”). JankStats se compila sobre la base de API existentes de plataformas de Android, como FrameMetrics, pero se puede usar con el nivel de API 16.
La plataforma también ofrece funciones adicionales que van más allá de la compilación en la plataforma: heurística que ayuda a identificar las causas de la disminución de los fotogramas, estado de la IU que proporciona más contexto en los informes y un informe de devoluciones de llamada que se usa a fin de cargar datos para analizar.
A continuación, analizamos con mayor detalle los tres aspectos principales de JankStats:
La biblioteca Tracing escribe eventos de seguimiento en el sistema búfer para habilitar la generación de perfiles de rendimiento de la app. Tracing 1.1 admite la generación de perfiles en compilaciones no depurables a nivel de API 14, al igual que la etiqueta de manifiesto <profileable> que se agregó en el nivel de API 29.
Se introdujeron varios cambios en nuestras bibliotecas de IU para ofrecer mayor compatibilidad con pantallas grandes, dispositivos plegables y emojis.
Jetpack Compose, el kit de herramientas moderno de Android para compilar IU nativas, alcanzó hoy la versión beta 1.2, con lo que se agregaron varias funciones para admitir casos de uso más avanzados. Esto incluye compatibilidad con fuentes descargables, diseños diferidos e interoperabilidad de desplazamiento anidado. Para obtener más información, consulta la entrada de blog Novedades de Jetpack Compose.
La nueva biblioteca WindowManager ayuda a los desarrolladores a adaptar sus apps para admitir entornos multiventana y nuevos factores de forma de dispositivos, ya que ofrece una plataforma de API común que es compatible con el nivel de API 14.
La versión inicial estaba dirigida a casos de uso de dispositivo plegables, incluidas las propiedades físicas de las consultas que afectan la forma en la que debería mostrarse el contenido.
El componente SlidingPaneLayout de Jetpack se actualizó para usar diseños de API inteligentes de WindowManager a fin de evitar que se coloque contenido en áreas de oclusión, como en una bisagra física.
La nueva biblioteca DragAndDrop también ayuda con los nuevos factores de forma y modos de renderización en ventanas, ya que permite a los desarrolladores aceptar datos de la función de arrastrar y soltar dentro de su app o desde otra. DrapAndDrop incluye una opción coherente de destino para soltar y es compatible con el nivel de API 24.
La biblioteca AppCompat permite el acceso a API nuevas en versiones de API anteriores de la plataforma, lo que incluye portabilidad de las funciones de IU, como el modo oscuro.
AppCompat 1.4 integra la biblioteca Emoji2 y ofrece compatibilidad predeterminada con emojis nuevos en todas las vistas basadas en texto que se admiten en AppCompat nivel de API 14 y superior.
La selección de la configuración regional personalizada ahora se admite en el nivel de API 14. Esta función habilita la persistencia manual de los parámetros de configuración regional durante el inicio de la app y admite la persistencia automática mediante un servicio de marca de metadatos. Esto le indica a la biblioteca que cargue configuraciones regionales de forma sincrónica y que recree las actividades en ejecución según sea necesario. En el nivel de API 33 y superiores, la plataforma administra la persistencia sin sobrecarga adicional.
La biblioteca Annotation expone metadatos que ayudan a las herramientas y a otros desarrolladores a comprender el código de tu app. Proporciona anotaciones familiares, como @NonNull, que se vinculan con verificaciones de lint para mejorar la precisión y la usabilidad del código.
Annotation se migrará a Kotlin, por lo que los desarrolladores que usan Kotlin podrán ver objetivos de anotación más apropiados, incluido @file.
Se agregaron varias anotaciones muy solicitadas con las verificaciones de lint correspondientes. Por ejemplo, anotaciones relativas a anulaciones de métodos o funciones y la anotación @DeprecatedSinceApi, que proporciona un corolario a @RequiresApi y desaconseja el uso más allá de un determinado nivel de API.
Ahora tenemos más de 100 proyectos en GitHub. Hay varios módulos abiertos para que los desarrolladores colaboren con el uso estándar del flujo de trabajo basado en GitHub:
Consulta la página de destino para obtener más información sobre cómo controlar las solicitudes de extracción y sobre cómo comenzar a compilar con las bibliotecas de Jetpack.
Este fue un breve recorrido por todos los cambios que se implementaron en Jetpack durante los últimos meses. Para obtener más información sobre la biblioteca de Jetpack, consulta las notas de la versión de AndroidX, busca rápidamente las bibliotecas relevantes con el selector de API y mira las charlas de Google I/O si deseas obtener detalles adicionales.
Java es una marca registrada de Oracle o sus afiliados.
Entrada publicada por Dave Burke, vicepresidente de Ingeniería
El mes pasado, lanzamos la primera versión preliminar para desarrolladores de Android 13, diseñada en torno a nuestros temas centrales de privacidad y seguridad, productividad de los desarrolladores y compatibilidad con tablets y pantallas grandes. Hoy compartimos la versión preliminar para desarrolladores 2 de Android 13, que incluye más funciones y modificaciones para probar en tus apps. Tus comentarios nos ayudan a hacer de Android una mejor plataforma para los desarrolladores y los usuarios, así que cuéntanos qué piensas.
El lanzamiento de hoy se da poco después de la actualización de funciones de la versión 12L, que se incorporó al Proyecto de código abierto de Android (AOSP) la semana pasada. Esto te permitirá sacarles provecho a los más de 250 millones de dispositivos Android de pantalla grande. Y para conocer más sobre Android 13, las tables y nuestra inversión para potenciar la productividad de los desarrolladores en Jetpack Compose, echa un vistazo al último episodio de #TheAndroidShow.
Antes de adentrarnos en la versión preliminar para desarrolladores 2, veamos las otras novedades de la semana pasada: lanzamos de manera oficial la actualización de funciones de 12L a AOSP, que se implementará en todos los dispositivos compatibles con Pixel en las próximas semanas. La versión 12L hace que Android 12 sea aún mejor en las tablets e incluye actualizaciones, como una nueva barra de tareas que permite a los usuarios arrastrar y soltar al instante las apps en el modo de pantalla dividida, así como nuevos diseños de pantalla grande en el panel de notificaciones y la pantalla de bloqueo, y modos de compatibilidad mejorados para las apps. Puedes obtener más información aquí.
Más adelante este año, la versión 12L estará disponible a través de actualizaciones planificadas en tablets y dispositivos plegables de Samsung, Lenovo y Microsoft, por lo que es momento de asegurarte de que tus apps estén listas. Recomendamos que pruebes tus apps en modo de pantalla dividida con ventanas de varios tamaños y en diferentes orientaciones, y que revises los nuevos cambios en el modo de compatibilidad, si es necesario. Puedes leer más sobre la versión 12L para desarrolladores aquí.
Y lo mejor es que las funciones de pantalla grande de la versión 12L son fundamentales en Android 13, por lo que puedes hacer desarrollos y pruebas en Android 13 sabiendo que también tienes cobertura para las tablets que ejecutan Android 12L. Las pantallas grandes son claves para el futuro de Android, por lo que seguimos invirtiendo a fin de darte las herramientas que necesitas para compilar grandes experiencias para tablets, Chromebooks y dispositivos plegables. Obtén más información sobre cómo dar tus primeros pasos en la optimización para pantallas grandes y asegúrate de echarle un vistazo a nuestros recursos para desarrolladores para pantallas grandes.
Veamos las novedades de la versión preliminar para desarrolladores 2 de Android 13.
Las personas buscan SO y apps a los que puedan confiar sus datos más personales y sensibles, así como los recursos de sus dispositivos. La privacidad y la confianza del usuario son principios fundamentales para los productos de Android, y en Android 13 seguimos centrándonos en compilar una plataforma responsable y de alta calidad para todos a través de un entorno más seguro en el dispositivo y mayor capacidad de control para el usuario. Estas son las novedades de la versión preliminar para desarrolladores 2.
Permiso de notificación: para ayudar a los usuarios a concentrarse en las notificaciones que consideran más importantes, Android 13 presenta un nuevo permiso de tiempo de ejecución para enviar notificaciones desde una app: POST_NOTIFICATIONS. Las apps para Android 13 deberán solicitar el permiso de notificaciones de los usuarios antes de enviarles notificaciones. En el caso de las apps compatibles con Android 12 o versiones anteriores, el sistema se encargará del flujo de actualización. El flujo seguirá perfeccionándose con el tiempo. Para proporcionar más contexto y control a tus usuarios, te invitamos a que te dirijas a Android 13 lo antes posible y solicites el permiso de notificación en tu app. Más información aquí.
Diálogo del permiso de notificación en Android 13.
Permisos revocables para los desarrolladores: es posible que algunas apps ya no requieran ciertos permisos que el usuario concedió con anterioridad para habilitar una función específica, o que conserven un permiso sensible de una versión anterior de Android. En Android 13, ponemos a disposición una nueva API para que puedas proteger la privacidad de los usuarios revocando permisos de tiempo de ejecución concedidos con anterioridad.
Exportación segura de receptores registrados en el contexto: en Android 12 les solicitamos a los desarrolladores que declararan la capacidad de exportación de los receptores de Intents declarados en el archivo de manifiesto. En Android 13, pedimos que hagan lo mismo en relación con los receptores registrados en el contexto, agregando la marca RECEIVER_EXPORTED o RECEIVER_NOT_EXPORTED cuando se registran receptores para fuentes que no son del sistema. Esto ayudará a garantizar que los receptores no estén disponibles para que otras apps realicen transmisiones, a menos que así se prefiera. Si bien no es un requisito en Android 13, te recomendamos declarar la capacidad de exportación como medida para fortalecer la seguridad de tu app.
En Android 13, estamos trabajando para brindarte más herramientas que te ayuden a ofrecer una experiencia mejorada a los usuarios. Estas son algunas de las actualizaciones del lanzamiento de hoy.
Ajuste de texto en japonés mejorado: TextViews ahora puede ajustar el texto según Bunsetsu (la menor unidad de palabras que suena natural) o frases (en lugar de caracteres) para ofrecer apps en japonés mejores y de más fácil lectura. Puedes aprovechar este ajuste usando android:lineBreakWordStyle="phrase" con TextViews.
android:lineBreakWordStyle="phrase"
Ajuste de texto en japonés con estilo de frases activado (abajo) o desactivado (arriba).
Mejora de la altura de las líneas para los alfabetos no latinos: Android 13 mejora la visualización de los alfabetos no latinos (como el tamil, birmano, telugu y tibetano) utilizando una altura de línea adaptada a cada idioma. Las nuevas alturas de las líneas evitan los recortes y mejoran el posicionamiento de los caracteres. Tu app puede beneficiarse con estas mejoras si está orientada a Android 13. Asegúrate de probar tus apps cuando uses una nueva línea de espaciado, ya que los cambios pueden afectar a la IU en el caso de los alfabetos no latinos.
Mejora de la altura de las líneas para los alfabetos no latinos en las apps orientadas a Android 13 (abajo).
API de conversión de textos: las personas que hablan idiomas como el japonés o el chino usan métodos para introducir letras fonéticas que suelen ralentizar la búsqueda y las funciones como el autocompletado. En Android 13, las apps pueden llamar a la nueva API de conversión de textos para que los usuarios puedan encontrar lo que buscan de manera más rápida y sencilla. Antes, por ejemplo, la búsqueda requería que el usuario japonés (1) usara hiragana para introducir la pronunciación fonética del término de su búsqueda (es decir, el nombre de un lugar o de una app), (2) utilizara el teclado para convertir los caracteres hiragana en kanji y (3) volviera a buscar utilizando los caracteres kanji para (4) obtener sus resultados de búsqueda. Con la nueva API de conversión de textos, los usuarios japoneses pueden escribir en hiragana y ver los resultados de la búsqueda en kanji en tiempo real, y evitar así los pasos 2 y 3.
Fuentes vectoriales en color: Android 13 aporta compatibilidad con la renderización para fuentes de la versión 1 de COLR (spec, intro video) y actualiza el emoji del sistema al formato COLRv1. COLRv1 es un nuevo formato de fuentes altamente compacto que renderiza de forma rápida y nítida en cualquier tamaño. Esto funcionará para la mayoría de las apps y el sistema se encargará de todo. Puedes optar por no utilizar COLRv1 para tu app a partir de la versión preliminar para desarrolladores 2. Si tu app implementa su propia renderización de texto y utiliza las fuentes del sistema, recomendamos utilizar esta alternativa y probar la renderización de emojis. Puedes obtener más información sobre COLRv1 en el anuncio de Chrome.
Emoji vectorizado (izquierda) y emoji de mapa de bits de COLRv1.
Bluetooth LE Audio: Low Energy (LE) Audio es la próxima generación de audio inalámbrico, creada para sustituir a Bluetooth clásico y permitir nuevos casos de uso y topologías de conexión. Permite a los usuarios compartir y transmitir el audio a sus amigos y familias, o suscribirse a transmisiones públicas para obtener información, entretenimiento o accesibilidad. Está diseñado para garantizar que los usuarios reciban audio de alta fidelidad sin sacrificar duración de batería y sean capaces de alternar de manera fácil entre casos de uso que no eran compatibles con Bluetooth Classic. Android 13 agrega compatibilidad integrada con LE Audio, por lo que los desarrolladores deberían obtener las nuevas capacidades de forma gratuita en los dispositivos compatibles.
MIDI 2.0: Android 13 es compatible con el nuevo estándar MIDI 2.0 y es posible conectar con hardware de MIDI 2.0 mediante USB. Este estándar actualizado ofrece características como una mayor resolución para los controladores, una mejor compatibilidad con la entonación no occidental y una interpretación más expresiva mediante el uso de controladores por nota.
Con cada lanzamiento en la plataforma, intentamos acelerar y simplificar las actualizaciones. Para ello, priorizamos la compatibilidad con apps a medida que implementamos nuevas versiones de la plataforma. En Android 13, los cambios en la app son opcionales para darte más tiempo. A su vez, hemos actualizado nuestras herramientas y procesos para ayudarte a que tengas todo listo antes.
Con la versión preliminar para desarrolladores 2, estamos en plena fase de lanzamiento y seguimos mejorando la estabilidad general, así que este es el momento de probar las nuevas funciones y los cambios y darnos tu opinión. En particular, queremos oír tus comentarios sobre nuestra API y que nos cuentes de qué manera los cambios en la plataforma afectan tus apps. Visita la página de comentarios para compartir tu opinión con nosotros e informar sobre cualquier problema.
También es un buen momento para empezar a hacer pruebas de compatibilidad y determinar en qué hay que trabajar. Recomendamos que comiences a trabajar lo antes posible, para contar con una actualización compatible con el lanzamiento de la versión beta 1 de Android 13. No es necesario cambiar la targetSdkVersion de tu app ya mismo, pero te recomendamos usar los botones de activación de cambio de comportamiento en las Opciones para desarrolladores para tener una idea preliminar de cómo tu app podría verse afectada por los cambios de participación de Android 13.
Cuando lleguemos a la estabilidad de la plataforma, en junio de 2022, todos los comportamientos del sistema de cara a la app, las API del SDK/NDK y las listas no relacionadas con el SDK estarán finalizados. En ese momento, puedes completar las pruebas finales de compatibilidad y lanzar una versión totalmente compatible de la app, el SKD o la biblioteca. Obtén más información sobre el cronograma para desarrolladores aquí.
Funciones de compatibilidad de la app que se pueden activar o desactivar en las Opciones para desarrolladores.
La versión preliminar para desarrolladores tiene todo lo que necesitas para probar las funciones de Android 13, evaluar el funcionamiento de tus apps y enviarnos tus comentarios. Puedes empezar hoy mismo mostrando una imagen del sistema del dispositivo en un dispositivo Pixel 6 Pro, Pixel 6, Pixel 5a 5G, Pixel 5, Pixel 4a (5G), Pixel 4a, Pixel 4 XL o Pixel 4. Si no tienes un dispositivo Pixel, puedes usar las imágenes del sistema de 64 bits con Android Emulator en Android Studio Dolphin. Para pruebas más amplias, hay imágenes GSI disponibles. Si ya instalaste una compilación de versión preliminar en tu dispositivo Pixel, obtendrás esta actualización y todas las versiones preliminares y versiones beta posteriores de manera automática e inalámbrica. Si necesitas más detalles sobre cómo obtener Android 13, visita este sitio.
Si quieres obtener más información, visita el sitio para desarrolladores de Android 13.
La solicitud va al servidor DNS, que responde con una dirección IP. Cloud DNS es la infraestructura de Google para servicio de DNS autoritativo de gran volumen que ofrece ANS al 100% (es decir, nunca deja de funcionar). Utiliza la red global de Google de servidores de nombres anycast para brindar servicio a zonas de DNS desde ubicaciones redundantes en todo el mundo, de modo que brinda una alta disponibilidad y baja latencia a tus usuarios.
En Cloud Run, App Engine, GKE y Compute Engine, tienes varias opciones para los servidores web y de apps. Echa un vistazo a dónde deberías ejecutar tus creaciones para obtener más detalles.
Sin servidores: Si tienes un equipo de desarrolladores, te conviene que se concentren en la codificación y no en las tareas de infraestructura y escalamiento. Cloud Run y App Engine serían excelentes elecciones. Ambas opciones funcionan sin servidores y escalan de bajo a alto tráfico según sea necesario. Si quieres ejecutar contenedores sin servidores para arquitecturas de microservicios web y basadas en eventos, te recomendamos usar Cloud Run. Cloud Run debería funcionar bien en la mayoría de los casos de uso, pero puedes echarle un vistazo a App Engine si estás desarrollando sitios web con hosting de archivos estáticos integrado.
Google Kubernetes Engine (GKE): Si quieres ejecutar apps en contenedores con más opciones de configuración y flexibilidad, puedes usar GKE. Ayuda a implementar apps en contenedores de manera sencilla con Kubernetes, y te brinda control de la configuración de los nodos. Escalar también es fácil: puedes definir el número de nodos a los que escalar a medida que aumenta el tráfico. A su vez, GKE ofrece autopiloto si necesitas flexibilidad y control, pero tienes operaciones y soporte de ingeniería limitados.
Compute Engine: Compute Engine es otra opción de máximo control. Se trata de máquinas virtuales (MV), por lo que puedes definir la configuración de tus máquinas con precisión dependiendo de la cantidad de memoria y CPU que necesites. Sin embargo, este nivel de control implica una mayor responsabilidad de tu parte a la hora de escalar, administrar, corregir y mantener las MV según sea necesario. Compute Engine funciona bien para apps antiguas con necesidades específicas y en situaciones en las que es absolutamente necesario tener un control total.
Por supuesto, foo.com necesita una o más bases de datos para almacenar información. Puede tratarse de una base de datos relacional o no relacional, según el tipo de datos y el caso de uso. (Para obtener lineamientos más detallados sobre cómo elegir la base de datos correcta para tu caso de uso, echa un vistazo a Tus opciones de bases de datos de Google Cloud.)
Las bases de datos relacionales de Google Cloud incluyen Cloud SQL y Cloud Spanner, y ambas son administradas.
Cloud SQL es ideal para cubrir necesidades genéricas de SQL (MySQL, PostgreSQL y servidor SQL).
Spanner es mejor para bases de datos relacionales gigantescas que necesitan escalabilidad horizontal. (Con “gigantesco”, nos referimos a miles de escrituras por segundo y cientos de miles de lecturas por segundo, a la vez que se brinda soporte a transacciones ACID.)
Para bases de datos no relacionales, Google Cloud cuenta con tres opciones principales: Firestore, Bigtable y Memorystore.
Firestore es una base de datos de documentos sin servidores que brinda coherencia sólida, es compatible con transacciones ACID y ofrece resultados rápidos a consultas complejas. También es compatible con datos y sincronizaciones sin conexión, por lo que es una gran opción para casos de uso móviles, así como aquellos vinculados con la Web, la IoT y los videojuegos.
Bigtable es una base de datos NoSQL de columnas anchas, compatible con lecturas y escrituras pesadas con una latencia extremadamente baja. Es la opción ideal para eventos, datos de serie temporal de dispositivos de IoT, datos de flujo de clics, eventos de anuncios, detección de fraude, recomendaciones y otros casos de uso relacionados con la personalización.
Memorystore es un servicio de almacenamiento de datos en una memoria, completamente administrado para Redis y Memcached. Es ideal para almacenamiento temporal y en caché de base de datos.
A medida que aumente el tráfico, deberás escalar los servidores web y de apps. Y a medida que aumente el número de servidores, necesitarás un balanceador de cargas para guiar al tráfico a los servidores web y de apps. Cloud Load Balancing es un sistema definido por software y completamente distribuido que se basa en direcciones IP anycast. Esto implica que puedes configurar tu frontend con una sola dirección IP. También es global, por lo que puede brindar contenido a tus usuarios tan cerca de ellos como sea posible y responder a un millón de consultas por segundo. Puedes configurar decisiones de enrutamiento basadas en contenido según atributos como el encabezado HTTP y el identificador de recursos uniforme. A su vez, ofrece balanceo de cargas integral para los servidores de apps internos, de manera que puedas dirigir el tráfico a cada uno de ellos según sea necesario.
Los archivos estáticos no suelen cambiar, por lo que se utiliza la CDN para almacenar esos archivos en caché y ponerlos a disposición desde la ubicación más cercana al usuario, lo que ayuda a disminuir la latencia. Con el balanceador de cargas, tienes la opción de habilitar Cloud CDN para almacenar en caché aquellos medios solicitados con mucha frecuencia y el contenido web en la periferia de la ubicación más cercana al usuario. Esto reduce la latencia y optimiza el rendimiento en las últimas etapas. También ayuda a ahorrar en costos, ya que se atienden las solicitudes en la periferia para que no sea necesario que las administre el backend.
Todos los archivos estáticos de foo.com, como los archivos de medios y las imágenes, así como CSS y JavaScript, pueden almacenarse en un almacén de objetos. En Google Cloud, Cloud Storage es el almacén de objetos indicado para cubrir tus necesidades a corto y largo plazo.
Digamos, por ejemplo, que foo.com también está disponible en dispositivos móviles, donde se necesita que las imágenes se muestren en formato más pequeño. Puedes separar estas funcionalidades del servidor web y convertirlas en funciones como servicio con Cloud Functions. Este abordaje también te permite aplicar tu lógica de redimensionamiento de imágenes a otras apps. Puedes activar la función sin servidor tan pronto como se agregue un archivo Cloud Storage y convertir el archivo a múltiples formatos, para luego guardarlos de nuevo en el almacenamiento, donde los utiliza el servidor web. También puedes usar funciones sin servidores para otros casos de uso, como la búsqueda de direcciones, los chatbots y el aprendizaje automático, entre otros.
Es posible que en ciertas situaciones foo.com necesite enviar mensajes, notificaciones al usuario o eventos entre varios microservicios. En esos casos, se puede utilizar un servicio de mensajería asíncrono, como Cloud Pub/Sub, para enviar notificaciones a un tema y hacer que otros servicios suscriban a ese tema y tomen las medidas apropiadas de manera asíncrona.
Las apps como foo.com generan datos en tiempo real (por ejemplo, los datos sobre el flujo de clics) y datos en lote (por ejemplo, los registros). Es necesario ingerir, procesar y preparar esos datos para los sistemas descendentes en el almacén de datos. Desde allí, los analistas de datos, científicos de datos e ingenieros de AA pueden analizarlos para obtener información y hacer predicciones. Puedes ingerir lotes de datos con Cloud Storage o BigQuery y datos en tiempo real de la app con Pub/Sub, así como escalar a la ingesta de millones de eventos por segundo. Dataflow, basado en el modelo de código abierto Apache Beam, se puede usar para procesar y enriquecer los datos en lote y de transmisión. Si te encuentras en el ecosistema Hadoop, puedes usar Dataproc para tareas de procesamiento. Es una plataforma administrad de Hadoop y Spark que te permite concentrarte en el análisis de datos, en lugar de preocuparte por administrar y poner en marcha tu clúster de Hadoop.
Para almacenar los datos procesados, se necesita un almacén de datos. BigQuery es un almacén de datos sin servidores que es compatible con consultas SQL y puede alcanzar hasta un petabyte de almacenamiento. También funciona como un almacenamiento y data lake a largo plazo junto con Cloud Storage. Puedes usar datos de BigQuery para crear un panel de control en Looker y Data Studio. Con BigQuery ML puedes crear modelos de AA y hacer predicciones con consultas estándar de SQL.
Puedes utilizar BigQuery en tus proyectos de AA/IA para entrenar modelos en Vertex AI. Tus conjuntos de datos multimedia, imágenes y otros archivos estáticos de Cloud Storage pueden importarse directo a Vertex IA. Puedes crear tu propio modelo personalizado o utilizar modelos preentrenados. Es una buena idea comenzar con un modelo preentrenado y ver si funciona. Los casos de uso más comunes están cubiertos (imágenes, texto, video y datos tabulares). Si un modelo preentrenado no funciona para tu caso de uso, puedes usar el modelo de AutoML en Vertex AI para entrenar un modelo personalizado con tu propio conjunto de datos. AutoML es compatible con los casos de uso más comunes y no necesita código. Si tienes mucha experiencia interna en AA y ciencia de datos, tal vez decidas escribir el código de tu propio modelo personalizado en el framework que prefieras. Hablaremos más sobre este tema en la próxima entrada.
En foo.com necesitamos un seguimiento integral para asegurarnos de que los servidores y cada elemento de la arquitectura funcionan correctamente. La suite de operaciones de Google Cloud cuenta con todas las herramientas necesarias para registras, supervisar, depurar y solucionar problemas en tu app e infraestructura.
También debes asegurarte de que los equipos de desarrollo y operaciones de foo.com tengan el acceso y las herramientas indicados para desarrollar e implementar la app. A medida que los desarrolladores escriben el código de la app, pueden utilizar Cloud Code dentro del IDE para enviar el código a Cloud Build, que luego lo empaqueta y lo prueba, ejecuta escaneos de vulnerabilidad en el código, invoca autorización binaria para comprobar si hay imágenes de contenedor de confianza y, una vez superadas las pruebas, implementa el paquete para la etapa de pruebas. A partir de allí, puedes crear un proceso de revisión y pasar a la producción. Las imágenes del contenedor se almacenan en Artifact Registry, desde donde se las puede implementar en GKE o Cloud Run. Las imágenes de Compute Engine se almacenan en tu proyecto.
foo.com necesita seguridad en torno a los datos, la app, los usuarios e identidades, la infraestructura y el cumplimiento. Hablaremos en detalle sobre este tema en otra entrada.
Esta es una de las maneras de desarrollar una app web como foo.com en Google Cloud. Es un punto de partida, pero las posibilidades a partir de allí son infinitas. ¿Quieres dar tus primeros pasos en el desarrollo de sitios web en Google Cloud? Echa un vistazo a estos recursos. Para obtener más contenido sobre #GCPSketchnote y la nube, sígueme en Twitter @pvergadia y no dejes de ver thecloudgirl.dev.
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.