Guerra ... La guerra nunca cambia. Entonces, la guerra por un código hermoso y funcional está en curso. Y para cada tarea difícil nace su propia arma: alguien lo hace por sí mismo, y alguien usa herramientas listas para usar. El desarrollo de Android no es una excepción. En nuestra conferencia
AppsConf 2018 , discutiremos cómo y qué es lo más interesante de usar ahora, dónde puedes tropezar y lo que es interesante es el enorme arsenal de herramientas de desarrollo que Google finalmente ha comenzado a ordenar. Los temas principales de los informes se pueden ver en nuestro sitio web, pero por ahora les pedimos al experto desarrollador de Google, Denis Neklyudov y Alexander Smirnov, que hablen sobre el nuevo kit de herramientas Android Jetpack, que se presentó en mayo de este año.

Alexander Smirnov, cofundador y director de tecnología de PapaJobs, fundador de la comunidad de desarrolladores de Android MOSDROID, el blog de video líder Android in Faces. |
Denis Neklyudov, el primer GDE en Rusia, trabaja en Singapur en 90seconds.tv, el líder central del podcast de AndroidDev, orador de varias conferencias y autor de varios cursos de desarrollo. |
Android Jetpack se introdujo este mes de mayo en Google I / O.
¿Qué esperabas de esa conferencia? ¿Tus expectativas se hicieron realidad?Alexander Smirnov : esperaba mucho menos de lo que finalmente imaginé. Parecía que no había necesidad de desarrollar la plataforma desde un punto de vista comercial. En el segmento móvil, Google logró una victoria aplastante en el 87% del mercado con tendencias positivas, y en los últimos años ML ha sido visible como su principal área de trabajo. Estaba esperando el progreso en el diseño de materiales, la adición de herramientas ML para desarrolladores, el lanzamiento de Constraint Layout 2.0. Pero vimos un gran paso para poner las cosas en orden y apoyar a los desarrolladores. Repentinamente satisfecho con los nuevos artículos en AJP y el comienzo de la lucha por mejorar el Soporte. Hola, Android X.
Denis Neklyudov : Me
adherí a la regla principal de los viajes a las conferencias de comestibles: no espere anuncios, cambios revolucionarios, regalos, nada más que conocer a viejos amigos. Si tan solo no rompieran nada. Pero no, introdujeron Android X, cuya migración no es el proceso más agradable en grandes proyectos. Pero hubo muchas cosas positivas. Lo más valioso de Google I / O es la comunicación con los desarrolladores del marco y sus colegas en el taller.
¿Qué nuevos artículos ya se han puesto en práctica?Denis Neklyudov : Desde AJP probamos solo la migración a Android X. Tengo un conjunto comprobado de soluciones en el proyecto, no deseo apresurarme e introducir nuevos componentes. Solo admitieron Target SDK 28, verificaron el lanzamiento reciente de Android Pie y se calmaron. Estamos esperando que las mejoras prometidas para las pruebas estén disponibles. Jetpack ahora: estas son varias bibliotecas pequeñas reunidas en un solo lugar, que a veces hacen que la vida de los desarrolladores sea un poco más fácil y más agradable. La mayoría de los productos nuevos aún no están listos para las versiones de lanzamiento de las aplicaciones.
Alexander Smirnov :
De las novedades presentadas, probé todo, pero en producción solo actualizamos la aplicación al nuevo Material Design y aplicamos Android KTX, que nos gustó por su simplicidad y conveniencia. Me gusta colapsar un montón de código en unas pocas líneas. Lanzamos el resto al oleoducto y seguimos adelante este año.
Jetpack completará con éxito las tareas y disfrutarás usándolo. Pero sí, algunas secciones todavía están en alfa, por lo que en la etapa de desarrollo pueden surgir pequeños problemas. Esto es normal No recomendaría arrastrar herramientas de producción en estado alfa, pero con el mismo Kotlin no me detuvo.
Para Android, la cuestión de la navegación conveniente siempre ha sido un problema grave.
¿Algo cambiará con AJP?Denis Neklyudov : En Android, la navegación siempre ha sido poderosa y variada: Actividad, Fragmento, aún necesita procesar DeepLinks y monitorear los argumentos pasados. Puede confundirse fácilmente en un gran mapa de pantallas. Google solo está tratando de resolver esto con la nueva Navegación, que incluso está integrada en Android Studio con su propio reactor de jerarquía de pantalla.
Utilizo soluciones caseras que cumplen los requisitos y la arquitectura general del proyecto. Si bien la navegación tiene errores graves y no está lista para su uso en aplicaciones publicadas.
Alexander Smirnov : En Jetpack, Google dio un gran paso adelante: apareció la navegación, que mejorará la arquitectura de las aplicaciones. En aplicaciones grandes, la navegación puede volverse tan complicada que recordar todas las opciones de transición no es realista. Y todavía necesitan ser programados y probados. Hubo varias alternativas que intentaron resolver esto: Cicerone, Flow, Conductor. Ninguno de ellos es tan funcional.
En primer lugar, vale la pena señalar el Editor de navegación: es conveniente construir un diagrama de transición gráfico con él, y es bueno controlarlo con el mouse. Implementé el conveniente procesamiento de DeepLinks con soporte para reproducir todo el árbol de transición. El componente de navegación divide el trabajo con DeepLinks en dos casos: explícito e implícito. Primero podemos crearnos a través de un conveniente DSL y llamar como PendingIntent a través de una acción específica. El segundo es DeepLinks que nos son familiares, por ejemplo, desde el navegador. Se crean y se llaman de diferentes maneras, pero se procesan de manera idéntica utilizando el gráfico de navegación y el soporte completo para construir la pila para abrir la sección necesaria. Procesar DeepLinks nunca ha sido tan fácil.
La biblioteca de paginación se ha agregado a AJP. ¿Cómo cambia ella el trabajo con RecyclerView?Denis Neklyudov : RecyclerView siempre ha tenido un inconveniente: debe dedicar mucho tiempo a una solución que proporcione carga página por página en ambas direcciones, e incluso con la capacidad de saltar a diferentes partes de esta lista interminable. En la Biblioteca de paginación, Google presentó su solución a este problema.
Alexander Smirnov : la biblioteca repite la rutina de la mayoría de los desarrolladores de Android: trabajar con listas. Para acelerar la visualización de grandes conjuntos de datos, todos los dividimos en páginas y trabajamos con ellos. Con la Biblioteca de paginación, este tipo de trabajo se vuelve simple, ya que sacamos la implementación de la caja. Además, el componente puede trabajar en cargar datos de varias fuentes y mezclarlos. También obtenemos una idea interesante con Marcadores de posición, cuando en el momento de la carga de datos adicionales puede mostrar hermosos talones en lugar de eternos hiladores. Además, se ha agregado una función de eliminación para trabajar con instantáneas o datos inestables: el componente en sí puede comprender qué se ha cambiado y qué elementos deben colocarse en el centro de la lista y cuáles en la parte superior.
De hecho, este componente fue creado para trabajar en conjunto con RecyclerView, pero la Biblioteca de paginación consta de dos partes principales: PagedList y PagedListAdapter. En realidad, usando PagedList, puede trabajar con estas porciones, descargar desde varias fuentes.
Uno de los nuevos productos es Workmanager. ¿Cómo cambia su trabajo con tareas de fondo?Alexander Smirnov : Ayuda a alejarse sistemáticamente de los servicios omnipotentes a una API conveniente en Jetpack: le permite agregar la necesidad de cumplir con las condiciones ambientales para comenzar una tarea, para establecer el orden de las tareas y las cadenas. Puede transferir datos a una tarea ejecutable y obtener el resultado de ella. Tiene tres grandes ventajas: no necesita Google Play en su dispositivo, puede ejecutar tareas solo bajo ciertas condiciones, puede crear cadenas de tareas.
Ninguno de los análogos anteriores era autosuficiente, por lo que existía una biblioteca como Android-Job de Evernote, que usaba todos los análogos a la vez. Después de la aparición del WorkManager, la necesidad de ellos desaparece.
Denis Neklyudov : Google obtuvo una gran cobertura sobre todas las soluciones existentes para trabajar con tareas en segundo plano. Dado que la tarea diferida simplemente no se puede completar en el Servicio, los desarrolladores se enfrentan con el lanzamiento de Android Marshmallow y la llegada del Modo Doze. Ahora la aplicación no puede hacer lo que le plazca. Y con cada versión de tales restricciones cada vez más. Incluso con Lollipop, tenemos JobScheduler disponible, que ejecuta tareas en segundo plano bajo ciertas condiciones y con el consentimiento del sistema, pero tiene errores en versiones anteriores y no está claro cómo trabajar con él en versiones de Android donde no existe. Para hacer esto, se creó un contenedor en forma de un administrador de red GCM y se reescribió nuevamente como Firebase Job Dispatcher. Pero resultaron ser imperfectos: ese fue el nacimiento de su WorkManager de reemplazo moderno, que asume la tarea de realizar tareas en segundo plano en cualquier versión de Android sin errores.
AJP ha agregado una nueva característica: Slices. ¿Qué es lo interesante de ella?Alexander Smirnov : Primero que nada, las rebanadas deben mostrarse a su producto y vendedor. Permiten al usuario ver su aplicación con más frecuencia y usar la parte necesaria más rápido: vaya directamente a la sección deseada, cambie la función necesaria. Slices también le permite participar en su aplicación entre los resultados de búsqueda en la Búsqueda de Google, y también podrá integrarse en el Asistente de Google en el futuro.
En Slices, puede mostrar funciones relacionadas con el tipo de su aplicación y sus capacidades. Se pueden distinguir tres grupos: navegación, ejecución de tareas y retorno a datos. En general, los usuarios de Slices obtienen una interacción más simple y rápida, los desarrolladores obtienen más tráfico y oportunidades para devolver al usuario a la aplicación.
Denis Neklyudov : Admítelo, hace tiempo que no tienes la capacidad de recibir información de aplicaciones en aplicaciones con elementos interactivos directamente de la búsqueda. Los sectores resuelven tal problema, permitiendo que la aplicación declare la IU y las acciones con ella, que se incorporarán a aplicaciones de terceros, incluida la búsqueda. Tengo muchas ganas de ver las noticias en la interfaz del Asistente de Google en el teléfono inteligente integrado en Feedly, fotos del pasado de Timehop, mis vuelos desde App in the Air, la ruta al trabajo "Y. Navigator", etc.
Para los propietarios de aplicaciones, esta es una gran oportunidad para aumentar la frecuencia de uso de sus servicios, también será más conveniente para el usuario cambiar de pista en Spotify sin salir del nuevo simulador de carreras.
¿Y cuáles son las limitaciones?Alexander Smirnov : Slices todavía está muy recortado por las plantillas: hay un montón de aplicaciones integradas en otras y el usuario debe comprender que el mecanismo de interacción será diferente. Para mayor versatilidad, siempre tiene que pagar. Si recuerdas Widgets, también eran muy limitados. La expansión de lo funcional, por supuesto, será, pero no creo que se deba esperar algo grande de esto.
Denis Neklyudov : Estoy de acuerdo, ahora la API de Slices está limitada a un cierto conjunto de plantillas posibles que se pueden incrustar en una aplicación de terceros, pero también aparecerán nuevas plantillas con nuevas versiones. Los desarrolladores prohibieron específicamente las interfaces personalizadas para poder controlar cómo se ven los cortes en la aplicación integrada, y para que todos sean consistentes.
Google ha agregado una biblioteca KTX a AJP. ¿Qué impresiones tienes de ella?Alexander Smirnov : Una gran herramienta, esto es exactamente lo que faltaba durante mucho tiempo. KTX es un conjunto de extensiones para un uso más agradable de la API de Android en las tareas cotidianas.
Recomiendo encarecidamente cambiarlo a todos los desarrolladores de Android para aumentar la productividad. Da conveniencia, velocidad y buen humor cuando se desarrolla. Con KTX, incluso puede colapsar la placa repetitiva y obtener un código ordenado y legible.
Pero debe estudiar detenidamente las extensiones que proporciona KTX, y mirar el código fuente de estas extensiones para comprender lo que sucede debajo del capó. Y dado que no hay más trampas, puedes ir a la batalla de forma segura.
Denis Neklyudov : los desarrolladores de AJP
tomaron la decisión correcta: el marco debería ser más amigable para Kotlin. Así nació el proyecto con un conjunto de funciones estáticas, expandiendo la sintaxis del marco. Kotlin tiene muchas características de lenguaje convenientes, y solo las funciones de extensión le permiten acceder a las clases de marco de una manera conveniente. Por ejemplo, view.isVisible viene como una alternativa corta para view.getVisibility () == View.Visible.
Hay muchas funciones diferentes, es mejor
verlo por ti mismo . Por supuesto, puedes vivir sin ellos, como, de hecho, sin Kotlin. Pero es más agradable.
Google está promoviendo cada vez más a Kotlin. ¿Cómo te sientes acerca de esto?
¿Cuáles son sus perspectivas?Alexander Smirnov : Tengo una actitud muy positiva hacia Kotlin y desde enero de 2016 lo he estado utilizando como el principal lenguaje de desarrollo para Android. Durante este tiempo, participó en la migración de tres compañías de Java a Kotlin. Java, desafortunadamente, se está desarrollando muy lentamente, y Kotlin para desarrollo móvil es un soplo de aire fresco.
El momento en que Kotlin se convierte en el principal lenguaje de desarrollo para Android es cuestión de tiempo. Ya están apareciendo desarrolladores de Android, en los que Kotlin es el primer lenguaje de desarrollo, y Java es algo desconocido. Tenemos un futuro agradable con Kotlin, al menos hasta que Google decida construir un nuevo sistema operativo, por así decirlo, Android mejorado. Pero se trata de un futuro lejano, que no es un hecho de lo que vendrá.
Denis Neklyudov : No puedo decir que Google esté promoviendo activamente Kotlin, más bien, algunos proyectos relacionados con el marco en sí se vuelven amigables para Kotlin. Esto no significa en absoluto que en 2018, un desarrollador de Java para Android sea algún tipo de renegado o representante de una minoría. Pero el hecho de que Kotlin se esté volviendo cada vez más seguro y más rápido se está convirtiendo en el idioma predeterminado para los desarrolladores, y esta es una buena noticia.
Cuando escuche sobre Flutter, un marco multiplataforma para las aplicaciones móviles de Google, Kotlin Native hace eco de inmediato, que se compila tanto para Android como para iOS. Muchos están esperando que se convierta en el lenguaje para todo: Android, iOS, Web, Embedded ... Los planes de JetBrains son napoleónicos. Observamos informes de errores, pruebas beta y disfrutamos del lenguaje agradable en el que logramos migrar nuestros proyectos con un mínimo de dolor.
Han pasado más de tres meses desde el lanzamiento de Android AJP. ¿Cómo se mostró?Alexander Smirnov : Utilizando AJP, Google planeó ayudar a los desarrolladores de Android a crear aplicaciones de alta calidad aún más rápido y sin soluciones adicionales en el zoológico. Y como beneficio adicional, facilitaron que los principiantes ingresen al desarrollo de Android. Creo que Jetpack hizo frente a la tarea.
El resultado fue un conjunto genial que resuelve las tareas de la mayoría de los desarrolladores. Pero podemos asegurarlo en unos 6-12 meses, cuando lleguemos al lanzamiento de la mayoría de las innovaciones. Hasta ahora, esto ha detenido a muchos en su camino para comenzar a usar AJP en la producción.
Denis Neklyudov : Google no hizo AJP desde cero, sino que reunió muchas cosas útiles que no son parte del marco en sí y que sus desarrolladores empaquetan en aplicaciones. Es una buena idea combinarlos todos bajo un nombre moderno y vibrante. Es bueno para los desarrolladores que ahora hay un único
recurso donde puedes encontrar una solución oficial para muchos problemas. Al menos es conveniente.
Por supuesto, no todo lo que se incluye en este conjunto está listo para su uso en aplicaciones serias, algo todavía está en las etapas de desarrollo activo y depuración. Desde el marco en sí, hay una sensación persistente de la versión beta, realmente no presionaré al paciente y discutiré el IDE. Pero estamos acostumbrados a Android.
En esta lista de bibliotecas y soluciones, todos encontrarán algo útil para ellos. Y para los principiantes, este es un recurso absolutamente obligatorio para la familiarización, para que no pisen un rastrillo conocido, sino que primero intenten formas más o menos oficiales para resolver sus problemas.
¿Cuáles son las perspectivas para el desarrollo de AJP? ¿Qué podría ser nuevo el próximo año?Alexander Smirnov : Ahora tenemos muchos desarrollos nuevos, por lo tanto, antes que nada, necesitan ser finalizados y estabilizados. Entonces esperaría el desarrollo sistemático de cada uno de los componentes y herramientas, tal vez una pequeña adición de algo nuevo. Jetpack fue un paso adelante, por lo que desde el próximo año espero mejoras sistemáticas, pero después de otro año puede ser muy interesante. Lo que definitivamente vale la pena esperar el próximo año es una integración más densa y conveniente con Android Studio.
Denis Neklyudov : AJP se expandirá con cada nueva tarea resuelta, que se puso en el dominio público. Con cada versión de Android, el marco Jetpack también se desarrollará en forma de AppCompat y Material Components. Lo que aparecerá en el futuro cercano es difícil de decir, estoy esperando que se agregue Nitrógeno, un paquete de utilidades para probar aplicaciones a gran escala.
A nivel mundial, Google está expandiendo constantemente las capacidades del navegador, ¿a qué puede conducir esto en el futuro?Denis Neklyudov : Repito constantemente que no es necesario percibir algunos de los pasos de Google como algo global y centralizado. Si el equipo de Chrome tiene suficientes recursos para desarrollar AMP, PWA y ahora también WebAssembly, esto no significa que haya una conspiración para llevar y transferir a todos a la web antes del 202 ... Al igual que el desarrollo de Flutter, no significa que todos usaremos este marco, y luego Android estará condenado a morir, porque primero ChromeOS y luego Fuchsia se harán cargo de todos los dispositivos de los usuarios. Este verano, Jake Wharton habló en Droidcon Berlin sobre cómo la línea entre la web y las aplicaciones nativas se está borrando. Se puede inferir del informe que en la situación actual es necesario soportar adecuadamente todas las plataformas por separado e intentar reutilizar el código entre ellas. Sin embargo, si cree que Internet puede ser de alta velocidad, estable y barata en todo el mundo, entonces quizás las aplicaciones web tengan la oportunidad de dominar. Pero hasta ahora apenas se cree.
Alexander Smirnov : La transición de aplicaciones nativas a aplicaciones web progresivas es el sueño de millones de desarrolladores web, gerentes de productos y una gran cantidad de otras personas. Al elegir una aplicación PWA en lugar de un dispositivo móvil, la compañía simplifica el desarrollo, uso, actualización y atracción de usuarios. PWA es una buena solución para un gran segmento de aplicaciones móviles simples, y no podremos abandonar completamente el desarrollo nativo muy pronto.
Bueno, a quién le importa escuchar las noticias del mundo del desarrollo de Android en vivo, descubrir muchas cosas más interesantes sobre los últimos planes insidiosos del Enclave de Google, chatear con expertos directamente, estamos esperando en nuestra conferencia
AppsConf 2018 .
Para aquellos que prefieren estudiar todo en casa, tenemos un canal de YouTube donde se subirán videos de AppsConf (unos meses después de la conferencia).
Y los anuncios de todos los eventos y materiales útiles, incluidas futuras conferencias, anuncios de los mejores informes, invitaciones a reuniones, informes descifrados y artículos útiles, publicamos en nuestra lista de correo .