En este artículo hablaré sobre mis impresiones de la conferencia Google I / O 2019, que mis colegas y yo visitamos el otro día (e incluso "encendimos" con nuestra aplicación en una de las presentaciones). Le ayudará a tener una idea de la atmósfera y quizás lo aliente a ver algunos informes publicados en
el canal Google Developers .
Desarrolladores de Badoo en Google I / O 2019Día 0. Prólogo
Para llegar a la conferencia, debe ganar la lotería, que comienza en febrero
en el sitio web de E / S de Google (por lo general, esto se conoce a partir de las noticias). Pero la victoria no proporciona un boleto, sino que solo permite canjearlo por 1.150 dólares. Existen otros programas que le permiten obtener un boleto con un gran descuento o de forma gratuita, por ejemplo,
Code Jam . Los estudiantes y los empleados universitarios pueden comprar un boleto mucho más barato, por $ 375.
Antes de la conferencia, las compañías de TI tenían fiestas para los participantes. Me enteré de ellos por un chat en Telegram, que reunió a más de 150 usuarios de habla rusa. Por lo general, puede ingresar a estos chats por invitación de comunidades especializadas de Android en Telegram. Tales fiestas son una buena oportunidad para conocer a otros participantes de la conferencia en un ambiente informal. Por ejemplo, nos encontramos con el organizador Mobius y un equipo de desarrolladores que crean la aplicación para la aplicación de viajeros aéreos en el aire.
La conferencia se celebró bajo el lema "No estacionar". Google organizó autobuses gratuitos desde y hacia los hoteles más populares de la zona, y también asignó códigos promocionales para el servicio de taxi Lyft (el competidor de Uber en EE. UU.).
Hubo cinco desarrolladores de Badoo. Vayamos todos los que ganaron la oportunidad de comprar un boleto. Los informes fueron entre seis y diez transmisiones, y a menudo nos separamos para cubrir temas más interesantes.
Día 1
El primer día de la conferencia se abre con las llamadas notas clave: presentaciones generales. El primero es para todos, el segundo es para desarrolladores.
Antes de la presentación, man-DJ y AI-DJ trabajan juntosNoticias de última hora
En la primera conferencia, las presentaciones hablaron sobre diferentes proyectos de Google. Aquí hay algunas noticias:
- la compañía continúa desarrollando Google Duplex, un asistente de robot que puede llamar y reservar tiempo en la mesa de la peluquería / restaurante;
- Google Lens puede analizar cheques y compartir el monto de la factura con el monto de la propina (una tarea popular en los EE. UU.);
- El Asistente de Google funcionará sin conexión y disminuirá significativamente de tamaño, y los mensajes de audio en mensajería instantánea y llamadas se pueden ver como texto en la pantalla usando Live Relay.
En Android 10 aparecerá:
- más control parental;
- tema oscuro
- soporte mejorado para dispositivos plegables;
- nuevos gestos de navegación;
- intercambio mejorado;
- Nueva agrupación de notificaciones por prioridad.
En una presentación a los desarrolladores, anunciaron que Kotlin es ahora el principal lenguaje de programación para el desarrollo de Android. Google introdujo una nueva biblioteca para la cámara Camera X, la nueva UI declarativa Jetpack Compose (aparentemente, todavía es bastante simple, pero muy prometedora), nuevas características para actualizar la aplicación: el desarrollador podrá solicitar la actualización por su cuenta en la interfaz de la aplicación.
Los subtítulos se generan en tiempo real durante cada informe.Consejos plegables de Google
Recientemente, solo las personas perezosas no hablan de dispositivos plegables. Aunque ahora ocupan una escasa cuota de mercado, las aplicaciones en ellos deberían funcionar de
alguna manera .
Los representantes de Google aseguraron que si sigue las mejores prácticas, por ejemplo, maneja correctamente el cambio de pantalla, entonces todo saldrá de la caja. Para admitir dispositivos plegables, se utiliza el mismo mecanismo que para ventanas múltiples en tabletas y Chrome OS. Además del ya existente android: maxAspectRatio, android: minAspectRatio parecerá agregar restricciones en las relaciones de aspecto de las partes admitidas en la aplicación. Google afirma que 2 pulgadas (5.08 cm) serán el ancho mínimo de pantalla de los dispositivos Android a partir de Android Q.
Algunas cosas para verificar si está implementando soporte para dispositivos plegables en su aplicación al doblar y desenrollar el dispositivo:
- la aplicación debería restaurar el mismo estado;
- la posición de desplazamiento debe mantenerse;
- el foco del teclado debe permanecer igual.
Si no desea que la Actividad cambie de tamaño, entonces el indicador android: resizeableActivity = false no siempre ayuda, porque el sistema aún puede cambiar el tamaño de la Actividad o ponerla en modo de compatibilidad:
Modo de compatibilidadParece que ahora hay muy pocos usuarios con dispositivos plegables, pero el costo de dichos dispositivos es bastante alto y definitivamente es necesario verificar cómo funciona la aplicación en ellos.
Sobre los pros y los contras de la multimodularidad
En la conferencia, se prestó mucha atención a la modularidad. Las principales ventajas de la multimodularidad:
- las pruebas se pueden ejecutar solo para aquellos módulos que de alguna manera se ven afectados por cambios en la rama actual;
- Puede aislar las pruebas de varias funciones de la aplicación; por ejemplo, en Badoo, tenemos una aplicación de galería que contiene todos los elementos de la interfaz de usuario; durante su desarrollo, puede construir esta aplicación lo suficientemente rápido, ya que tiene un número limitado de dependencias (mis colegas hablaron sobre esto en un informe sobre MBLT DEV );
- la capacidad de agregar funciones dinámicas: según el orador, el 80% de los usuarios usa el 20% de las funciones de la aplicación, por lo que la mayoría de las funciones se pueden mover al módulo dinámico y descargar más tarde; los buenos candidatos son, por ejemplo, funciones para usuarios expertos, funciones que debe pagar, la pantalla Acerca de la aplicación; Al mismo tiempo, la incorporación no debe convertirse en una función dinámica, ya que se mostrará a todos los usuarios de la aplicación.
Además, la multi-modularidad se adapta bien a una gran cantidad de desarrolladores, lo cual es una ventaja significativa para equipos grandes y de rápido crecimiento.
La multimodularidad también tiene problemas. Por ejemplo, no está claro cómo crear una base de datos. Hay tres enfoques:
- crear una base de datos para toda la aplicación;
- crear una base de datos para cada módulo;
- cree una base de datos para varios módulos que pueden conectarse lógicamente.
Todos los enfoques tienen sus inconvenientes, pero los chicos de Google prometen un futuro brillante con Room, donde quieren mantener el aislamiento del módulo y admitir consultas entre módulos, así como módulos con funciones dinámicas. Desafortunadamente, esto aún no está disponible.
Tenemos más de 170 módulos en la aplicación Badoo, todavía no utilizamos la función dinámica, pero obtenemos otras ventajas
y desventajas de los módulos múltiples.
Día 2
El segundo día de la conferencia fue el más agitado. El primer informe comenzó a las 8:30 y el último terminó a las 20:00. Se presentaron un total de 90 informes.
Esta audiencia está completamente llena de gente en unos diez minutos.Nueva IU declarativa
Android ya tiene diez años, la interfaz de usuario actual es moralmente obsoleta. La vieja interfaz de usuario es difícil de mantener. Por ejemplo, la clase View tiene 29,188 líneas de código, incluidos los comentarios, la versión de AppCompat ha crecido con muchos hacks para diferentes versiones de Android. Después de ver esta imagen, los desarrolladores de Google decidieron crear un marco de interfaz de usuario que vendrá con la aplicación y se liberará por completo de Android. El nombre de trabajo del framework es Jetpack Compose.
Flutter, React, Litho y Vue.js sirvieron de inspiración para los desarrolladores, por lo que el nuevo marco les resultará familiar a muchos. La idea principal es garantizar que la interfaz de usuario responda a los cambios en el modelo, mientras que no hay lógica en la interfaz de usuario.
La jerarquía de vista se representa como funciones marcadas con la anotación @Composable. El marco utiliza el complemento del compilador para interceptar llamadas a funciones componibles.
El equipo de Google promete admitir el nuevo marco en las antiguas jerarquías de Vista (usando las anotaciones @GenerateView), así como previsualizar directamente en Android Studio y admitir animaciones.
Jetpack Compose todavía es bastante básico y no está listo para usar en aplicaciones del mundo real, pero vale la pena estudiar los principios de su trabajo ahora para comprender hacia dónde se dirige el desarrollo de Android.
Diseño de aplicaciones de realidad aumentada
Google ha preparado consejos para diseñar aplicaciones AR.
- Todos los elementos de la interfaz deben estar en la escena AR y no en el dispositivo, ya que los usuarios no prestan atención al dispositivo cuando les apasiona AR.
- Evite los momentos en que el usuario necesite retroceder, ya que esto puede provocar lesiones personales.
- Si la experiencia AR se construye en la ciudad, no te olvides de sus peligros. Por ejemplo, debe advertir al usuario sobre acercarse a los cruces peatonales y pedir que baje el dispositivo.
- En la escena AR, los objetos deben interactuar con la luz real, es decir, las sombras deben cambiar cuando la luz cambia. ARCore proporciona datos de iluminación para que sea posible resaltar objetos virtuales.
- Los objetos en AR deben poseer las propiedades que poseen en la realidad. Por ejemplo, la pelota debe rebotar en el piso.
- Cuando el usuario mueve el objeto lejos, es necesario aumentar la zona táctil del objeto para que sea posible controlarlo convenientemente.
- El desarrollador debe explicar claramente al usuario que la aplicación AR requiere acceso a la cámara del dispositivo para funcionar.
Puede encontrar más información sobre cómo diseñar elementos AR en la aplicación en el
video de la conferencia .
Mejores prácticas para usar texto al desarrollar aplicaciones de Android
Este informe habla sobre las mejores prácticas para trabajar con texto y algunos cambios en la nueva versión de Android.
- Android Q deshabilitará la separación silábica por defecto.
- PrecomputedTextCompat te ayuda a calcular el tamaño del texto antes de renderizarlo. Cabe señalar que cambiar la fuente y otros parámetros de TextView después de pasar los parámetros a PrecomputedTextCompat será imposible.
- Estilos que se aplican al texto (de mayor a menor prioridad):
- Span
- Vista (por ejemplo, definida por atributos en XML),
- Estilo
- Estilo predeterminado
- Tema
- Apariencia de texto.
- En Android, será posible establecer retrocesos para las fuentes usando Typeface.CustomFallbackBuilder. Por ejemplo, si alguna fuente de la aplicación no es compatible en uno de los idiomas, puede especificar otra como alternativa, también puede establecer fuentes para emoji. Nuestra aplicación se ha traducido a más de 40 idiomas, por lo que es importante que comprendamos cómo se verá si la fuente principal no es compatible con uno de ellos.
- Use android: imeOptions = "flagNoPersonalizedLearning" en EditText para evitar la memorización de las palabras ingresadas (por ejemplo, al ingresar un código promocional).
- Si necesita usar dos idiomas en una aplicación, puede usar setImeHintLocales para indicarle al teclado que necesita un idioma diferente. Esto puede ser útil para aplicaciones de diccionario o servicios de capacitación.
Y una pequeña noticia más. En una presentación de
GIF y más: integración de la búsqueda de expresiones en su aplicación, Google presentó su API GIF -
Tenor , una alternativa al conocido Giphy. Fuimos uno de los primeros en usarlo en nuestra aplicación Badoo, así que llegamos a la diapositiva del orador como ejemplo de uso. Un poco, pero agradable!
Nuestra aplicación "iluminada" en la presentación de TenorEl concierto
Al final del segundo día, Google organizó un concierto en el que actuó The Flaming Lips. Para ser honesto, no había oído hablar de ella antes, pero, aparentemente, es bastante popular en los Estados Unidos. Un
pequeño fragmento del discurso está disponible en Internet.
Antes del conciertoDía 3
El tercer día fue corto. A las 16:30 se presentaron todos los informes, y al final de los informes la conferencia terminó. Principalmente en este día hablé con otros participantes, pero les contaré sobre un par de informes a los que vale la pena prestarles atención.
Hay áreas de comunicación en la conferencia donde no se recomienda usar equipoPrincipios de animación
En su informe,
Nik Butcher habló sobre cómo implementar animaciones en la era de la reactividad para mejorar la experiencia del usuario. El problema es que en una aplicación reactiva, los objetos Ver no tienen estado y las animaciones, por el contrario, tienen estado.
Las buenas animaciones deben cumplir tres criterios:
- reiniciabilidad (reentrante): la animación se puede cancelar y comenzar de nuevo;
- continuidad: la animación no debe saltar de un estado a otro;
- suavidad: la animación debería cambiar la velocidad / dirección del movimiento gradualmente.
Cómo lograr esto:
- al iniciar la animación, establezca solo el valor final (donde debería terminar); en un valor inicial dado, la animación puede saltar de un estado a otro, esto puede suceder si comienza presionando un botón y el usuario hace clic en él varias veces;
- cancele la animación anterior antes de comenzar una nueva (a veces ya está implementada dentro del SDK de Android; por ejemplo, ViewPropertyAnimator, obtenido de View # animate, cancela la animación anterior para la propiedad animada);
- utilizar la animación de primavera ; tales animaciones se mueven teniendo en cuenta las leyes de la física, lo que significa que la suavidad y la continuidad se logran más fácilmente, es decir, si un objeto se mueve del punto A al punto B y llega un comando para moverse al punto C, entonces, en caso de usar Spring Animation, el objeto cambiará suavemente la dirección del movimiento;
- use <animated-selector> para agregar animación a Drawable; Para evitar transiciones entre todos los estados posibles, puede ingresar un estado intermedio (por ejemplo, un estado de arranque) y pasar por él.
Pero es mejor ver una vez que
escuchar cientos de veces
para leer, así que aquí hay un
video con un informe.
Pruebas de rendimiento
La biblioteca para medir el rendimiento de la aplicación ahora está en estado alfa como parte de Jetpack. Le permite tomar medidas del rendimiento del código y evita muchos errores de medición, también hay integración con Android Studio.
Cosas para recordar al escribir y ejecutar pruebas de rendimiento utilizando la
Biblioteca de Benchmark de Jetpack :
- no es confiable recopilar mediciones en el emulador, una advertencia al inicio le informará amablemente sobre esto;
- ProGuard / R8 debe estar encendido para medir el rendimiento correctamente;
- el dispositivo debe tener un nivel suficiente de carga de la batería para que un nivel bajo de carga no afecte los resultados de la medición;
- el módulo en el que se escriben las pruebas de rendimiento debe estar con el parámetro "debuggable = false";
- No compare los resultados de medición en diferentes dispositivos, pueden variar mucho.
Conclusión
Badoo Team y Google DeveloperGoogle I / O definitivamente vale la pena una visita. En una atmósfera así, con una taza de té puede escuchar muchas historias interesantes y aprender sobre soluciones de ingeniería interesantes. Por ejemplo, sobre cómo los chicos de VKontakte idearon un tema oscuro y lo presentaron a los usuarios que preguntaron: “¿Dónde está el tema oscuro?”, Cómo, por otro lado, los desarrolladores de Earth de Tinder combaten el contenido de spam y pornografía y cómo implementaron la aplicación en el equipo de Air registro automático para viajes aéreos. También puede atrapar representantes de Google creando las herramientas que utilizamos y hacer preguntas.
En general, una conferencia de este nivel no es solo un montón de informes, sino también muchas personas interesantes con las que puede intercambiar experiencias.