Publicado por Andrew Ahn, gerente de Productos, seguridad de apps de Google Play
En Google Play queremos fomentar un ecosistema de apps seguras, atractivas, útiles y entretenidas para que miles de millones de usuarios de Android de todo el mundo las usen y las adoren. Por esta razón, actualizamos y revisamos con regularidad nuestras Políticas para Desarrolladores de Google Play y el Acuerdo de Distribución para Desarrolladores, y detallamos cuáles son los límites del contenido y de las funciones de las apps que se permiten en la plataforma. Además, brindamos a los desarrolladores información actualizada sobre cómo promocionar y monetizar sus apps.
En nuestros esfuerzos recientes para verificar si las apps cumplían con las políticas de Google Play, identificamos algunos incumplimientos y errores comunes que cometen los desarrolladores, y queremos acercarle a esta comunidad sugerencias y pautas para que los eviten. De esta manera, podremos mitigar los riesgos de suspensión de las cuentas y apps de desarrolladores por infringir nuestras políticas.
Uno de los errores más frecuentes que observamos está relacionado con apps que tienen botones y menús vinculados con Play Store, ya sea que dirigen a apps del mismo desarrollador o están afiliadas a este, pero no queda claro si son anuncios o vínculos promocionales. Ese tipo de confusión puede conducir al bloqueo de las apps por contener anuncios engañosos o encubiertos. Una de las alternativas para evitar estos errores es asignar a los botones y los vínculos etiquetas explícitas como “Más aplicaciones”, “Más juegos”, “Explorar”, “Consulta nuestras otras aplicaciones”, etc.
Ejemplo de contenido de una app vinculado a la ficha de una app en Play
Otro de los errores que observamos con frecuencia se presenta cuando los desarrolladores incluyen a propósito palabras clave en la descripción de la app para mejorar la visibilidad y clasificación respecto de ciertas palabras clave y frases. Los bloques de texto o las listas que contienen referencias y palabras clave repetitivas o que no están relacionadas infringen nuestra política de promociones y fichas en Store. Una de las mejores opciones para evitar cometer este tipo de infracción es escribir una descripción de la app clara y optimizada para propiciar la legibilidad y comprensión por parte del usuario.
Mira este video para aprender a evitar la fichas de la tienda que tengan spam y los esfuerzos para mejorar de forma artificial la visibilidad de la app.
Existen apps que los desarrolladores publicaron hace mucho tiempo, pero nunca actualizaron. Las apps abandonadas y desactualizadas suelen presentar inconvenientes relacionados con la experiencia del usuario; por ejemplo, fallas en la funcionalidad de una app. Esas apps corren el riesgo de recibir una calificación por estrellas baja y opiniones negativas de los usuarios, y se marcarán para indicar que no cumplen con la política de funcionalidad mínima. Considera quitar esas apps de Play Store para reducir el impacto negativo que producen en la reputación del desarrollador y la implementación de la app. Ten en cuenta que esta acción no afectará a los usuarios existentes que ya instalaron la app, y los desarrolladores siempre podrán volver a publicar sus apps después de corregir las fallas.
Ejemplo de una app abandonada que presenta una experiencia con errores
Haz el curso “Minimum and Broken Functionality Spam” en Academia de Play
Por último, observamos que hay un gran volumen de propuestas de apps que solo son vistas web de sitios web existentes. El objetivo principal de la mayoría de estas solicitudes es dirigir tráfico en lugar de crear experiencias de apps atractivas para los usuarios de Android. Estas apps se consideran vistas web con spam y se quitan de Play. Piensa qué pueden realizar o hacer mejor los usuarios con tu app en comparación con una experiencia web, y considera implementar características y funciones pertinentes que enriquezcan la experiencia del usuario.
Ejemplo de una vista web sin funcionalidades de app
Haz el curso “Web Spam” en Academia de Play
Si bien los errores anteriores son los más comunes, asegúrate de estar al tanto de las últimas políticas ingresando al Centro de Políticas para Desarrolladores de Play. Consulta la capacitación de políticas de Academia de Play de Google, incluidos nuestros nuevos cursos sobre spam, y mira nuestros videos sobre PolicyBites de Play para obtener más información acerca de las actualizaciones recientes de políticas.
Te damos la bienvenida a Now in Android, una guía que actualizamos constantemente con las novedades más importantes sobre el desarrollo de Android.
La serie de MAD Skills continúa, con contenido técnico sobre el desarrollo moderno de Android. Wojtek Kaliciński y Ben Weiss publicaron algunos episodios en la segunda serie sobre paquetes de apps. Hasta ahora, vimos contenido acerca de la firma de apps de Play, cómo crear tu primer paquete de apps y Play Feature Delivery. Mira los videos y artículos que aparecen a continuación para obtener más información.
En una serie sobre paquetes de Android, es normal hablar de la firma de apps, porque Play genera APK para descargar en los dispositivos de los usuarios, y esos APK se deben firmar para su instalación. En este video, se detallan los pasos que se deben seguir para habilitar la firma de una app en Play Console, incluidas las opciones para subir tu propia clave o que Google genere una.
Asegúrate de consultar el artículo relacionado de Wojtek sobre las preguntas comunes acerca de la firma de apps de Play:
Respuestas a preguntas comunes sobre la firma de apps de Google Play
En el video de Ben, se detallan los pasos que debes seguir para crear un paquete de apps, ya sea en Android Studio o en la línea de comandos, para luego subirlo a Play Console. Además, Ben muestra cómo usar herramientas en Play Console para buscar información sobre el paquete subido.
En este episodio, se muestra cómo usar Android Studio para dividir tu aplicación en módulos y cómo seleccionarlos para descargarlos al momento de la instalación (con condiciones opcionales para determinar si se instalarán o no) o a pedido. Ben también proporciona más detalles sobre la manera de usar las API para solicitar la instalación de módulos a pedido.
También puedes consultar el artículo:
Cómo configurar tu app para Play Feature Delivery
En este último episodio, Wojtek explica cómo usar las herramientas disponibles para probar tu paquete y los APK resultantes, incluida bundletool para pruebas locales y Play Console para probar las cargas.
En la descripción del video, hay varios artículos y documentos vinculados. Asegúrate de consultarlos para obtener más información sobre el tema.
No te pierdas el contenido final de App Bundles la próxima semana. Haremos una sesión de preguntas y respuestas en vivo el próximo jueves (en ese momento, aparecerá un enlace a la transmisión en vivo por YouTube en la lista de reproducción, pero antes abriremos una publicación de preguntas por Twitter).
Si deseas obtener contenido de forma constante, recuerda consultar la lista de reproducción de MAD Skills en YouTube, los artículos en Medium o esta página de destino útil en la que se muestra todo. La siguiente serie comenzará la próxima semana. ¡No te la pierdas!
Entre la gran variedad de versiones alfa, beta y RC de las bibliotecas de AndroidX, recientemente se lanzaron algunas importantes versiones estables sobre las que me gustaría contarte.
No siempre hablamos sobre Kotlin, pero cuando lo hacemos, hablamos mucho del tema. Recientemente, se publicaron varios artículos y videos acerca de Kotlin:
Florina Muntenescu agregó otro episodio a la serie en curso de Vocabulario de Kotlin, esta vez sobre las clases de datos de Kotlin. Las clases de datos te permiten crear fácilmente una estructura para contener datos con menos código estándar y depender de Kotlin para que genere automáticamente funciones equals() y hashCode() adecuadas. Además, puedes acceder a la desestructuración de las propiedades de la clase desde un principio, junto con copy(). Como suele hacer con los episodios de Vocabulario de Kotlin, Florina analiza el código de bytes descompilado de las clases de datos para explicar el funcionamiento de todo en profundidad.
Clases de datos: Cómo contener datos con clase
Hablando del Vocabulario de Kotlin, Murat Yener publicó una secuela de su anterior artículo sobre la función de delegados de Kotlin. Esta vez, analiza los delegados proporcionados en la Biblioteca estándar de Kotlin: lazy, observable, vetoable y notNull.
Delegados integrados
La respuesta es:"sí".
No obstante, para una explicación más completa, Florina publicó este artículo en el que responde algunas de las preguntas principales que recibimos por parte de desarrolladores sobre si invertir para aprender y desarrollar Kotlin, e incluye enlaces a recursos de aprendizaje importantes.
¿Debo aprender Kotlin para Android? (y otras preguntas frecuentes)
En este artículo, Florina analiza algunos de los motivos por los que las apps de Kotlin son menos propensas a generar errores que las apps que no se escriben en Kotlin. Ella señala algunas apps y casos de uso específicos que respaldan esta afirmación, pero también analiza algunos de los motivos por los que este lenguaje permite escribir un código más sólido, incluyendo la nulabilidad, hashCode() != equals() y mucho más. Consulta la publicación para conocer todos los detalles.
Menos fallas y más estabilidad con Kotlin
Desde la última edición de Now in Android, se publicó otro episodio de Android Developers Backstage. Accede al vínculo más abajo o escúchalo a través de tu cliente de podcast favorito:
Romain Guy, Tor Norbye y yo hablamos con Colin White de Instacart sobre su biblioteca de carga de imágenes de código abierto, Coil. Conversamos sobre la carga de imágenes, el rendimiento, el código abierto y el uso de Kotlin y corrutinas para crear esta biblioteca basada en Kotlin.
Episodio 151: Carga de imágenes con Coil
Eso fue todo por hoy. Aprende sobre App Bundles, descarga las últimas versiones de AndroidX, lee los últimos artículos sobre Kotlin y escucha el episodio más reciente del podcast de ADB. Te esperamos pronto para ofrecerte más novedades del universo de desarrolladores de Android.
Los usuarios esperan disfrutar de una experiencia fluida con tu app. Las fallas pueden producir un incremento en las opiniones negativas y las desinstalaciones e incluso dañar la percepción sobre tu producto. A partir del diálogo con la comunidad, sabemos que una de las razones principales para adoptar Kotlin es obtener un código más seguro. En esta publicación, compartiremos algunas de las maneras en que Kotlin mejoró la estabilidad de algunos de los códigos de nuestros socios y también observaremos los resultados de algunas de las estadísticas de Google Play Store y veremos si existe una correlación entre el uso de Kotlin y la cantidad de fallas (spoiler: ¡las hay!).
La calidad de tu app no solo influye en la experiencia del usuario. Hay varios otros elementos que se verán afectados por una gran cantidad de fallas:
Las apps integradas con Kotlin tienen un 20 % menos de probabilidades de sufrir fallas.
¿Qué función desempeña Kotlin en esto? Analizamos las 1000 apps principales de Google Play y observamos que las que usan Kotlin tienen un 20 % menos de fallas por usuario que las que no lo hacen.
Un ejemplo de esto se puede hallar en el equipo de ingeniería de Swiggy, de cuyo código el 74 % está compilado en Kotlin; este equipo observó una reducción del 50 % en las fallas desde que el nuevo desarrollo de características pasó a Kotlin.
La principal causa de fallas en Google Play son NullPointerExceptions. En 2018, el equipo de Google Home comenzó a escribir todas las nuevas características en Kotlin y observó una disminución del 33 % en las fallas de puntero nulo durante el plazo de un año.
Google Home observó una disminución del 33 % en las NullPointerExceptions
Para evitar NullPointerExceptions, debes asegurarte de que las referencias del objeto con el que estás trabajando sean no nulas antes de llamar a métodos para ellas o de intentar acceder a sus miembros. En Kotlin, la nulabilidad es parte del sistema de tipo. Por ejemplo, se debe declarar una variable como anulable o no anulable antes de comenzar. A la hora de convertir la parte de nulabilidad del sistema de tipo, no es necesario que recurras a lo que recuerdes o conozcas sobre la base de código ni a las advertencias de tiempo de compilación (si comentas tus campos y parámetros con @Nullable). Se aplica, más bien, la nulabilidad para que obtengas errores de tiempo de compilación y no solo advertencias. Para consultar maneras en las que puedes controlar la nulabilidad, visita esta página.
Los desarrolladores ingresan muchos problemas sin darse cuenta, y muchos de ellos pueden ser bastante sutiles y difíciles de investigar. Aquí hay algunos ejemplos de esta clase de problemas que se evitan cuando se usa Kotlin.
Si dos objetos son iguales, su hashcode debe ser el mismo; sin embargo, olvidarse de implementar uno de estos métodos o actualizarlos cuando se agregan nuevas propiedades a la clase es algo normal. Al trabajar con estas clases cuyas funciones son solo las de contener datos, usa las clases de datos de Kotlin. Con las clases de datos el compilador genera hashCode() y equals(), y estos se actualizan de forma automática cuando cambias las propiedades de las clases.
¿Dos objetos son iguales a nivel estructural (tienen contenido equivalente) o iguales de forma referencial (sus punteros son los mismos)? En el lenguaje de programación Java, para los primitivos siempre debes usar ==; por lo tanto, un error común es también llamar == (igualdad referencial) a objetos, cuando lo que en verdad quieres es controlar si son iguales a nivel estructural (verificados al llamarlos equals()). Primero, Kotlin no tiene tipos primitivos, sino que usa clases como Int o String; esto significa que ya no es necesario que realices esta diferenciación entre objetos y tipos primitivos, puesto que todo es un objeto. Segundo, Kotlin definido == para igualdad estructural y === para igualdad referencial a fin de que no controles la igualdad referencial cuando no deberías.
Cuando se trabaja con enums, con frecuencia necesitarás asegurarte de que estás cubriendo todos los casos posibles. Esto conduce a usar un interruptor o una cadena de varios "if else". Cuando modificas tu enum para agregar un nuevo valor, deberás controlar manualmente cada fragmento de código donde estés usando el enum y asegurarte de estar manejando el caso nuevo. Pero esto es propenso a errores. En Kotlin, puedes confiar que el compilador haga esto si estás usando el parámetro "when" como expresión: si no estás cubriendo todas las ramificaciones posibles, aparecerá un error del compilador.
La estabilidad de tu app es importante para tus usuarios y tu marca. Comienza a utilizar Kotlin para reducir las tasas de fallas, mantener a tus usuarios contentos y estar al tanto de tu retención y adquisición manteniendo una alta calificación de la app.
Obtén más información sobre Cómo compilar mejores apps con Kotlin y observa cómo se han beneficiado los desarrolladores de Kotlin a través de la lectura de nuestros casos de éxito. Para comenzar con Kotlin, uno de los lenguajes más populares en el mundo, visita nuestra página Primeros pasos.
A cuatro meses del inicio oficial de la temporada DevFest 2020 confirmada para el 16, 17 y 18 de octubre, la idea de organizar un único evento que reuniera a todas las comunidades de LATAM era impensado. Sin embargo, nos propusimos lograr esta unión a pesar de la diversidad de culturas, países y formas de organización existentes. Perseguir este objetivo demandó un gran esfuerzo, compromiso y trabajo en equipo de la comunidad.
El primer paso fue incentivar la unidad para redefinirnos como una gran comunidad. Abandonar nuestras particularidades e identificarnos con una visión clara y amplia en pos de una meta colectiva: ser parte de la comunidad LATAM.
Conformamos equipos de trabajo que establecieron su propia planificación de tareas para cada área clave: Speakers & Agenda, Marketing & Design, Creative & Sponsors, Media & Transmissions y Web & Apps. Fijamos los viernes como el día de reunión semanal de todos los equipos para compartir avances, realizar el seguimiento de las actividades y motivarnos a seguir adelante con los planes previstos.
Comprender desde el inicio que toda forma de colaboración y apoyo sería valorada y agradecida en igual medida por todo el equipo, contribuyó a evitar juicios de valor y diferencias relacionadas con el nivel de participación y compromiso de los miembros durante la organización del evento.
El siguiente paso fue definir los objetivos y construir una base sólida para sustentar la organización del evento. Es por ello que decidimos centrarnos en los pilares básicos: speakers, streaming y difusión para luego sumar esfuerzos en otras áreas como sponsors y dinámicas del evento.
Dispuesto el branding oficial para DevFest 2020, fue necesario adaptarlo para reforzar su identificación con la región bajo el concepto de Latinoamérica unida.
Muy pronto descubrimos el talento de algunos miembros de la comunidad en otras áreas como diseño y edición de video. Como parte del equipo de Marketing & Design su aporte fue clave para la creación de los elementos gráficos necesarios, como así también su apoyo en la difusión y transmisión.
La tarea de construir un sitio web para reunir toda la información de DevFest LATAM estuvo a cargo del equipo de Web & Apps, integrado por organizadores entusiastas de Flutter.
El equipo asumió con éxito el reto de crear el sitio web oficial y las apps - disponibles para Android y iOS -, utilizando un mismo código.
EPÍGRAFE: Múltiples plataformas, el mismo código El sitio web y la app de DevFest LATAM fueron desarrolladas en Flutter
El contenido fue la estrella
Hacer un evento memorable con contenidos de calidad no fue una tarea sencilla. Organizamos un Call for Papers accesible al público en general, expertos de la industria y Google Developer Experts. Durante el proceso evaluamos las propuestas con imparcialidad, lo cual permitió garantizar su calidad. Realizamos rondas de evaluación, entrevistas y ofrecimos apoyo a los speakers.
Tal fue la expectativa generada, que recibimos propuestas de otros países y regiones, como Estados Unidos, Brasil y España. Con una mayor diversidad de idiomas, incluimos contenidos en español, inglés y portugués.
Luz, cámara, YouTube
Inicialmente, gracias a una experiencia de uso positiva en la transmisión de otros eventos de la comunidad, optamos por utilizar StreamYard.
Sin embargo, el canal de YouTube de Google Developers LATAM nos abrió sus puertas, brindó el soporte técnico necesario y la oportunidad de generar un mayor impacto regional con la transmisión del DevFest LATAM, lo cual nos motivó a maximizar los esfuerzos.
La experiencia DevFest más allá de lo virtual
El DevFest es un gran evento para disfrutar de buenas presentaciones, conocer e interactuar con otros miembros de la comunidad y participar en dinámicas divertidas. Pero, ¿cómo trasladar esta experiencia a un entorno virtual?
Decidimos que Discord era el mejor canal para expandir la experiencia de los asistentes: alentarlos a participar activamente, facilitar la interacción con los speakers después de cada presentación, realizar networking y asistir al after-party por cada día de evento.
Agradecimientos
Queremos agradecer a todos los integrantes del Equipo organizador del DevFest LATAM y a cada una de las comunidades de los distintos países que apoyaron en la difusión de este evento.
DevFest LATAM en números
3 días de evento
28 comunidades, 11 países diferentes de LATAM
2K asistentes registrados orgánicamente
10.8K de usuarios únicos durante los tres días de transmisión
14.7K Total Views
+36 ponentes
+ 32 hs. de transmisión en vivo
3 sesiones con transmisión simultánea
Contenidos en 3 idiomas (Español, Inglés y Portugués)
Revive el evento del año: DevFest LATAM 2020
Agenda: https://devfestlatam.dev/#/agenda
Día 1: https://www.youtube.com/watch?v=3tKJMl-EM8U
Día 2 - Agenda Azul: https://www.youtube.com/watch?v=nGf6oOWohzM
Día 2 - Agenda Roja: https://www.youtube.com/watch?v=A4DfWYQEKag
Día 2 - Agenda Verde: https://www.youtube.com/watch?v=lLNBQ-ggukg
Dia 3 - Agenda Azul: https://www.youtube.com/watch?v=__SlFsbXuAI
Día 3 - Agenda Roja: https://www.youtube.com/watch?v=49_dIKVYDUg
Día 3 - Agenda Verde: https://www.youtube.com/watch?v=WU8o-hy5v80
MAD Skills es una nueva serie de contenido con la que los desarrolladores pueden aprender a usar las tecnologías de desarrollo moderno de Android para crear mejores aplicaciones con más facilidad. La serie acababa de lanzarse cuando publiqué la última edición de Now in Android. Pasaron algunas semanas y la primera miniserie sobre el componente Navigation ya está completa. Bueno… casi completa. Nos queda el último episodio de Navigation: una sesión de preguntas y respuestas en vivo.
Algo que queríamos hacer con MAD Skills era trascender el mero hecho de enseñar a usar varias características del desarrollo moderno de Android para escuchar también comentarios sobre problemas o preguntas que tengas con el objetivo de tratar de ayudarte. Al final de cada miniserie, realizaremos una sesión de preguntas y respuestas en vivo por YouTube precisamente con ese fin.
Antes, nos comunicaremos por Twitter para recibir algunas preguntas del público. También intentaremos presentar las preguntas en vivo, tanto en Twitter como en YouTube. Luego, tendremos una conversación con algunos de los expertos que trabajan en el producto y escucharemos sus recomendaciones.
En lo que respecta a Navigation, realizaré una sesión de preguntas y respuestas en vivo con Ian Lake este jueves a las 10 a.m. (hora del Pacífico). Envía las preguntas que tengas por esta conversación de Twitter (o publica tuits en #AskAndroid) y súmate a la sesión si puedes hacerlo. Cuando la sesión termine, publicaremos el video para que puedas verla incluso si no pudiste participar en vivo.
Si te perdiste los episodios de Navigation, puedes consultarlos en video o en formato de artículo:
Si deseas obtener contenido de forma constante, recuerda consultar la lista de reproducción de MAD Skills en YouTube, los artículos en Medium o esta práctica página de destino que contiene enlaces a todos ellos. Además, mantente al tanto para recibir más contenido de MAD; ¡la serie siguiente comienza la próxima semana!
Antes que nada, AndroidX ha puesto más bibliotecas a disposición con el fin de sumar contribuciones a través de GitHub.
Sabemos que muchos desarrolladores prefieren el flujo de contribuciones familiar de GitHub frente al sistema de AOSP+Gerrit que usa Android tradicionalmente y que les complacería vernos usar más GitHub.
¡Esa es una excelente idea! No obstante, es algo difícil de concretar (si consideramos la infraestructura con la que contamos). De todas maneras, te escuchamos y comenzamos a analizar esta opción. Por este motivo, desde hace unos meses, iniciamos el desarrollo activo de un pequeño grupo de bibliotecas en GitHub, con Paging, Room y WorkManager. Hace poco, también agregamos las bibliotecas de Activity, Fragment y Navigation. Consúltalas y, si deseas contribuir, obtén más información en el documento CONTRIBUTING.
Estaba la enorme cantidad habitual de versiones estables alfa, beta, RC y menores, incluida esta versión estable destacada:
MediaRouter 1.2.0: esta versión es interesante porque incorpora la funcionalidad de sincronización con algunas de las funcionalidades de medios nuevas de Android 11.
Android 11 agregó una cantidad de detalles de UI a los reproductores multimedia, con lo cual envió los controles multimedia a un nuevo espacio dedicado en el panel de notificaciones, a fin de facilitar el control multimedia desde un solo lugar para evitar intercalarlo con el resto de las notificaciones. Esto no tiene que ver con una nueva funcionalidad para desarrolladores, sino con una presentación diferente para las notificaciones que probablemente ya estés creando; puedes continuar usando las API de MediaSession y MediaStyle que están disponibles desde el lanzamiento de Lollipop.
No obstante, se agregaron algunas funcionalidades nuevas en Android 11 para la “transferencia multimedia sin dificultades” que permite que los usuarios cambien el dispositivo de reproducción a través del interruptor de salida (que se muestra a continuación). Esta edición nueva de MediaRouter te permite interactuar con esta nueva capacidad de la plataforma.
Si deseas ver los cambios multimedia en Android 11, consulta el video What’s New in media de Don Turner.
También quería informar sobre un par de versiones alfa interesantes. Por lo general, no explico en detalle las versiones alfa porque, bueno, son alfa y, en consecuencia, están sujetas tanto a cambios como a iteración a medida que el equipo continúa su trabajo en ellas. Pero hubo versiones nuevas de Paging y Navigation (¡justo hoy!) que son interesantes en términos de lo que implican con respecto al desarrollo futuro.
Una de las preguntas que recibimos bastante en el último tiempo, mientras Jetpack Compose realiza el recorrido por su versión alfa, es "¿Cuál es el futuro de [inserta tu biblioteca favorita de Jetpack aquí] en un mundo de Jetpack Compose"?
¡Y esa es una excelente pregunta! La respuesta es que muchos de los componentes de la arquitectura no tratan específicamente sobre las vistas o el kit de herramientas de la UI, por lo cual serán igualmente necesarios y útiles en el nuevo mundo de Jetpack Compose. Aparte de eso, compilamos integraciones para facilitar el trabajo conjunto de diferentes componentes. Compose ya ofrece integraciones con ViewModels y LiveData y, en la actualidad, marca la primera versión de compatibilidad de Paging y Navigation para Jetpack Compose.
Hace poco hubo tres publicaciones sobre las funciones del lenguaje de Kotlin que quizás desees consultar.
Florina Muntenescu publicó un artículo y un video nuevos sobre la función de desestructuración de Kotlin. La desestructuración ofrece una forma práctica de asignar variables múltiples a los valores de los diferentes campos de un objeto. Por ejemplo, podrías tener la siguiente clase de datos:
data class Donut( dough: String, topping: String)
y asignar variables con rapidez a los campos de la instancia Donut con:
val (dough, topping) = someDonut
La desestructuración funciona automáticamente en el caso de las clases de datos, pero puedes ofrecer funciones en otras clases a fin de otorgarles una capacidad de desestructuración de la misma forma.
Desglose de las declaraciones de desestructuración
Meghan Mehta presentó un artículo nuevo que habla acerca de la función de extensiones del lenguaje de Kotlin. Las extensiones te permiten agregar métodos o propiedades nuevos a clases existentes… o algo así. En realidad, las extensiones no se insertan en una clase existente, pero parecen hacerlo para los llamadores de esos métodos. (Spoiler: se implementan de manera interna como métodos estáticos que reciben una instancia de la clase).
Es probable que esta sea mi característica favorita de Kotlin: como desarrollador de API, me encanta la idea de ser capaz de mejorar las API en el futuro mediante la incorporación de API que puedan vivir fuera del núcleo de la plataforma o biblioteca, pero que funcionen sin problemas cuando las uses en tu código. Entonces, por ejemplo, podría crear un método de extensión en la clase String (tec.), String.isAGoodDonutName(). Luego, los llamadores que usan mi método de extensión llamarían ese método de manera directa en una String, por ejemplo "Sprinkle".isAGoodDonutName() en lugar del enfoque en otros lenguajes de llamarlo a través de algún otro paquete o alguna otra clase, por ejemplo Utils.StringMethods.isAGoodDonutName("Sprinkle"). Eso no es tan agradable, ni siquiera si en el ejemplo hablamos de donas.
Extensión de la legibilidad del código con las extensiones de Kotlin
Por último, Manuel Vivo publicó un video nuevo sobre "Los ABC de las corrutinas", en el cual explica temas como CoroutineScope, CoroutineContext, Dispatchers y Jobs. Bueno, quizás sea más parecido a CDJ que a ABC de las corrutinas.
Uno de los aspectos engañosos de la publicación de aplicaciones es garantizar que dichas aplicaciones cumplan con las pautas de la tienda, que están en vigencia a fin de generar un buen ecosistema de aplicaciones para los usuarios. Pero, a veces, puede ser difícil determinar con exactitud cómo se puede hacer eso de la forma correcta. Por lo tanto, Play Store publicó este artículo para ayudarte a comprender algunas de las infracciones comunes que pueden causar problemas y cómo puedes evitarlas.
Algunas de estas áreas incluyen UI de las aplicaciones con enlaces externos a Play Store, descripciones que están más centradas en términos de búsqueda que en un resumen claro de la aplicación y aplicaciones que simplemente actúan como wrapper de WebView alrededor del contenido del sitio web.
Consejos y pautas para desarrolladores: Infracciones frecuentes de las políticas y cómo evitarlas
Droidcon tomó un enfoque interesante durante esta temporada de conferencias exclusivamente en línea cuando combinó todos sus acontecimientos anuales en eventos más grandes, del tamaño de toda la zona horaria. La versión de EMEA correspondiente a esta conferencia se realizó en octubre y todos esos videos (realizados por algunos de los miembros de nuestro equipo, al igual que por muchos desarrolladores de la comunidad más amplia) ahora están disponibles en línea:
Videos
(Mantente al tanto a fin de informarte sobre las versiones para las Américas y APAC, que se realizarán en las próximas semanas).
La serie de capturas de pantalla de video MotionTags publicó dos episodios más desde la última vez.
En el episodio 7, se abarca <KeyAttribute>, que es la etiqueta que contiene propiedades sobre la visualización, como sus valores de transformación y alfa.
En el episodio 8, se abarca <KeyCycle>. Esta etiqueta posee muchos de los mismos atributos que KeyAttribute, pero también ofrece propiedades que definen la forma de onda que se usa para una animación, lo que puede provocar un comportamiento de movimiento complejo verdaderamente interesante. Ten en cuenta que existe una herramienta CycleEditor independiente que facilita la creación y edición de KeyCycles.
Puedes ver estos episodios, junto con el resto de la serie en la lista de reproducción MotionTags:
Hace poco, se lanzó el nuevo nanogrado de desarrollador de Kotlin para Android en Udacity. Esta edición del curso está destinada a personas que desean aprender a compilar apps para Android en Kotlin de la mano de las prácticas recomendadas. Para conocer los requisitos previos y obtener más detalles, consulta la descripción general del programa.
Ten en cuenta que el nanogrado es un programa pago que incluye proyectos con comentarios, asistencia con mentores técnicos y servicios profesionales de Udacity. Sin embargo, el contenido subyacente del curso que desarrolló Google con Udacity es gratuito, y todos pueden consultarlo. Puedes consultar ese contenido en Desarrollo de apps para Android con Kotlin y Android Avanzado con Kotlin.
Desde la última edición de Now in Android, ha habido otro episodio de Android Developers Backstage. Escúchalo en el siguiente vínculo o en tu cliente de podcast favorito:
Romain Guy y yo conversamos con Dustin Lam y Chris Craik del equipo Android Toolkit con respecto a la nueva versión 3.0 de la biblioteca de Paging ("Paging 3"). Esta versión (actualmente en alfa) es una reescritura completa en Kotlin, con corrutinas y Flow, por varios motivos que se incorporarán en el podcast. Consúltalo para obtener más información.
Episodio 151: Paging 3
eso es todo por hoy. Consulta la serie MAD Skills. Descarga las bibliotecas de AndroidX más recientes. Obtén más información acerca de las funciones de lenguaje de Kotlin. Consulta los últimos artículos y videos del desarrollador. ¡Obtén un nanogrado! Escucha el episodio más reciente del podcast de ADB. Te esperamos pronto para ofrecerte más novedades desde el universo de desarrolladores de Android.
Es la cohorte más diversa de la historia de Accelerator LATAM, y seis de las compañías seleccionadas cuentan con una mujer fundadora
Las compañías pertenecen a segmentos de mercado como, educación, ecommerce, servicios profesionales (recursos humanos), salud y ciudades inteligentes.
Ciudad de México, Noviembre 02. Tras un arduo proceso de selección, Google for Startups se complace en anunciar las 12 compañías latinoamericanas seleccionadas para la versión del Invierno 2020 del Google for Startups Accelerator LATAM. Este programa está dirigido a startups en etapa de crecimiento provenientes de toda Hispanoamérica. El programa iniciará en noviembre, durará tres meses, y será totalmente virtual.
Es el cohorte más diverso de la historia de Accelerator LATAM. No solo porque vienen de ocho países de Hispanoamérica y participan en industrias diferentes. Además, en esta edición, seis de las 12 compañías seleccionadas cuentan con mujeres cofundadoras, lo que representa la mayor presencia femenina en la historia del programa en la región. “Nos alegra mucho apoyar cada vez más empresas fundadas y dirigidas por mujeres, esa es una gran señal que nos envía el ecosistema de que los esfuerzos para reducir la brecha de género están funcionando y deben continuar”, 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 speakers 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.
Por primera vez, Google for Startups pondrá a disposición de las empresas una plataforma de contenidos por demanda a la que podrán acceder todos los equipos al interior de las compañías. Esa decisión surge luego de que Accelerator Latam hiciera su primera edición online a mediados de año. “Tuvimos muchos aprendizajes sobre cómo adaptar toda la experiencia que brinda el programa a un entorno virtual, y en la edición de invierno seguro se verán reflejados”, dice Solsona.
Entre otros cambios, Accelerator incluyó en su pasada edición una sección dedicada a compartir las mejores prácticas de trabajo remoto y distribuido geográficamente, y reforzó los contenidos relacionados con economía, finanzas y relaciones con inversionistas, dada la urgencia de estos temas en medio de la crisis. Además, el programa ofrece espacios virtuales de relacionamiento y mentoría, que puedan ayudarles a los emprendedores seleccionados a construir contactos de manera eficaz.
Las 12 startups seleccionadas se destacan por el talento de sus equipos y su probada capacidad para crear soluciones de talla global a problemas presentes en la región. Accelerator les permitirá a los emprendedores aprender de los mejores, escalar sus productos, superar desafíos en materia tecnológica y establecer conexiones con redes de emprendimiento en la región y en Sillicon Valley, para así convertirse en agentes de cambio e innovación en el ecosistema de nuestra región.
Las compañías pertenecen a segmentos de mercado como, educación, ecommerce, servicios profesionales (recursos humanos), salud y ciudades inteligentes:
Abartys Health (Puerto Rico): Está desarrollando un sistema de identificación universal para pacientes, que sirva para que las personas tengan acceso a su información de salud sin importar dónde haya sido obtenida y procesada.
AIM Manager (Chile): Ofrece software de gestión operacional y administrativa en la nube por suscripción.
Alana (México): Ofrece un software as a service en la nube para la gestión de recursos humanos para los sectores de manufactura y comercio minorista.
Bolsa Rosa (México): Brinda a organizaciones y trabajadoras soluciones de gestión de talento a tiempo parcial y flexible, enfocadas en mujeres y madres.
Colektia (Chile): Es la primera agencia de cobranza de deudas basada en inteligencia artificial en Latinoamérica.
Crack the Code (Perú): Es una academia online de ciencias de la computación en español.
Hauzd (Panamá): Permite crear modelos interactivos en 3D para ayudar a las ventas de proyectos de finca raíz sin necesidad de la presencia física del cliente.
Runa (México): Ofrece soluciones automatizadas y fáciles de usar de gestión de nómina para las empresas.
Sagal (Uruguay): Ofrece servicios de gestión de canales de ventas online para minoristas latinoamericanos.
Talentu (Colombia): Es una plataforma que ayuda a las compañías a conseguir y retener talento especializado en labores manuales.
The Food Market (Argentina): Es un marketplace de productos locales, sustentables, de buena calidad y a precios justos para productores y usuarios.
Whyline (Argentina): Ofrece a las organizaciones soluciones en la nube para gestionar los tiempos de espera y de congestión para los clientes, mejorando la experiencia.