Android Dev Summit 2018 Livestream | Day 1, theater 1

Bienvenido a Android Dev Summit 2018.
Bienvenido a Android Dev Summit Cumbre 2018. Bienvenido a Android Dev
Summit 2018. Bienvenido a Cumbre de desarrolladores de Android 2018. >> Todos, bienvenidos al escenario,
Dave Burke. [Aplausos]
Hola a todos. Y bienvenido a el androide 2018 Cumbre de desarrolladores. Este es un evento
para desarrolladores, por desarrolladores, con toneladas de
contenido detallado y la mayoría Más importante aún, acceso directo
a los ingenieros. tenemos tantos de ellos aquí esta semana y estoy bastante
seguro de que Android el desarrollo se detendrá. Tenemos
asistentes de más de 70 países, tanto en persona como
en vivo. Ahora, hablando de historia, estamos
a punto de celebrar nuestra 10º aniversario de Android y
fue hace unos 10 años que Los clientes estaban desempaquetando sus dispositivos
G1. Hay un enorme potencial Para el G1, los desarrolladores crean
más aplicaciones para Google. Androide. Funcionó
bien. Pero es lo que vino siguiente y lo que creaste en
Android que fundamentalmente Cambió la industria móvil.

Hace
10 años, el móvil Los paisajes parecían muy
diferentes. Las plataformas móviles no eran amigables.
Cada sistema operativo requerido habilidades completamente diferentes
e intransferibles por lo que Era imposible crear una aplicación móvil
a escala. En el edificio 44, un pequeño equipo de
ingenieros dedicados silenciosamente trabajando en un proyecto loco. La idea
era audaz. Para construir un nuevo Sistema operativo de código abierto que cualquier
fabricante de dispositivos podría utilizar. con un potente SDK que pone a los desarrolladores
en primer lugar. Para muchos en En ese momento, esto parecía una
idea descabellada. Que hizo Google sabe de telecomunicaciones
y cómo podría ¿Posiblemente influya en esta
industria establecida? Fue un momento intenso para el equipo
de Android. Y para añadir a la drama, mientras se acerca el lanzamiento
de la versión 1.0, Apple anunció el iPhone. Tuvimos el dispositivo
anterior y el sueño. dispositivo, que incluía una pantalla
táctil. no tuvimos elección para acelerar el cronograma. Sentimos
que teníamos una ventana para cumplir nuestra visión del teléfono
inteligente antes de su lanzamiento.

Así que comenzamos la tradición
de preparar un gran desayuno en edificio 44. Tocino, huevos,
pasteles, lo que sea. y eso Fue súper productivo. Sin reuniones,
solo codificación. Y en Paralelamente, planificación de lanzamientos.
Estos gatos no saben nada Finalización del código de
Android Studio. Tendrías la versión de Android de
la semana anterior, pero por el Por la noche, aparecería una
notificación. era como mirar El sistema operativo cobra vida ante tus
ojos. Uno de los grandes desafíos es el
problema del arranque. Y por qué ¿Compraría un usuario un teléfono sin
aplicaciones? Entonces hicimos dos cosas. Primero, el equipo central de Android escribió
versiones de aplicaciones móviles. de los servicios de escritorio de Google desde gmail hasta Maps y YouTube.
Experimentamos el marco en al mismo tiempo. Pero
para que la plataforma brille, necesitábamos aplicaciones de toda
la industria. Lanzamos un SDK de primer vistazo y anunció el desafío
para desarrolladores de Android, con $20 millones por otorgar. Los desarrolladores
respondieron y por En abril de 2008, recibimos más de 2.000
presentaciones. Y fue sorprendente, dado que no había
dispositivos físicos, solo el emulador.

Las aplicaciones eran sorprendentemente
diversas de los juegos. a redes sociales y utilidades y localización
y GPS fueron los Funciones más utilizadas, junto con la
cámara, los medios y la mensajería. Así que realmente mostró esta demanda reprimida
de que los desarrolladores sean creatividad en dispositivos móviles y funciones
de uso. Algunas de las aplicaciones ganadoras todavía
existen hoy en día, como Vida360. Allanó el camino para las aplicaciones
y las empresas.

El Lanzamiento de T-Mobile G1. Fue
el predecesor de Google Play. y tenía más de 50 aplicaciones el primer
día. Una semana después abrimos esta puerta para cargas de desarrolladores
y capacidades avanzadas como Las compras dentro de la aplicación y el apoyo
más amplio a los países aún estaban por ser construido.
Los siguientes 10 años fueron uno. de rápida evolución. Al principio,
estábamos haciendo dos grandes lanzamientos al año y nuestro director
principal de programas, en ese momento, hizo esta sugerencia improvisada de que le pusiéramos
el nombre en código después postres y esa idea se quedó y esto es
lo que vino después. Entonces, Android 1.5, Cupcake, estábamos
comiendo muchos Cupcakes en el tiempo, agregando soporte de teclado
virtual para que ya no necesitáramos el teclado físico. Agregamos
el copiar y pegar. Había diferentes densidades y tamaños
de pantalla, por lo que factores de colocación que vendrán un
par de años después.

Eso fue La idea de Diane Hackborn. Android
2 Eclair cambió la conducción para siempre con la navegación
de Google Maps. Froyo tenía acciones de voz, lo que
te permitía obtener direcciones. y tomar notas y configurar alarmas.
Ese fue el precursor al Asistente de Google de hoy. El pan
de jengibre fue el primero versión principal de Android. Con
Honeycomb, agregamos soporte para tabletas con tema hueco.
Pero ahora teníamos una problema porque los teléfonos
se enviaban con Gingerbread y Las tabletas se enviaban en Honeycomb.
Así que nosotros fusionamos ambos con Ice Cream
Sandwich e introdujimos más navegación intuitiva con el
uso de gestos y que liberan Vi la configuración rápida de llegada.
Gominola incluida mantequilla del proyecto. Y las
animaciones fluidas son algo que personalmente ubzesacerca de.
Android Kit Kat vino con Proyecto con 512 megas y DSP descargado
de Google Hot Word. Le siguió Android 5 Lollipop y fue la
madre de todos los lanzamientos. Llevó Material Design a Android,
dándole un aspecto completamente nueva apariencia y así, entre Project
Butter y el diseño, Cambió la narrativa, dándole un
hermoso y refinado.

Lollipop también presentó soporte para nuevas categorías para
wearables, automóviles y TV. Allá fue el perfil de trabajo, sobre el cual
hemos estado construyendo. Lollipop fue un lanzamiento tan épico
que francamente necesitábamos gastar nuestra energía en Android
6 Marshmallow en mejorar calidad. Hicimos una revisión de la
privacidad con la introducción de permisos de tiempo de ejecución.
Nougat trajo apoyo virtual. Oreo tenía teléfonos inteligentes de nivel
básico y llegó con una revisión masiva de la capa de interfaz de hardware para
ayudar a acelerar y reducir el costo de hacer actualizaciones.
Finalmente este año lanzamos Android Pie, que es una experiencia
basada en la IA.

Él contiene toneladas de mejoras en la interfaz
de usuario e introduce el concepto de bienestar. Creo
que es bastante increíble. para ver hasta dónde hemos llegado en una
década de teléfonos inteligentes desarrollo. Y mientras solucionamos
diferentes problemas Hoy en día, está claro que los principios
sobre los que construimos Android son Tan cierto hoy como lo era hace 10
años. Dar a los desarrolladores un potente SDK o código fuente abierto para permitir
a los fabricantes de dispositivos desde el nivel básico hasta el de gama alta y UX en constante mejora. Entonces,
¿cuáles son los siguientes 10 en tienda para Android? Bueno,
obviamente no tengo cristal. pelota, pero hay tres tendencias
que quiero destacar y que creo que son importantes. Primero, los teléfonos
inteligentes son cada vez más inteligentes. En segundo lugar, la informática multipantalla se
está volviendo omnipresente y nuestra Los teléfonos podrán ayudarnos con la
seguridad y la tecnología digital.

Bienestar. Nuestros teléfonos
inteligentes se están volviendo más inteligente. La IA permitirá
que tu teléfono te conozca mejor. Puedes ver esto en Android Pie ejecutándose
en Google Pixel. El El brillo de la pantalla aprende automáticamente
sus preferencias y en Se prevé que las próximas aplicaciones le
ahorrarán tiempo. Y la cámara es capaz de reconocer objetos en tiempo
real con Google Lens. Para los desarrolladores que quieran
aprovechar la IA, anunciamos ML Kit. Si eres nuevo o experimentado
en aprendizaje automático, tiene detección
de rostros y más. Se basa en la API de redes neuronales
de DSP y NPU. API,
mejora el rendimiento, MobileNet, para TensorFlow, se ejecuta ocho
veces más rápido usando NNAPI en el Qualcomm Snapdragon. Puede esperar
que las NPU se vuelvan más rápidas En los próximos años.

La segunda
tendencia va más allá Los telefonos. Estamos invirtiendo mucho
en una experiencia multipantalla. Esto significa una excelente experiencia
Android en televisores, wearables, automóviles y Chromebooks. Por
ejemplo, la participación del usuario en Android TV ha crecido. Este año, Android
Auto ha tenido un 250% de usuarios crecimiento y nuestros socios lanzaron
9th relojes. Justo cuando pensaba que había visto
todo en los teléfonos, estamos a punto de ver una nueva idea.
Plegables. se aprovechan de tecnología. La pantalla puede literalmente
doblarse y doblarse y usted Puede pensar en el dispositivo como un
teléfono y una tableta. Y a grandes rasgos, dos variantes. Cuando
está plegado, parece un teléfono. cabe en su bolsillo o bolso y la característica
definitoria de Este factor de forma es algo que llamamos
continuidad de pantalla.

Tú podría iniciar un vídeo en la pantalla
más pequeña y plegada, pero Luego siéntate y deseas una experiencia
más inmersiva. Puede Despliegue el dispositivo para obtener una pantalla más
grande. A medida que se desarrolla, la aplicación Se transfiere a la pantalla más grande
sin perder el ritmo. Es un concepto apasionante y esperamos
ver dispositivos alimentables. de varios fabricantes de
Android. Estamos trabajando con Samsung en un nuevo dispositivo que
planean lanzar a principios del próximo año, del que oirás hablar hoy
más tarde. Por nuestra parte, estamos mejorando
Android para aprovechar este nuevo factor de forma, con el menor
trabajo posible por parte de tú. Estamos agregando indicadores de tamaño variable
para que su aplicación pueda responder a plegar y desplegar y esperamos
ver muchos innovación en los próximos
años. La tercera tendencia es la seguridad y el bienestar.
Los teléfonos inteligentes tienen pasado de inexistente a indispensable.
En la idea misma de salir de casa sin su teléfono inteligente
literalmente envía escalofríos recorren la espalda de la gente.

Más allá de la utilidad, TENEMOS
una responsabilidad con su seguridad y bienestar. Más del 80% de las llamadas
de emergencia se originan desde teléfonos móviles. Sin embargo,
localizar estos teléfonos puede ser desafiante ya que las tecnologías fallan
en interiores o tienen un radio eso es demasiado grande.
En una emergencia grave, puede significan la diferencia entre la vida
y la muerte. lanzamos Android Servicios de localización de emergencia.
Cuando marca el 911 o su equivalente del país, su ubicación
es calculado con precisión y enviado directamente
a la emergencia proveedor.

ELS
está integrado en el 99% de Teléfonos Android, desde la
versión 4 y estamos Continuar buscando nuevas formas
de mejorar su seguridad. Ahora, tener un teléfono inteligente contigo
todo el día es fantástico, pero También quieres asegurarte de tener el control
de tu contenido digital. bienestar y sabemos que el 72% de las
personas se preocupan por cantidad de tiempo que dedican a la tecnología.
Por eso, con Android Pie este año, introdujimos
nuevas herramientas para permitir usted controla el uso con límites de aplicaciones,
reducción de escala de grises y No molestar. Como la mayoría de las
funciones, hemos agregado desarrollador ganchos para que pueda saber si No molestar
está habilitado y puede implementar un filtro de intención.
Seguimos invirtiendo en El espacio con muchas
mejoras planeadas. Bueno. Entonces, terminemos. Android,
desde el principio, fue concebida como una plataforma construida
alrededor de desarrolladores.

Vertimos un tonelada de energía para hacer crecer esto ecosistema desde cero. Y
a cambio, has sido un comunidad increíble que crea aplicaciones
y servicios increíbles que permiten y deleitan a los usuarios de
todo el mundo. simplemente podríamos No haré esto sin ti. Así que
gracias. Dicho esto, vayamos al grano. estoy
emocionado de tener la mano Le toca a Steph y al equipo hablar sobre
el trabajo resentido que hemos hecho. estado haciendo. Gracias. [Aplausos]
>> Hola a todos. Soy Steph. Estoy en el equipo de Android y Dave
tiene razón. No estás encima de eso, eres parte de lo que hacemos.
Kotlin es un gran ejemplo. Es no es un lenguaje diseñado por Google.
Tal vez no fue lo obvio. elección, pero fue la mejor, como
usted dejó claro. Nosotros Podríamos ver a los desarrolladores votando
con sus pies en la adopción y los meses previos a que anunciáramos el
soporte.

Como Kotlin, nuestro Las inversiones de los desarrolladores se
reducen a dos cosas en esencia. Número uno, tus comentarios. Y número
dos, los ingenieros de Google. usando Android y pensando, ¿cómo puedo
hacer algo que la gente pueda hacer? ¿amar? Entonces, en los últimos
años hemos estado invirtiendo profundamente en la experiencia del desarrollador
de Android. Ha sido guiado por tu retroalimentación. Vamos a hablar
de algunas cosas nuevas que tenemos que compartir. Así
que cada año hemos estado invertir. Empecemos con las ideas.
Demostramos Android Studio en E/S. Perfiladores, herramientas de
diseño móviles, mejores R C ++. Queríamos agregar las
pequeñas cosas, ya sea Integración de Maven a las comprobaciones
de Lint.

Segundas API. En 2016, Diane Hackborn
escribió una publicación famosa sobre La arquitectura de la aplicación dice que
no somos obstinados. a lo cual ella respondió la respuesta, por favor
sea obstinado. [Risas] Entonces
creamos arquitectura. componentes y los refinó en muchos
EAP y los expandió a Jetpack de Android. Vemos Jetpack como
el futuro de nuestro móvil API. Son API intuitivas, obstinadas
y fáciles de usar que Funciona en el 95% de los dispositivos. Queremos
que se integren perfectamente con las primitivas centrales de Android
para que obtengas lo mejor posible combinación de eficiencia y control
profundo. Espere vernos continuar expandiendo
Jetpack cada año. En tercer lugar estaban los idiomas. En
2017, anunciamos soporte para Kotlin. Desde entonces, agregamos soporte
ide y API y lo trasladamos a la Fundación Kotlin.

Cuarto, entrega
de aplicaciones. Entonces, A los desarrolladores siempre les ha encantado
Play Store, eso es genial cuando Quieres lanzar rápido. Nos dijiste que el tamaño
de la aplicación es demasiado grande. Anunciamos el paquete de aplicaciones y
la entrega dinámica. Ellos son Reducir las aplicaciones en todo el mundo y la mayoría
de las aplicaciones se guardan hasta y más. 30%. Finalmente,
seguridad. Android era construido pensando en la seguridad desde
el primer día, con aplicación caja de arena. Hemos ampliado nuestros
servicios de seguridad móvil.

Hoy en día, el 99% de las aplicaciones abusivas se
eliminan antes de que alguien pueda hacerlo. instalar y después de la instalación,
utilizamos Google Play para proteger y escanea más de 50 mil millones de aplicaciones
todos los días. Cada aplicación en cada dispositivo conectado. Y encontramos una aplicación
potencialmente dañina, lo desactivamos o lo eliminamos. Digamos
que estás haciendo todo bien y accidentalmente
quedas atrapado en esto net sin alguien con quien hablar. Este
es un lugar que creo que necesitamos. para hacerlo mejor. Necesitamos hacer que
sea mucho más fácil para usted llegar nosotros en estos casos. Nuestros
ingenieros estarán aquí, mañana, en la charla informal, para
hablar contigo sobre ello y Obtenga sus comentarios.
Ahora otra forma de proteger el El ecosistema está moviendo las API para
apuntar a las API actuales. Le dijiste nosotros, está bien, tiene sentido. Pero
por favor avísenos con antelación. período, por eso avisamos con casi
un año de antelación. Nosotros Pienso en ti como parte de cómo trabajamos,
ya sean ideas iniciales, beta e iteración después del lanzamiento.

Realmente
queremos ser dignos de confianza. y hemos oído hablar de cosas que te encantan,
como Architecture Component y Kotlin. A veces hemos subestimado
el tiempo que lleva para hacer las cosas bien, como la ejecución
instantánea. lo que hemos escuchado ¿Quieres que compartamos abiertamente para
que puedas ver las cosas que están? temprano, siempre y cuando lo tengamos claro.
Así como las cosas que están listas. para la producción.
Hoy voy a compartir un gama de ideas tempranas. Quiero guiarte
a través de dos grandes temas. Primero, fundamentos, uso de lenguajes
y bibliotecas para trabajar. más inteligente. En segundo lugar, la productividad.
Usando ides móviles, consola y distribución para desarrollarse más fácilmente,
tener aplicaciones de mayor calidad y aumentar la adopción.
vamos a empezar con Fundaciones y Kotlin. En todo
momento, quería que escucharas de algunas de las personas que han
sido fundamentales en estos proyectos.

Entonces, vamos a empezar
con alguien que fue clave en la decisión de Kotlin, es un gran
contribuyente a Android, ambos mientras estaba en la
comunidad, ahora en Google equipo. Es un privilegio dejarle
la palabra a Jake Wharton. [Aplausos] Hola
a todos. Así que soy Jake. Soy parte del equipo que trabaja en
Kotlin para Android y ha sido 18 meses desde que Steph subió al
escenario del Google I/O anunciando Kotlin sería compatible como un nuevo
lenguaje de primera clase. Algo que nunca se había hecho
en la historia de Android. Según los comentarios positivos de los
desarrolladores, está claro que esto fue la elección correcta. Según
GitHub, Kotlin es el número El lenguaje de los trabajadores de más rápido crecimiento
en términos de contribuyentes. Stack Overflow lo coloca
en el puesto número dos. En Android, el 46% de los desarrolladores
proAndroid utilizan Kotlin para construir sus aplicaciones. Esto es según una encuesta. En
octubre teníamos 118.000 Proyectos activos de siete días usando
Kotlin en Android Studio. Este se basa en aquellos que optan por participar.
Aumento de 10 X de los números el año pasado.

Ahora,
cuando el soporte de Kotlin era anunciado, había un montón de aplicaciones
que se estaban usando en Play almacenar. Incluye WeChat, Amazon Kindle y Twitter. Se trasladó
a la Fundación Kotlin y Tenemos la suerte de asociarnos con
JetBrains. La semana pasada lanzaron la versión
más nueva de Kotlin. 1.3 con nuevas funciones de lenguaje, API,
corrección de errores y rendimiento mejoras. Por ejemplo, las clases en línea,
que en la mayoría de los casos casos, en realidad no asigne como lo
haría una clase normal a menos que están en caja. Para los dispositivos restringidos
a los que nos dirigimos, evitar asignación sin dejar de restringir
la seguridad de tipos es un gran 1 La biblioteca Kotlin incluye un
conjunto de números, como UByte y ULong. Y además del código
Kotlin dirigido a Android o la JVM, puede apuntar a JavaScript
o código nativo.

Este desbloquea la posibilidad de usar
más en plataformas. El soporte tan esperado está en 1.3, que
es una versión más ligera de enhebrado. Combina cómo haces las
operaciones. Cosas que son esenciales para cada
aplicación de Android. Y como soy Seguro que sí, estamos deseando
utilizar estos nuevos Funciones de Kotlin en las API
específicas de Kotlin. El La mayoría ha pasado por las extensiones
de Kotlin a través de Jetpack. Anunciamos
el Kotlin extensiones se estaban expandiendo a KTX. Y todo
esto ya está disponible en lanzamientos estables. Sin embargo,
desde entonces, a medida que nuevas API se agregan a bibliotecas existentes
o nuevas, el KTX Se están construyendo extensiones
junto con navegación, paginación, Los sectores tienen extensiones que se
construyen con ellos.

Estamos empezando a ir más allá,
el ciclo de vida te permitirá ejecutarlo y tener cancelaciones.
Administrador de trabajo con un objeto de trabajo basado
en Coroutine. Proporcionan más operatividad cercana.
Si quieres empezar, digamos, Coroutines en Android,
hay un nuevo codelab que cubre trabajo, pruebas de Coroutines. Dado
que Kotlin no es un lenguaje Para crear aplicaciones de Android, las
plataformas en la nube de Google lo tienen. Y finalmente, hoy están disponibles nuevos
cursos de udacity. Ellos usan Tanto Jetpack como bibliotecas
populares de terceros. Para hablar más sobre Jetpack en su conjunto,
me gustaría entregárselo a Chico romano.
[Aplausos] >> Hola, trabajo en el equipo de framework
de Android. Unos pocos meses Hace poco anunciamos Jetpack. Se
basa en la base de que nosotros Presentado con biblioteca de soporte. También
agregamos nuevas herramientas y bibliotecas a la mezcla. se trata
de menos código y más dispositivos. Todas las
bibliotecas de Jetpack están al revés compatible. Primero comenzamos a ejecutar
programas de acceso temprano hace unos dos años y luego el
primero fue hace 18 meses en Google I/O 2017.

Fuera de entre las 1.000 aplicaciones principales, más
la utilizan. Jetpack utiliza New York Times,
EverNote, Pandora, Twitter y mucho mas. Aplicaciones creadas en todo
el mundo en India, Alemania, Francia, Corea, Israel, China,
EE. UU. y más. Además, en I/O, tenemos nuevas bibliotecas
para paginación, navegación, WorkManager y Slices.
Estos están a principios caras del desarrollo, se están utilizando
en 38.000 aplicaciones en todo el mundo. Sabemos
que muchos de ustedes tienen expresaron el deseo de simplemente dar
retroalimentación.

Lo movimos todo al público. Puede ver correcciones
de errores y funciones en tiempo real. Todo lo que necesitas es Android Studio y un
SDK público. nosotros también queremos para utilizar AOSP. Nuestra esperanza de
un acceso más temprano nos ayudará refinar y enviar bibliotecas aún
mejores. Así que únete a nosotros. Con Jetpack, presentamos el componente
de arquitectura bibliotecas, navegación
y WorkManager. Hay un forma simplificada de tener los
principios en la aplicación utilizando una sola actividad. Tienes
animaciones consistentes y transiciones animadas más fáciles.
WorkManager facilita realizar tareas en segundo plano.
No es necesario si debería utilizar Job Scheduler,
JobDispatcher o alarmmanager. Si tiene algún comentario sobre esas
API, los equipos de Android están aquí hoy y mañana, así que
ahora es el momento de darnos eso comentario.
Presentamos Android Slices, un Nueva forma de atraer usuarios a sus
aplicaciones. es un mini retazo. Puede ayudar a los usuarios a reservar
un vuelo, solicitar un viaje, etc. Queremos tomarnos el tiempo para hacer las
cosas bien. Despues de trabajar Con varios de ustedes en las API,
nos mudaremos al EAP público en el final del mes.

Realizaremos experimentos
con la superficie de Slices. en los resultados de Google.
Nuestro equipo ha estado trabajando duro. aportando numerosas mejoras a las
bibliotecas. En 2.1, tienes mayor control sobre el uso. 2.1 es nuestro
mayor lanzamiento desde 1.0. Disponemos de tablas de búsqueda
e integración. 3.2 trae más rápido multimódulo. Una
cosa que nos dijiste funcionó bastante bien eran herramientas
profundamente integradas y bibliotecas. Un nuevo gran ejemplo
es la navegación. Puede entiéndalo fácilmente y constrúyalo
en su aplicación. Vayamos directamente a una demostración.
Aquí ya estaba parcialmente hecho. Puedes ver el flujo de navegación.
Si ejecuto la demostración en el emulador y esperamos a que Gradle
haga su trabajo, puedo Haga clic en las tablas de clasificación
y vea diferentes perfiles. si hago clic en el perfil no pasa nada. Puedo
volver al editor, agregar una nueva pantalla, seleccione el
fragmento a los perfiles de usuario y luego el enlace: la pantalla
de clasificación para el usuario. perfil. También necesito agregar un argumento
para el usuario seleccionado. Y es una cuerda. Y simplemente vuelva a
ejecutar la aplicación. Espera a Gradle.

¿Quieres charlar conmigo después de esto?
[Risa] Si hago clic en el perfil, ahora
puedo ver el perfil. Puede Mira, no hay animaciones ni transiciones.
Entonces si vuelvo y selecciono esta navegación sin
flujo, puedo elegir cuál animaciones que quiero. Voy a elegir
las animaciones de introducción y las animaciones de salida. Y ahora, si vuelvo
a ejecutar la aplicación, una última tiempo, regresa a las tablas de clasificación
y ahora podrás ver el transición. Así
que si quieres jugar con… [Aplausos] Entonces,
si quieres jugar con animación, todo lo que tienes que hacer
es descargar Android Studio desde beta hoy. A medida
que ampliamos el Jetpack bibliotecas, nos centramos en sus comentarios.
Así que por favor déjanos saber.

Queremos saber sobre animaciones,
UI, estamos aquí. hoy. Estamos aquí mañana. Con
eso me gustaría dar la vuelta Déjalo en manos de Karen, quien te informará
sobre nuestros planes. Gracias.
[Aplausos] >> Hola. Soy karen. Estoy en el equipo
que construye Android Studio y Android Jetpack. Para construir
sobre eso, voy a hablar de productividad. Para
3.2, nos preguntamos, ¿qué ¿Qué podemos hacer para tener un impacto significativo
en la productividad y dónde? ¿Pasas la mayor parte de tu tiempo?
Escuchamos su construcción.

Velocidad. Algo que haces todos los
días. Algo que haces cada día, varias veces al día y cada
vez que estés esperando esa construcción para terminar, sabemos
que es un minuto perdido. Encontramos dos cosas son ciertas, la primera que
encontramos es que construir Las velocidades en realidad se están volviendo
más lentas con el tiempo. El segundo Lo que encontramos es que las nuevas
versiones de Studio son en realidad mejorando los tiempos de construcción.

Vimos que las
velocidades de construcción aumentaron en un 42%. Algo está pasando y tuvimos que mirar
más profundamente. Las bases de código son cada vez más grandes y se
están agregando incorporaciones personalizadas Los tiempos están negando el beneficio de las
construcciones incrementales. Si usted tener muchos módulos, la gestión de la investigación
puede agregar tiempo, ya que Bueno. Está superando nuestras mejoras
de construcción. Somos comprometidos a hacer que la construcción
sea más rápida. Una gran parte del tiempo, en compilación aquí, esta semana,
puedes escuchar y aprender más sobre lo que estamos haciendo.

Queremos
hacer esto bien y necesitamos tu ayuda para hacerlo. Nos
estamos dando metas y trabajando en herramientas de atribución
para comprender mejor qué es afectando la construcción de tus
proyectos y estamos haciendo Gradle más rápido.
Sabemos que la velocidad es mejor. Se trata de probar cosas, iterar
y fallar rápido y haciéndolo de nuevo. Con la ejecución instantánea,
queremos aplicar rápidamente cambios. Parte de eso tiene que ver con los tiempos
de implementación. sabemos que ellos juega un papel importante y hemos enviado
una actualización en Android Pie donde estamos viendo una gran
diferencia en el mundo real y proyectos de muestra entre Pie y Oreo.
Si estás usando USB, nosotros He visto una velocidad cercana a la del emulador.
Por favor háganos saber si le interesa dar comentarios
tempranos.

Eso nos lleva a los emuladores.
porque queremos hacer velocidad de iteración más rápida, estamos
invirtiendo en emuladores para cada SO. Le mostramos una instantánea, arrancamos
y cambiamos en menos de dos segundos. La productividad
también se trata de haciendo los problemas difíciles más fáciles.
Hemos oído que es difícil saber cómo Tu aplicación está afectando la duración
de la batería.

Puedes visualizar el uso de la batería e inspeccionar eventos
en segundo plano. La nueva beta para Android Studio
3.3 ya está disponible y fue Recién lanzado hace unos momentos.
Sabemos que para que pueda ser delicioso, no sólo tiene que ser
estable, sino que tiene que ser Estable como una roca debido a la
cantidad de horas que pasas. allá. El enfoque principal para nuestros
próximos lanzamientos será calidad, al que llamamos Proyecto
Mármol. Usuario reparador impactar errores e invertir nuestra infraestructura
y herramientas. Nosotros Sabemos que a veces hemos pasado por alto pérdidas
de memoria antes de haber enviado, por lo que estamos creando herramientas
para ayudar a proteger esas fugas incluso antes de que sucedan.
Dave mencionó cómo millones de Las aplicaciones de Android se ejecutan en
Chromebooks, las llevaremos a Chrome OS más adelante el año que viene.
Ahora me gustaría invitar a Matt. Henderson compartirá más sobre el tamaño de
la aplicación y lo que estamos haciendo con el paquete de aplicaciones de Android.
[Aplausos] Entonces trabajo en herramientas de desarrollo,
como la consola Play.

Aplicaciones han crecido dramáticamente en tamaño. El
promedio ha aumentado cinco veces desde 2012. Pero un tamaño mayor
conlleva un costo. Reduce el tasa de conversión de instalación y aumenta
la tasa de desinstalación. Tú nos dijo que usar múltiples APK era una forma dolorosa
de reducir la cantidad de aplicaciones tamaño. Por eso, Android App Bundle lo
hace mucho más sencillo. Usando el App Bundle, reducimos el tamaño
generando un APK para el idiomas, la densidad de la pantalla,
la arquitectura de la CPU que cada necesidades del usuario. Y está funcionando. Si
bien las reducciones de tamaño varían, en En promedio, las aplicaciones están experimentando una
reducción de tamaño del 35% en comparación con un APK universal. Ahora,
con el reciente establo lanzamiento de Android Studio 3.2,
App Bundles y producción despegado.

Han subido diez veces.
Miles de desarrolladores han adoptado App Bundle y el número
total en producción miles de millones de instalaciones. Y
las aplicaciones de Google son cambiar también. YouTube, Google
Maps, fotos y Google News son todo en producción. Fotos, por ejemplo,
ahora es un 40% más pequeño. Estamos muy entusiasmados con el potencial
del App Bundle. Nosotros firmar APK para su entrega al usuario
final. Esto es muy seguro. Protegemos su clave en la misma
memoria que, en la misma En el almacenamiento protegemos las claves
propias de Google. Nos permite procesar el App Bundle para generar los APK
optimizados y esto permite beneficiarse de optimizaciones
adicionales en el futuro. A partir de ahora, me complace
anunciar que el App Bundle ahora admite bibliotecas nativas sin
comprimir. Esto utiliza un Característica existente de la plataforma
Android que fue poco utilizada porque en el pasado habrías tenido que
utilizar dispositivos.

Nosotros no es necesario ningún trabajo de desarrollador
adicional. El paquete de aplicaciones ahora hace aplicaciones usando bibliotecas nativas un 8% más
pequeñas para descargar. Al agregar funciones dinámicas, puede agregar
cualquier funcionalidad de la aplicación Bajo demanda. Por ejemplo, no es necesario
enviar el mismo mensaje grande característica para el 100% de sus usuarios
si solo va a ser utilizada por 10% de ellos. Y no es necesario mantener
grandes funciones que son solo usado una vez. Se pueden
instalar funciones dinámicas y se desinstala dinámicamente cuando su
aplicación lo solicita. O puede optar por posponer la instalación
para más adelante, cuando la aplicación pasa a segundo plano. Facebook
fue uno de nuestros lanzamientos. socios. Y están utilizando funciones
dinámicas en producción. en la aplicación principal de Facebook
y en Facebook Lite.

Por ejemplo, El escaneo de tarjetas es una característica
que sólo un pequeño porcentaje de La base de usuarios de Facebook está utilizando, por
lo que se traslada a una función dinámica. evita que ocupe casi dos megas en
el dispositivo de cada usuario Dentro de un App Bundle, las aplicaciones instaladas
e instantáneas pueden tener la El mismo módulo base y los mismos módulos
de funciones dinámicas. Separarlo es una excelente manera de hacer que su
base sea lo suficientemente pequeña como para Ofrecer una experiencia de aplicación instantánea.
Ahora puedes empezar a construir y probando funciones dinámicas usando
Android Studio 3.2 hoy y únete a nuestra beta Ahora, me gustaría invitar
Estás dispuesto a hablar más.
>> Gracias, Matt.

Hemos escuchado sus comentarios, que le gustaría tener más
control para garantizar que los usuarios está ejecutando la última y mejor
versión de su aplicación. Existe la API de actualización de Google
Play. Hay una inmediata flujo de actualización donde tienen una
experiencia de pantalla completa, pueden acepte la actualización e instálela
inmediatamente. muchos de Ha implementado una variación similar
en su aplicación. esta nueva La implementación es menos
propensa a errores y muy fácil de integrar. Lo siguiente
son las actualizaciones flexibles. Las actualizaciones flexibles son realmente
interesantes porque permiten experiencia de actualización para
integrarse en su aplicación. como un Por ejemplo, Google Chrome empuja a los
usuarios. Si el usuario acepta que actualización, la descarga ocurre en
segundo plano y el usuario puede continúe usando su aplicación. Cuando
se completa la descarga, es Depende de usted, como desarrollador,
decidir si desea la actualización.

Para aplicar inmediatamente o si desea
que se aplique la siguiente momento en que la aplicación está
en segundo plano. Google Chrome es Probamos esto ahora y estamos emocionados
de probar el acceso. muy pronto. Próximas
aplicaciones instantáneas. Instantáneos Las aplicaciones están disponibles en 1.300 millones
de dispositivos. Hemos sido duros en trabajar para simplificar la
experiencia de desarrollo para aplicaciones instantáneas. A principios
de este año, aumentamos el tamaño. límite para aplicaciones instantáneas
de 4 megabytes a 10 megabytes. Muchos los desarrolladores ya pueden superar
ese límite de tamaño sin trabajo adicional.
Además, la dinámica Las características son compatibles instantáneamente.
También hemos hecho posible Cargue y pruebe aplicaciones de intención de
cualquier tamaño.

Tu puedesexperimentar itere sobre el usuario al mismo tiempo
que optimiza el tamaño. Y también hemos hecho URL web. Puede
redirigir a sus usuarios a Tu experiencia instantánea
automáticamente. Por último, me complace anunciar
que hoy, en Android Studio 3.3 beta, ahora puedes tener un
único Android Studio que alberga sus aplicaciones instantáneas
e instaladas. Este ayuda dramáticamente. Además,
el paquete de aplicaciones puede cargarse una vez en la consola de desarrollador
de Play. Estamos muy entusiasmados con eso.
Y con eso, volvamos a Estefa.
[Aplausos] >> El código abierto de Android significa
que es increíble ver lo que estás construyendo encima de la plataforma.
Con más de 2 mil millones dispositivos, tres cuartas partes de [no audio]audio].
Entonces, eso es todo por el discurso de apertura.
Gracias. espero que disfrutes Cumbre de desarrolladores de Android.
[Aplausos] >> Ahora todos, por favor denle una cálida
bienvenida a Dan.

Galpin. [Aplausos] [Pérdida
de Primero quería felicitar
a todos en el transmisión en vivo, espero que todos puedan
estar aquí en persona. Tú también puedes Siga la acción en línea en
Twitter. Y ahora necesito mi próxima diapositiva.
[Risa] De lo contrario, tendré que improvisar.
Puedo hacer esto. Entonces, Hoy en día están sucediendo muchas
cosas aquí. Una de las cosas Quiero que todos ustedes, en el
sitio, puedan aprovechar es el hecho de que tenemos una enorme cantidad
de expertos en Android Disponible aquí en horario de oficina.
Estará en los vestíbulos, al lado de estas habitaciones. Ya sea que
estés aquí o sintonizando remotamente, consulta la aplicación Android
Dev Summit para que puedas ver en todos los eventos y construye tu
propio horario.

Ahora notarás que tenemos
diferentes secciones El dia. Esto es un poco un experimento
y los 20 minutos Las sesiones se realizarán
consecutivas con la intención. que mires las dos sesiones porque
no hay tiempo para salir el cuarto. Además, tenemos charlas
relámpago que se están llevando a cabo. ser una ronda de velocidad en la que nos
movemos lo más rápido posible para aplasta la mayor cantidad de contenido a
40 minutos. Vamos a tener preguntas y respuestas con
los presentadores, fuera de estos. Asegúrate de consultar el horario
publicado en la pared. Nosotros Hay tantas personas que querían hablar
contigo que en realidad no podemos.

Colóquelos aquí de una vez. Quieres
asegurarte de que estás aquí para que el ingeniero que trabajó
en los errores que usted podría tener Los interesados ​​realmente estarán
allí para defenderse. LAEF [Risas] El horario
de oficina funcionará todo día, por lo que puedes faltar
a clases si quieres ir a horas de oficina. Y decide,
vamos a ejecutar todos los estos. Más
tarde tendremos una fiesta. Prepárate para una noche épica
de música y estar ahí y Hablando con personas.
[Risa] Y eso es. Realmente
aprecio todo. Tenemos un pequeño descanso ahora y así disfrutar
del resto de Android Dev Summit [Aplausos] Todos,
nuestra próxima sesión será comienza en 10 minutos. Bienvenidos todos. Bienvenido
de nuevo. Nuestro programa va a estará en marcha en tres minutos.
Te pedimos que silencie tu móvil dispositivos y gracias por tomar
asiento. Nuestro programa comenzará en tres
minutos. minutos. minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. minutos.
minutos. No
he hecho nada todavía.

Gracias por venir. Mi nombre es José
Alcérreca. Mi nombre es Yigit Boyar. Soy ingeniero.
Hoy vamos a hablar de LiveData.
LiveData es uno de el primer componente de arquitectura
que lanzamos el año pasado y en esta charla vamos a
explicar qué es. Iban para hablar sobre algunas de las transformaciones
que puedes hacer, cómo vendremos LiveDatas y hablaremos
de patrones y antipatrones quizás quieras evitarlo.
Vamos a explicar todos estos características, pero primero
vamos a empezar con observable, ¿qué es un observable?
Entonces, en nuestro mundo orientado a objetos, probablemente
la forma más fácil de comunicarse un componente y otro tiene
una referencia de uno objeto de otro y llamarlo directamente.
Sin embargo, en Android esto puede tener
problemas. Los componentes tienen diferentes ciclos similares y diferentes
esperanzas de vida. Esto es el diagrama de alcance de ViewModel.

Algo
simple como un dispositivo La rotación puede recrear la actividad.
Entonces, probablemente sepas que tener una referencia de actividad
en este ViewModel sería ser una mala idea porque provoca pérdidas
de memoria e incluso fallos sin excepciones. Entonces,
en lugar de tener un referencia AKactividad, que vamos
a tener en la actividad. ¿Cómo enviamos datos? Vamos
a dejar que la actividad observe el modelo de vista. Y
para eso vamos a usar Observables LiveData.

Veamos
cómo se ve esto con un un poco de código. En el ViewModel,
exponemos nuestro Datos en tiempo real. Vas a ver unos pequeños
ejemplos de cómo exponer. LiveData de nuestro ViewModel. En nuestra
actividad, hacemos lo real. suscripción y lo hacemos llamando
al método observe. El El primer parámetro es algo llamado
likecycle. Yigit es voy a hablar de esto. La segunda
parte es una observable.

Así se llama
siempre que lo observable, Se cambia el valor de LiveData. Entonces,
José mencionó que quieres hacer referencia a un objeto en un
ámbito más amplio, como un ViewModel de un objeto en un alcance más pequeño,
como una actividad. pero de Por supuesto, cuando observas
algo, tiene que mantener una referencia a usted para poder llamarlo
para que haya una referencia. Pero ¿por qué esto no
es un problema con LiveData? Es un componente. Para poder
observar LiveData, debe proporciona el ciclo de vida y
mantiene su suscripción durante gratis. Entonces, si el ciclo de vida de
su observador no está en buen estado, no le devolverá la llamada.
O cuando tu actividad o fragmento se destruye, lo
devolverá por usted.

Si regresa al gráfico anterior,
su observador de LiveData solo se llamará cuando se inicie
y antes de que comience. No necesitas preocuparte por fragmento. Probablemente
la mayoría, como, Propiedad distintiva de LiveData es el
titular de los datos. Que no es — Seguimos diciendo esto, no es una corriente,
es un poseedor de valor. Si vuelves a nuestros gráficos anteriores,
a la derecha, tenemos LiveData en ViewModel y a la izquierda
está la actividad o fragmento observando esto. Una vez que configura
LiveData, se pasa a la actividad. Cuando cambia, la
actividad recibe una nueva valor actualizado.
La diferencia ocurre cuando cambiar el valor cuando observable
no está en un estado activo estado, no tiene idea de que es la
actividad. mientras tu la actividad aún está en segundo
plano, envías un nuevo valor y tu actividad todavía no ve
esto. Ahora, la propiedad del titular de los
datos entra ahora cuando su actividad vuelve, lo que el usuario está
viendo en primer plano.

Recibe el último valor de ViewModel.
Sólo le importa sosteniendo un valor único y es el
último valor. Esto funciona perfecto para la interfaz de usuario porque
solo quieres mostrar lo que es correcto ahora. Pero, si estás intentando procesar
esto, esto no es lo que estas buscando. Del
mismo modo, si cambia el valor después de que se destruye
la actividad, no pasa nada. Bueno. Hablemos de LiveData.
las bibliotecas proporciona mapa. Ya dijimos que
LiveData es genial para comunicar vista y un modelo de
vista. ¿Qué pasa si tenemos un tercer componente, ¿tal vez un
depósito? ¿Cómo hacemos esto? del modelo de vista? No tenemos
un ciclo de vida allí.

Y si ¿Está observando fuentes de datos,
en este caso? Bueno, Yigit dijo Para mí, si necesita un ciclo de vida
en su ViewModel, probablemente Necesita una transformación, pero
eso en realidad está mal. [Risas] Lo siento,
Yigit. Lo que digo es que definitivamente necesitas una
transformación. Ni siquiera uses R ciclo vital. Entonces,
¿cómo hacemos un puente? entre la vista y ¿este? Usamos un mapa. A transformación estática
uno a uno. Usamos LiveData, resultado de ViewModel.
Es el resultado de una mapa de transformación. El primer
parámetro es la fuente, el Fuente LiveData y el segundo parámetro
es la transformación. función. Está convirtiendo de los datos
del modelo a la interfaz de usuario.

Modelo. Así quedaría
la firma en Kotlin. Tiene fuente, que es un
LiveData de X y devuelve un LiveData y. Entonces, es una violación
de LiveDatas y en el medio, tenemos una función de transformación
que se transforma desde X a Y. No sabe nada sobre
LiveData. Entonces, cuando estableces la
transformación, la clave, aquí, es que el ciclo de vida se transfiere
a usted. Digamos que ejecutas un transformación de un par de
LiveData y te aferras a él. Cuando alguien, ese ciclo de
vida se propaga a LiveData elementos sin que usted haga
nada y es completamente gestionado por nosotros, por lo que
es completamente seguro. Tenemos switchMaps. Tienes una aplicación,
yo tienes un usuario. medida que mantiene el registro de ID de
usuario. Cuando lo agarras, necesitas hablar con su usuario para obtener el objeto
de usuario y eso probablemente va a la base de datos y al servidor.
Convierte LiveData, también.

Porque el objeto de usuario
puede cambiar, ¿verdad? Que podría devolverte el caché. Entonces estás
en esta situación en la que tienes LiveData y LiveData para el usuario
y necesita encadenarlos cosas. Entonces, las redes, si estás encadenando
desde una identificación a un usuario, ¿Cómo cambiamos de una identificación, eso es switchMap.
Proporcionamos LiveData y nuestro La función, esta vez, devuelve LiveData.
Entonces, looks característicos como esto. Tienes una fuente.
Al final tienes un LiveData y proporcionas una función que
convierte la X en LiveData.

Lo que técnicamente hace esto es que cada vez
que cambia la identificación del usuario, llama a tu función. Le das un
nuevo LiveData, se necesita proviene de datos anteriores
y ese es el nuevo. Como cambia de vía o como
centralita. Está completamente administrado por usted.
Obtienes todos los beneficios de utilizando LiveData. Ahora,
solo proporcionamos mapas y cambiarMapa. No tienes un millón
de transformaciones. Este es muy limitante y a veces es posible
que desees escribir tu propia y no queremos proporcionar muchos.
Si quieres escribir tu propio, es muy fácil. Si te muestro el
pequeño código que tenemos para la implementación del mapeo,
devuelve LiveData y usted Dale una función, ¿verdad? Todo lo
que hace es crear esto. MediatorLiveData y es una fuente
para MediatorLiveData. En cierto modo nos dice que el
valor de este MediatorLiveData se deriva de este otro LiveData.
Así que siempre que eso otros cambios de LiveData, llame a mi devolución
de llamada y en la devolución de llamada, aplicamos la función al valor
y establecemos el valor en el MediadorLiveData.

Esto es muy sencillo
de escribir. Y ahí está No hay ciclo de vida aquí, pero todo este
código es un ciclo de vida. Entonces, si es tan fácil, creemos
uno nuevo. digamos que nosotros Quieres hacer un montón de cadenas
y quieres tener el total. LiveData y otro LiveData y tienes
un LiveData que tiene el número total de caracteres en
esos elementos y se actualiza si alguno de esos valores se actualiza. Entonces,
llamamos a la línea total. Nosotros recibimos una lista de LiveDatas y le devolvemos
los LiveData. lo que nosotros Aquí tenemos una función.
Es muy simple. Va a través de todos los LiveDatas y suma
su longitud. Necesitamos que cuenta los nulos aquí porque LiveData
tiene nulos. Mirarlo todo los valores de LiveData y la longitud
total. Una vez que hicimos eso, Agregamos cada LiveData dado como
fuente a nuestro mediador.

Dice el valor de este mediador depende
de este otro LiveData. Cada vez que cambia, vuelve a llamar
a nuestra función, que calcula el nuevo valor para MediatorLiveData.
Y esto son como cuatro líneas de código
y tienes una transformación de sus
LiveDatas. Ahora bien, hay algunos errores comunes
que puedes cometer mientras usando LiveData y queremos
tocar estas cosas. Uno Lo que vemos mucho es que, digamos,
usas JSON, usar la transformación para eso no
es una buena idea porque es una poseedor de valor. La cadena larga
que obtienes de tu servidor es va a quedar en la memoria. Se va
a aferrar a eso para que tú Probablemente no quiera usar
LiveData para algo como eso. Bueno.
El segundo elemento es sobre cómo compartir instancias
de LiveData. En un momento, estaba intentando hacer una aplicación con
LiveDatas y tenía un repositorio eso estaba ahí. Dije, está bien,
puedo guardar algunos LiveData y compartir un único LiveData. Soy un
repositorio, se necesitan datos. Se comparte la fuente y los LiveData que
devolvemos en el elemento de carga.

Por todos los que llaman cargar elemento.
Ahora, esto está bien, funciona.
Pero esto es muy interesante. caso. Este antipatrón se trata
de que pienses en cuál Los servidores estarán activos.
Existe este caso, en Android, donde dos actividades van a estar
activas al mismo tiempo. Imagine que la actividad 1 observa el elemento
número 1 y la actividad número dos. observa el número dos. Cuando
carguemos la actividad 2, va a cargar datos para el elemento 2. La actividad
uno también recibirá esos datos. Debido a que está en el
medio de la animación, estás Voy a ver un destello, un fallo.
Creaste un campo que es un instancia de LiveData, probablemente
lo estés haciendo mal.

La solución es crear un
LiveData cada vez. Es muy ligero. El tercer
punto es sobre dónde y cuando crear tus transformaciones
y esto es todo sobre el cableado. Es similar a
cuando creas un circuito. Tú Coloque sus componentes y
conecte todo y para uno conjunto de entradas, tendrá un
conjunto conocido de salidas. Pero no se desconecta un cable cuando
está en funcionamiento y se conecta en algún otro lugar. Esto es exactamente
lo que está haciendo este ViewModel. Muchas cosas horribles suceden
en este ViewModel, por el camino.
[Risa] Para empezar: deberías
tener un, no lo hagas.

Esto, en esta diapositiva.
[Risa] Alguien copió, pegó y luego nos
culpó. [Risas] Está
exponiendo datos de elementos, que es un valor. Y además, está exponiendo
un LiveData mutable. Casi nunca deberías hacer esto.
Siempre debes exponer algo que es inmutable para que sus
observadores no puedan cambiarlo. Entonces, después de la suscripción, llamamos
a cargar datos de nuestra actividad para establecemos el ID de lo que queremos
cargar y reasignamos el elemento datos a algo. Algo sucedió,
por lo que el observador no vas a saber… En
realidad, incluso si estás devolver LiveData y su Observe que el observador se suscribe,
están haciendo el nuevo. Entonces, la solución a esto
requiere un poco de planificación. Tenemos
dos LiveData. Uno es mutable y es privado para este ViewModel.
Y el otro es el que se expone desde ViewModel.
el es mapa de fuentes de transformación.

Es
ese LiveData mutable así que Cada vez que el ID del artículo cambia,
la transformación se realizará. ser llamado con la identificación apropiada.
Una vez realizada la suscripción a los
datos de este artículo, llamamos cargar datos, le pasamos la cadena, puede
que provenga de la intención y cuando establecemos el valor, activa
una actualización y Todo funcionará como
esperabas. Bueno. Por eso nos gusta pensar que
LiveData es increíble y es Resuelve todos los problemas, pero no
es así. Vemos gente intentando utilizarlo en otras áreas. Quiero
dejarlo claro, si estás escribir una solicitud para Operadores, usted aceptó totalmente
esto, use RxJava. Si tiene cosas que no están relacionadas con
el ciclo de vida o la interfaz de usuario, están intentando sincronizarlo
con el back-end, no hay razón para usar LiveData
para algo así.

Usar una llamar de vuelta.
Otro caso de uso es tener estos operaciones, tiene datos y los convierte
y vuelve a iniciar sesión y devolverlo. Para esas cosas, si
estás usando Kotlin, es una zona nueva y apasionante. Podrías
usar RxJava, pero no uses Datos en tiempo real. LiveData funciona
muy bien como última capa para su Interfaz de usuario. Está perfectamente
bien. Si intentas escalarlo, es solo no va a trabajar. Entonces,
muchas cosas que mencionamos en esta charla… en realidad José tiene
más. Puedes ir a leerlos. Consulte nuestros ejemplos en GitHub.
Tenemos usos simples de LiveData, además de complicado con el uso
de Room.

Tiene varios datos fuentes, transformaciones y puedes
mirar el código. si tiene errores, puedes culpar a este tipo. Él
lo escribió. Sí. Muchas gracias por venir. Espero
que esto haya sido útil y estaremos allí… después de las conversaciones.
Gracias. Gracias.
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
Bueno. Empezaremos. Lo siento. Bueno. Este chico es nuevo, ¿quién eres
tú? [Risa] Soy Daniel Santiago. Trabajo principalmente
en Room. Bueno. Entonces, hoy vamos a
hablar de Room. Pero antes nosotros… No creo que mi clicker esté
funcionando. No. Trabajando en ello, muchachos.
Bueno. Lo siento. Está bien. Sí, empezó a funcionar. Ahora
estoy intentando volver. Bueno. Ahora sí. Todo bien. Entonces,
¿por qué quieres habitación o no? ¿Quieres escribir Habitación? Le pedimos
a la gente que escribiera aplicaciones listas para usar sin conexión [sin audioaudio]. Es
prácticamente imposible. Entonces por esta razón, necesita una base
de datos. Tenemos esculite. Es muy rápido y cuando necesitas
optimizarlo para tu uso. caso, es muy fácil hacerlo.

Es una
consulta realmente poderosa. idioma. Puedes expresar muchas
cosas y hacer es conciso. Y
SQLite escala muy bien. Para una aplicación, probablemente
no tendrá muchos datos, pero Puede tener varios gigabytes.
Para tu escalables, SQLite sería perfecto.
Necesita escribir fuera del texto
estándar para convertir entre tu Java y tu SQLite. No hay seguridad
en el tiempo de compilación Entonces, si estás creando una consulta
y olvidas un caso "si", obtendrás un bloqueo en tiempo de ejecución.
No puedes observar lo que ha cambiado.
Queremos que la gente escriba aplicaciones reactivas
o UI y, si no puede observar, es difícil.

Tienes que construirlo tú
mismo. Entonces, lo construimos para tú. Entonces, hace unos dos años,
enviamos Room, presentamos Seguridad en el tiempo de compilación y una sólida integración
de identificación. Como puedas aviso con Room, con navegaciones,
esto es una gran cosa para nosotros. Queremos desarrollar
bibliotecas, junto con Estudio Android. En
la E/S de este año, tuvimos SQLite y soporte para paginación para que pueda
tener conjuntos de datos, consultas y registrarlos.
El lanzamiento es una conversión de Soporte de Android para AndroidX.

Lo mantuvimos
igual que 1.1 para que puedas puede tener una migración fácil.
2.1, vamos a hablar de hoy. Esto es 2.0. Tenemos búsqueda
de texto completo, ruedas, AutoValue y más cosas. Una de
las novedades más interesantes Las características que agregamos en 2.1 son
la búsqueda de texto completo. Es una manera de indexar documentos de texto y hacerlos
buscables. tomemos un mira un ejemplo. Imaginemos que tenemos
una aplicación de música y queremos buscando función. Quieres escribir
algo, quieres ser capaz de encontrar canciones dentro de esa aplicación
de música. Si tenemos espacio, expresión, almacenamos los datos de esta
canción en una tabla que es una entidad. Convenientemente, tenemos nuestros
objetos de etiqueta y nuestra canción. sellos, ya sabes, ¿cuál es el nombre de la
canción, el nombre del sello y el artista? nombre, esto es lo que queremos
buscar y hacer el índice.

Si tuviéramos
que hacer esto, necesitaríamos para escribir una consulta y había que
utilizar el operador. Esto no es muy bien. Es muy limitado. Ese signo
de porcentaje es una especie de como un comodín y esto, incluso
si indexas esa consulta columna, SQLite no podrá usarlo.
Así que no hagas esto. Además,
si intentas buscar a través, debe expandir esta consulta.
Y esto, como puedas Mira, no escala fácilmente.
Nos ayudaron con esto situación porque ahora crea una
tabla y todas las columnas son — ahora quieres tomar tu entidad.

Ahora,
en tu consulta, utilizas un operador diferente y estábamos
viendo la misma columna y eso básicamente le dice al operador
mash que desea buscar en todas esas etiquetas, por lo que esto
nos ayuda con la búsqueda. Podrías decir, oh, puedo usar
esto en todas mis mesas, pero no exactamente. Consume más espacio
porque cuando creas un tabla, creas una tabla y eso está
detrás de algunas tablas y mucha información. Esto se conoce como
tablas de conversación, cuando consultas desde tu tabla, la información
proviene de estos mesas. También
hay algunas cosas. Tú no puede tener claves ni componer
claves primarias. Pero hay uno con buena pinta característica, que es contenido
externo y volviendo a esto, si quisiéramos usar nuestra tabla
real y crear una segunda tabla Solo para nuestras etiquetas, básicamente
usamos esa anotación, pero le dijimos, oye, mis datos en
realidad se van a almacenar esta otra mesa que ya tengo.
Convenientemente, esta clase de datos
y tabla virtual tiene etiquetas.

En el anterior ni siquiera la
URL es la que queríamos índice. Lo
que pasa ahora es que tenemos un mesa delante y detrás, tenemos
la misma sombra tablas para índices, sino el contenido
real que almacenamos en el mesa que tenemos. Esto es mucho
mejor para ahorrar espacio y es un poco más flexible. Para consultar
esta tabla externa, tienes que consultar desde
la mesa virtual y luego únete porque queremos obtener las canciones
y de manera similar, tú Todavía usaría fósforo. Una
cosa, sin embargo, es que porque estas son dos tablas diferentes,
cuando las insertas en el mesas de sonido, las cosas en realidad
no se insertan, lo que significa no se actualiza así que tienes
que hacerlo tú mismo.

Pero Sabes, no queremos que hagas
esto. queremos hacerlo fácil. Cuando uses Room, creará
un activador para que puedas Mantenga estas dos cosas sincronizadas,
eso es genial. Otra característica importante es la compatibilidad
con vistas de bases de datos. Nosotros tener canciones y álbumes y una canción puede
estar en varios álbumes, por lo que Disponemos de una mesa de unión que
asocia las canciones. Ahora esto Está todo bien. Quieres buscar
una lista y tener el álbum nombre y todas las canciones que contiene como
una lista. Está bien, genial. Tenemos la lista y escribimos una consulta
y buscamos desde ese cruce mesa. No puedes hacer esto
porque esa tabla no tiene el nombre de la canción o el título
del álbum. Necesitas escriba una consulta como esta
donde obtenga de la tabla y únelo con la canción y la tabla
y luego podrás devolver tu lista y datos.
SQLite es poderoso y puedes expresa esto, si te encuentras
escribiendo estas cosas, es como un texto estándar.

Podría
ser genial si pudieras tener una tabla que tiene la canción
y el álbum juntos, sin duplicar los datos en esos datos
y las canciones y el álbum títulos. Aquí es donde entran en juego
las vistas de bases de datos. Tú básicamente escribe la consulta que define
el álbum y la canción juntos como consulta. Usted anota una entidad
con esa vista de base de datos. Y en eso, esta es la misma Sala.
Puedes tener cualquiera con el campos o esas cosas. Una
vez que lo declares, agrégalo a su base de datos de Room, por lo que tenemos
esa declaración, si intenta reescribe la consulta anterior, seleccionas
de esa tabla. Bien, Estamos seleccionados de una vista,
esa tabla no existe. Pero para todos los efectos de consulta,
eso es una tabla. Ahora Es mucho más sencillo porque es como
una mesa. Tú también puedes devolver o incluso devolver los datos
en vivo porque sabemos cómo es eso construido, sabemos cuándo podría
cambiar para que pueda obtener el LiveData y ejecutar consultas. Puedes
hacer todo lo que puedas hacer con una tabla, excepto que no puede realizar
inserciones ni actualizaciones.

Pero tu Puede tener vistas dentro de otras
vistas. Esto hace que sea mucho más agradable
escribir consultas y le permite abordar lógicamente sus datos. Otra característica
importante que tenemos Lo que hemos agregado es soporte para
múltiples instancias. Entonces vamos digamos que estamos escribiendo las
aplicaciones, tenemos una obra de teatro lista, todas las canciones y tenemos un servicio
de sincronización que va y extrae los nombres y las actualizaciones de mi lista
de reproducción. Cuando estas usando Room, si el servicio de sincronización
actualiza la base de datos, actualiza automáticamente la interfaz de usuario
y esta es una característica genial porque escribes esto. Esto funciona
perfectamente, pero luego tu aplicación está
inflada así que decides entrar fondo posee.

Saca
la canción, escribe en la base de datos y la interfaz de usuario
no tienen idea. No sabe el La base de datos ha cambiado porque solo sabe
si es la misma habitación. Nosotros No obtenga esa información de
SQLite. Ahora, con Room 2.1, puedes crear
instancias múltiples que busque otras instancias de Room.
Una vez que hagas eso, ahora su servicio de proceso en segundo plano puede
actualizar la base de datos y todo esto en Room se actualizará automáticamente.
Ahora, esto es todo. de forma predeterminada porque necesitamos
crear los servidores. Es un costo que la mayoría de la gente no necesita.
Habilitamos esta bandera para aprovecha esta característica. Otra
característica que agregamos, que efectivamente fue solicitado por la
comunidad, fue un valor agregado apoyo. Si estás usando Kotlin,
no tienes que preocuparte sobre esto porque tienes clases de datos.
Si no, es posible que estés utilizando otros valores. La habitación puede
entender estos valores automáticos. objetos anotados. Si sabes
un poco sobre el valor, tienes una clase abstracta y la
anotas con otros valores.

Ahora puedes anotar ese mismo
valor abstracto y Room será capaz de descubrir que quieres
hacerle una mesa. Estos ahora se pueden anotar con anotaciones
de habitación a través de la tecla información de columnas y cosas
así. La única advertencia es que debe agregar
el cálculo de AutoValue y esta es la anotación que hace que estas
dos herramientas funcionen juntos. Para
apoyar esto, normalmente Estas anotaciones solo se limitaban
a campos y necesitábamos extenderlo para permitirle ponerlos
en esos métodos abstractos, pero solo funciona si estás usando
AutoValue.

De manera similar, si estuviera usando
una clase normal, tendría tener campos. Todavía necesitas
ese método de fábrica y Room podrá descubrir esto. Usarías
la clase abstracta. que declararías. Otra característica
muy solicitada Lo que se ha pedido desde hace
tiempo es este. Puedes tener un sincronizar tiempos de retorno e insertar,
actualizar y eliminar. Escuchamos. Cuando lo solicite, lo escucharemos.
[Risa] En realidad, esto solo está disponible
en rx, eso es interesante. Que
podría estar disponible – Así
que la Sala 2.1 es realmente grande lanzamiento, la búsqueda de texto completo, las
vistas de la base de datos. Cuando nosotros Decidimos en qué características trabajar,
básicamente confiábamos en su comentario. La gente realmente lo quería.
Esta es nuestra filosofía, nosotros Mire lo que está haciendo la comunidad,
cómo lo están usando, qué quieren y lo implementan. Entonces,
por favor, intenta utilizar 2.1. Es un lanzamiento
muy grande y queremos enviarlo.

Lo más estable posible y necesitamos
sus comentarios. Observamos la cantidad de aplicaciones que
se envían a través de ellos y vemos cómo lo están usando. Buscamos
la caja entrante, no Realmente tengo caja, pero a veces. Busque
un error de usuario entrante. [Risas] Para
arreglarlos. Entonces, trabaje con nosotros e intentaremos
empaquetarlo y enviarlo. y también, háganos saber qué otras
características desea en Habitación Está bien. Muchas gracias
por venir a esta charla. Espero fue útil. [Aplausos]
Gracias. Estaremos
en la caja de arena zona, después de la charla.
Gracias. Todos, nuestra próxima sesión, en
esta sala, comenzará en 10 minutos. Gracias. minutos. Gracias. Bienvenidos todos. Bienvenido de nuevo.
Nuestra próxima sesión obtendrá en marcha en unos dos minutos. Como cortesía
a nuestros presentadores, Le pedimos que silencie sus dispositivos. Nos
pondremos en marcha en aproximadamente dos minutos. Hola a todos, bienvenidos a nuestra
ronda relámpago y esta es donde intentamos dividir una cantidad
increíble de contenido en Serán 40 minutos.

Muy, muy
divertido. Tenemos una grupo de oradores increíblemente
distinguidos y voy a hablar realmente rápido. Si escuchas un
gong, significa que alguien ha se ha ido para siempre. Vamos a intentar
mover esto de verdad, de verdad. rápidamente.
Nuestra primera charla será sobre JNI. Démosle la bienvenida
a Elliot Hughes. [Aplausos]
Mi nombre es Elliot Hughes. He trabajando para Android por un tiempo.
Mi primer trabajo en Android fue trabajando en las bibliotecas JNI y limpiando
algunos de los errores. En primer lugar, te mostraré
lo que esperas ver cuando consulte JNI, que es un código
similar a este. Estoy adivinando nadie puede decir que el código
que hace algo útil no lo es en esa pantalla todavía. Y supongo
que nadie puede decirme dónde está la línea útil en
eso tampoco. Esta charla es sobre cómo no hacer eso.
¿Cómo nos alejamos de eso? La respuesta de una sola línea es usar
mejor C++. Si estás usando el CAPI, es complicado. Terminas con
un estilo de anidación. Hay muchos casos especiales, como, estoy
tratando de lanzar un excepción, pero ya hay una excepción
pendiente.

Entonces, no escribas eso en cada
método JNI. escribe eso una vez. Y en particular, tener clases
que te permitan usar un cuerda como una cuerda. Ya sabes, usa
una cuerda J como si fuera una cadena. Lo mismo ocurre con un aumento.
No quieres hacerlo con una J. cuando se pueden utilizar corchetes de
operador. Referencias locales también. Las
cuerdas y los arreglos rimativos son la mayoría de ellos. Las excepciones,
más difíciles de lo que parecen y… El tipo de primitivas sin formato que
obtienes en JNI no son muy útiles. Esperan que usted mismo encuentre
la clase y cree una instancia. Si realmente desea
incluir un detalle adecuado mensaje o una causa, terminas haciendo
cosas raras como, necesito para encontrar el constructor
para esto.

Bla, bla, bla. Es un mucho código, especialmente si se trata
de casos especiales. Teniendo una función que toma una cadena de
formato es un gran alivio y… bien. He
estado hablando de esto en El dicho abstracto, deberías
usar estas cosas. Hay Hay muchas opciones y creo que un
problema que tiene mucha gente es ¿Se obsesionan con cuál es la mejor manera
de hacer esto? Cualquiera de Estos son mejores que escribir
el código que vimos. Androide utiliza un ayudante nativo. Tiene cosas
para hacer las cosas que he estado hablando sobre. Si no te gusta
ninguno de los otros en el Internet, puedes escribir el tuyo propio.
Entonces, ¿cómo se ve si
cambias a usar algo? ¿como esto? Este es el mismo código.
Estos son los mismos dos diapositivas que teníamos antes,
ahora condensadas en una sola. Creo cinco segundos es tiempo suficiente
para ver qué funciona aquí. No es necesario tener el estilo donde
tenemos los constructores. y comprobamos, ¿realmente funcionó?
Si estamos preparados para usar Excepciones de C++, que es más
avanzado.

Esto te da el 90% de el beneficio con el 20% del esfuerzo.
Esto es lo que el código parece en Android para esa llamada.
Entonces, eso fue algo realmente
simple, donde realmente había Sólo hay una línea de ingrediente
activo allí, pero esto escala muy bien. Nuestra recomendación
es que intentes mantén tu código así. No mezcles todo
el texto estándar de JNI cosa. Por otro lado, no mezclarías
tu lógica empresarial y cosas de renderizado de UI. Es un
consejo similar, no hagas eso. Si quieres un buen ejemplo de esto,
el sistema operativo Android La clase está implementando exactamente
de esta misma manera.

Es super repetitivo, realmente aburrido
y así es como nos gusta. Si necesita preocuparse por las versiones
antiguas de Android y tiene varios archivos SO, lo que puede resultar
complicado. Te recomendamos ir a GitHub. Los archivos comprimidos, que
se mencionaron anteriormente en la nota clave. Una, una gran biblioteca
es generalmente más grande que muchas pequeñas bibliotecas.
Gracias. Si usted tiene preguntas, por favor ven a buscarme.

Estaré
haciendo jornadas de puertas abiertas tarde. Gracias. [Aplausos]
Quería compartir con ustedes una breve
historia sobre mi experiencia. con el proyecto multiplataforma Kotlin.
Cuando venimos y hablamos sobre Android y Kotlin, lo que realmente
queremos decir es Kotlin JVM, ese es el Kotlin que conocemos
que se confina a Java bytecode y podemos transformarlo
y ejecutarlo en Android. Puede ejecutarse en servidores en la nube y en
nuestros escritorios, etc. Hay dos versiones más de Kotlin,
JVM. Y luego está Kotlin/Native que puede
ejecutar o apuntar a varios plataformas, incluso web ensamblador e
incluso Android. ¿Cómo empezaríamos realmente
con esto? Kotlin 1.3 tiene una nueva estructura. Si
aplica eso, puede seleccionar desde un conjunto de ajustes preestablecidos para apuntar
a cualquiera de estas plataformas. Aquí, Estoy apuntando a una biblioteca de Android
y un objetivo JS. cuando agregas estos a su módulo, crea
automáticamente la fuente conjuntos para estos archivos Kotlin.
Si coloca sus archivos Kotlin en el JS carpeta principal, se compilarán
en archivos JavaScript.

¿Qué quiero decir con
Kotlin específico de plataforma, el páginas de referencia para cada uno de los
paquetes de Kotlin, pasa el mouse sobre cualquiera de ellos, en la parte superior
derecha, verás estos multicolores chips que te dicen qué objetivo
de compilación es este disponible en. El paquete del
navegador Kotlin, que te permite acceder a las interfaces desde el entorno
del navegador web solo hace sentido en el objetivo JS. Afortunadamente,
están disponibles. todos cruzan todos los objetivos de
compilación. Puedes ver Kotlin Común. Esta es una biblioteca Kotlin pura que
puede ejecutarse de forma independiente. desde cualquier plataforma a la
que se dirija. De hecho, si agrega un
complemento multiplataforma a su proyecto, junto con el conjunto específico
de la plataforma, obtienes un conjunto de fuentes común donde puede colocar
código independiente de la plataforma. Lo que pasa con el código
independiente de la plataforma es que No se puede llamar a ninguna de las API de la
plataforma. No puede llamar a ninguno de los API específicas de JS o específicas de
Android. La otra manera funciona. Tú puede tener el código específico de su plataforma,
depende de un compartido biblioteca común o conjunto de fuentes.
Entonces, sabiendo todo eso, me propuse escribir una aplicación de ejemplo solo para
aprender sobre Kotlin, una plataforma y escribí un juego.

Todavía necesito
crear una aplicación para Android. con código específico de Android como
lo haría normalmente y luego un Página web con código JavaScript para inicializar
cosas en mi aplicación. En mi caso, el motor de sudoku,
lo saco y lo meto en un La biblioteca compartida utilizó
Kotlin Common. Y de hecho, el único El conjunto de fuentes que tengo es el principal
común, así que puse todo mi código allí y eso significa que está disponible en
todas las plataformas que elijo objetivo.

Pero
luego pensé, está bien, tengo este motor central para resolver mi código,
pero también me gustaría dibujar el tablero en mi pantalla y por
qué codificarlo por separado si ¿Debería verse igual en cada uno
de ellos? ¿No sería bueno si yo ¿Tenía una API el dibujo en la pantalla?
Pero entonces lo que quiero Lo que hago es que realmente quiero que se
delegue en cada uno de los implementación de la plataforma.
Quiero usar el lienzo de Android y el HTML para dibujar en el sitio
web.

La cosa es que yo solo Te dije que el código común de Kotlin no puede
llamar a ninguna plataforma. interfaces, por lo que no puedo depender
de estas. ¿Cómo funciona en ¿Kotlin? Bueno,
existe este esperar un mecanismo real que le permite declarar
clases esperadas en su código común, que es casi
como definir una interfaz en Java. En mis conjuntos de fuentes específicos
de la plataforma, proporciono el Implementación real que puede usar
API, al igual que Android. lienzo. Ahora,
cuando agrego esa dependencia desde mi fuente común configurada
a la otra, parece algo como esto. Pero, en realidad, al compilar
para un tema específico plataforma, como JS, esta dependencia
realmente utilizará Lienzo HTML.
[Risa] Bueno. Si pudiera mostrar el enlace
al proyecto para que todos pueden verlo, sería
genial. [Risas] [Aplausos]
Si eso es. [Aplausos y vítores] Supongo
que no. [Risas] Soy
Nick Butcher.

Soy un diseñador y Ingeniero en Google y me encantan los vectores.
La mayoría de los activos en su Las aplicaciones deberían ser vectores
hoy en día. Los vectores son impresionante. Son nítidos en cada pantalla
de densidad única. Ellos son También es extremadamente flexible y
quiero hablar de esto para que puedas puede aprovechar al máximo los vectores. Entonces,
la mayoría de los vectores en tu aplicación probablemente se vea algo como
esto. Tienen piezas y codificar un color. Algo como esto,
rellenar o trazar aquí. Quizás estés usando un recurso
de color. Hay mucho más puedes hacer aquí. Lo primero
es utilizar colores temáticos. Por lo tanto, puedes utilizar los colores del
tema de dos maneras. Puedes aplicar un tema color como tinte. Teñirá todo
el dibujable. Aquí está para los íconos y puede tener
un único activo que muestre en diferentes temas.

Ya no tienes
que preocuparte de qué color activo que recibiste de tus diseñadores,
que obtuvieron exactamente el tono de gris adecuado que necesitas.
Estará teñido en tiempo de ejecución para que siempre sea
correcto. En este ejemplo, voy a Utilice el color primario. Digamos que tienes una
aplicación de deportes, que usando un tema para un equipo determinado. Puedes hacer
referencia a ese color del tema para que tienes un solo dibujable. Soporte
vectorial y listas, usted puede hacer algunas cosas divertidas. Estamos
cambiando de color. O tal vez tu tener una aplicación de lista donde cuando se
selecciona un elemento de fila, puede cambiar las representaciones. Podrías hacer
esto con un dibujable y volteado. entre ellos. Si el renderizado
es 99% igual, querrás guarde el trazo aquí, esto ahorra
duplicación. Lo defines como esto en sus recursos de color y
consúltelo como le gustaría recurso de color. Mi característica
favorita es el degradado. Los vectores admiten lineal, radial y
de barrido.

Un lineal tiene un inicio fin, coordenada xy s. En
realidad puedes conseguir mucho más detallado e incruste estas etiquetas en
su interior para encontrar paradas de color individuales. Aquí,
voy por un color al 72% de el camino a través. Usted
define gradientes en un directorio o la sintaxis de recursos
en línea y se compila tiempo, lo extraerá a un recurso
de color, lo cual es útil. Los degradados han sido muy útiles.
Aquí hay una ilustración de un Aplicación de E/S. Habría sido una
quinta parte de lo que teníamos que barco. Es útil para íconos adaptables.
Los vectores no son compatibles dejar sombras. Si necesita crear
una ruleta personalizada, esto es necesario lograr. Los degradados
tienen ciertas formas, pero se pueden transformar,
como rotarlos, etc. I Quería crear esta sombra de
forma ovalada. Así que lo hice esto dibujando un círculo con un
degradado radial y usando el escalar la característica y para transformarla
y producir el efecto que se después.

Si no llena toda la
forma, puedes usar esto. Continúa coloreándose hacia afuera. Si
utiliza un modo de repetición, repetiré y continuaré. O un modo
espejo retrocederá y adelante a través del gradiente.
También puedes usar gradientes que No pases por diferentes colores.
Puedes tener el sólido bloque de color. ¿Por qué querrías
un degradado que no haga eso? Puedes divertirte un poco. Este
ejemplo es una sola forma. utilizando un gradiente radial. Puedes
hacer una ruleta de carga o combinarlo. Este es el gradiente
sobre esta área y tú Puedes divertirte animándolo. Así
que espero haberte mostrado que los vectores son nítidos, pequeños
y eficaces. quiero mostrar tú lo que puedes construir. Este es un
único vector dibujable. Yo tenía el placer de animarlo. Este
es un vector dibujable, Extremadamente pequeño, extremadamente afilado.
Esos son los elementos dibujables vectoriales. Muchas gracias. [Aplausos] [Aplausos]
Hacemos una breve pausa mientras tenemos
la siguiente sesión en cola. arriba.

Espero que hayas disfrutado eso presentación orientada a vectores.
Vamos a adentrarnos un poco un poco de El enlace de datos, con un poco de suerte.
Entonces, ¿cómo están todos disfrutando del cumbre hasta ahora?
[Aplausos y vítores] Quiero un poco más de entusiasmo,
pero lo aceptaré. [Risas] Y estamos
muy emocionados de ser haciendo esto de nuevo. Es la primera
vez que hacemos esto en tres años y es genial estar
frente a ti durante El décimo aniversario de Android.
Y, de nuevo, gracias a todos. I Conozco a muchos de ustedes, ¿cuántos de
ustedes viajaron durante más de 1.000 millas para estar aquí. ¡Guau! Está
bien. Eso es increíble. Ya casi llegamos, creo. Está
bien. Espera, estamos teniendo dificultades técnicas. ¿Estamos
listos? Está bien. Excelente.

Hagámoslo. Sube de
nivel con el enlace de datos. Cuando Data Binding fue en 2015, mi
reacción fue, ¿qué ha pasado? ¿Terminamos? Expresiones. El enlace
de datos es bastante bueno. Puede en realidad elige cuánto quieres
usar. es el principiante nivel. Beneficios inmediatos. En
el nivel intermedio obtienes adaptadores de encuadernación personalizados.
Tienes datos de UI y UI para datos. Deshagámonos de la vista de búsqueda
por ID. [Aplausos y vítores] Necesitamos
habilitar el enlace de datos. Todo lo que tienes que hacer es configurar el
enlace de datos como verdadero en tu Gradle archiva y coloca envoltorios
de diseño. Puedes hacer eso en Android Studio lo sabe automáticamente
bajando y diciendo convertir al diseño de enlace de datos.
Puedes inflarlo y configurar tu atributos como este.

Vas a
querer usar datos reales Vinculante, así que hablemos de
expresiones vinculantes. declaramos variables en esta sección de datos de
nuestro diseño y luego podemos Utilice expresiones en los atributos
Xml de diseño. estan en rizado tirantes. Aquí hay ejemplos. Estamos
diseñando una propiedad de texto. a una propiedad ViewModel. En el
segundo, altura de cero y en el tercero, usamos una
lambda, que pasa el texto pocos. Sobre el cuarto tiene
otra vista. Ahora, para dar acceso al enlace
de datos, configuramos el enlace objeto como este después de inflar el
diseño. Entonces, bonita sencillo y luego nuestro ViewModel
ahora está disponible para ese diseño. Pero la verdadera pregunta
es: ¿cómo se explica todo esto? ¿trabajar? Y la respuesta es que no
hay magia en el enlace de datos. Pero parece magia de Meige
y eso es porque tenemos adaptadores. Cada llamada se realiza con
un adaptador vinculante. Puedes ver el código y utilizar un depurador. Esa
última línea es en realidad la establecer el texto que estamos buscando.
lo hacen comportarse inteligentemente a través de todas estas
vistas.

Mirar los archivos fuente le ayudará a crear
su propio archivo personalizado. adaptadores de encuadernación. Entonces,
hablemos de ello. Los adaptadores tome uno o más nombres de atributos.
El método tiene una vista. del primero parámetro. Simplemente pueden… los adaptadores
pueden diferir solo por los datos. tipos. Por lo tanto, también puede utilizar
adaptadores para anular el comportamiento. Esto hace que la carga de la
imagen se deslice pero tienes que estar cuidado con esto.

También podríamos
hacer un montón de cosas con Adaptadores de encuadernación avanzados.
A veces el viejo es bueno como oyente. El compilador vinculante
pasará el anterior. en el primero. Y, además,
puedes utilizar atributos múltiples, lo cual es bastante
bueno. Entonces puedes definir estos múltiples atributos aquí, cuando
declara el adaptador de enlace y ambos están disponibles para su
código. La observabilidad es Frío. Podemos usar LiveData para realizar
observaciones automáticamente. Esto está muy bien. Sólo estamos exponiendo
una clase inmutable. aquí. Y luego simplemente expones
un LiveData usando Kotlin. Y luego necesitas hacer un cambio
adicional más. Necesitas establezca el propietario del ciclo de vida para
que pueda observarlo. Enlace de datos bidireccional. Esto es
realmente trivial cuando estás en realidad usando LiveData.

Puede utilizar
el enlace de datos unidireccional en dos caminos. De hecho, puedes llamar a esto
con enlace de datos bidireccional. con en iguales. Podemos observar LiveData.
Entonces, en este caso, está bien exponerlo y luego configuramos
el propietario del ciclo de vida y usamos la notación igual a igual y eso
es todo. Datos bidireccionales Vinculante. Quizás eso ya no sea
tan experto. Consulte el laboratorio de código de
enlace de datos.

Ahí tienes. [Aplausos]
Hola a todos. Mi nombre es Carmen y yo estamos en el equipo de
rendimiento de Android y hoy estoy Le mostraremos ejemplos de cómo analizar
el rendimiento utilizando Systrace. Antes de hacerlo, quiero
recordarte que tu aplicación es no una isla. Se ejecuta sobre
varias capas, el teléfono hardware, el marco de Android, bibliotecas,
pruebas AB. El La realidad podría sorprenderte.
Y aquí es donde Systrace entra. Entonces, Systrace es una herramienta
que le permite recopilar datos precisos información de sincronización sobre lo que
está sucediendo en su dispositivo y visualizarlo. Registra hasta el intervalo
de tiempo de CPU individual. Es la herramienta más importante que tenemos
para depurar problemas. Nosotros He dado charlas sobre cómo usar
Systrace en el pasado. Google para la charla de
E/S. Hoy quiero hablar de la Problemas que puedes encontrar. Usé Systrace
para tres aplicaciones que no uso usar. Entremos. Con la primera
aplicación, cuando miro la rastro, tres inicios de actividades diferentes
me llamaron la atención lejos. Hay muchas razones para utilizar
actividades con trampolín. I Vea cuándo los desarrolladores intentan utilizar
una pantalla de presentación.

Ellos Definitivamente afectará su tiempo de lanzamiento.
Si estás tratando de hacer una pantalla de presentación, puede configurar
un tema de lanzamiento o refactorizar su código para que solo abra la actividad
separada cuando lo necesite a. No sé por qué esta aplicación
tiene estas actividades, tal vez son críticos. En la
misma aplicación, también navegué A través de los nombres de las vistas,
parece que es un cajón. puntos de vista. A menudo tienen muchas opiniones
infantiles. A veces necesitamos ellos inmediatamente por razones de UX.
Podrían ahorrar 42 millones más segundos. La
segunda aplicación sigue lo que Yo esperaría. No hay actividades
ni servicios extra. siendo iniciado. Profundicé más e
hice clic en las vistas que estaban inflado y los nombres de los widgets
que pude ver coincidían con lo que era visible con la aplicación.
Entonces vi esta brecha en actividad dentro de la aplicación
ciega que ocupa 30 milisegundos. Veré su contención
del monitor. Monitor contención es decir contención
de bloqueo, donde el propietario de el bloqueo del hilo.

Entonces me
desplacé hacia abajo y vi actividad durante este tiempo.
Y luego me está dando un puntero a la pila. No estaba familiarizado
con el reino. Es como una biblioteca de bases de datos móviles
como Sequel. Esto puede ser o no ser algo que puedas arreglar porque es
posible que necesites coordinar con el reino biblioteca. De
cualquier manera, esta es otra potencialpotencial 30 millones de
segundo.

Hay dos actividades que se están
iniciando, pero hay otra mejora potencial aquí. Incluí
el nombre del hilo, este es el hilo de la interfaz de usuario. Si nos desplazamos
hacia abajo, podemos ver estos Hilos en segundo plano ejecutándose.
CPU 0, CPU 1 CPU 2. Es increíble Hicieron hilos en segundo plano pero
hay un rendimiento potencial. asunto. Estos subprocesos en segundo
plano bloquean mucho las E/S. Esas son las secciones naranjas. Son
un poco difíciles de ver. Entonces puedes ver que están sucediendo
algunas E/S. ahora resulta que en muchos dispositivos tenemos
que preocuparnos por la E/S contención. No necesariamente
hay más de uno. canal a utilizar. Es posible que estén
ralentizando la solicitud de E/S. del hilo de la interfaz de usuario.
Eso se destaca a continuación.

Vemos los ocupados 4 milisegundos. Podemos
ver que en esta sección, Pasa 107 milisegundos. Podríamos
acortar esto si nos movemos la actividad de fondo y la superposición
son otra cosa. Todo lo que necesitaba hacer era clonar.
Puede abrir el HTML de salida archiva en tu navegador y mira
todo lo que te mostré hoy. Y esto apenas roza
la superficie de lo que puedes hacerlo con Systrace. Pude
identificar estos oportunidades en aplicaciones en las que
no trabajo. Cuando miras un rastro de tu propia
aplicación, generará 100 veces más sentido para ti. E incluso
puedes agregar tu propio rastro.

Puntos dentro del código de su aplicación
para que pueda ver el contexto de qué se está ejecutando en su aplicación desde
dentro del seguimiento. Gracias. [Aplausos]
PRAE Hola a todos. Espero que hayamos disfrutado
el primer día hasta ahora. Soy parul. Queremos hablarte
de ciertas prácticas que ustedes, como desarrolladores de aplicaciones, pueden
adoptar para crear productos que continúen valorar a los usuarios, al mismo
tiempo, proteger su derecho a privacidad. Queremos que Android sea una
plataforma donde puedas ofrecer experiencias personalizadas y al mismo
tiempo, la privacidad es importante y transparencia en términos
de qué datos estás coleccionar y cómo lo estás usando.
Por tanto, puede servir como plataforma para
crear experiencias sociales. Nosotros tienen esfuerzos continuos. Entonces,
cosas que queremos tocar hoy es cómo sus aplicaciones acceden
a los datos del usuario, asegurando el usuario sabe a qué se accede
y la transparencia.

Por tanto, tenemos un enfoque multinivel.
Nos centramos en mejorar API. Nos
preparamos para mantener el abuso en comprobar y garantizar que se proporcione
igualdad de condiciones y experiencia segura para nuestros usuarios.
Nos hemos construido para identificar cuando las aplicaciones pueden estar abusando
de la información personal de un usuario. También contamos con revisores humanos, por lo
que no se trata de robots ni de IA, sino en realidad personas que revisan las aplicaciones
para asegurarse de que el usuario Se garantiza el derecho a la privacidad y
se proporciona una experiencia segura. También invertimos mucho en
seguridad. tenemos la seguridad programa y programa de vulnerabilidad.
Siéntete libre de dejar más si quieres saber más sobre estos.
Por último, tenemos Google Play, que
ayuda a los usuarios a conservar su privacidad y seguridad, lo siento. ¿Por
qué estamos aquí hablando con ¿Tú, hoy? Creemos que la privacidad y la
seguridad son una asociación entre la plataforma y los desarrolladores,
como usted. Tu como Los desarrolladores que crean estas aplicaciones
desempeñan un papel muy importante en el ecosistema. Puede abogar por mejores
políticas de privacidad y asegúrese de que no se vea comprometido el derecho
de la privacidad de los usuarios.

Por ejemplo, si tiene una solicitud
para recopilar ciertos información sobre un usuario desde su dispositivo,
una pregunta en todos los sentidos Vale la pena preguntarse: ¿realmente
lo necesitamos? ¿Cómo planeas usar? ¿él? ¿Y todavía lo utilizamos?
La razón es que es En realidad, no es muy raro que
cierta información sea recopilado, que en realidad nunca
se utiliza y a veces es abandonado.

Algunos
datos que vemos ser recopilados incluyen IMI, una lista de aplicaciones
instaladas, para orientar anuncios a ellos. Recopilar información de la información
de una aplicación o de un red, como el nombre o la fuerza.
Probablemente siempre No necesito esa información. Entonces,
para algunos casos, tenemos Opciones de privacidad. Algunos
ejemplos incluyen animamos utilizar ID de instancia. Si estás
intentando confirmar el número de teléfono del usuario,
le recomendamos que utilice este. Puede También considere la calificación
en lugar de la buena ubicación y entonces, si desea ver si hay un
usuario en el núcleo, puede comprobar el enfoque en lugar de solicitar
el estado del teléfono de lectura, lo que da muchos más datos. Por
último, desea asegurarse que sus usuarios estén disponibles de
qué datos se están recopilando y cómo se está utilizando.

Esto no es
sólo una mejor práctica, sino una requisito. Si un usuario no es consciente
de que algunos datos sobre él está a punto de ser recopilado y para qué
propósito se está utilizando, usted debe revelarlo y obtener
permiso para hacerlo. entonces.
Los datos se están recopilando la aplicación en la tienda con fines de
prevención de fraude, por lo que esto necesario ser divulgado al usuario y
sólo después de que el usuario consiente en el caso de que se transfieran
los datos.

Hemos trabajado duro y le guiaremos
a través de algunos de esos cambios. En Android 9, dividimos
el registro de llamadas permisos del grupo de permisos
del teléfono en los suyos propios registro de llamadas de grupo de permisos.
Si su aplicación solicita: leer números de teléfono de la cadena
de transmisión estatal del teléfono, Le solicitamos que solicite un registro
de llamadas y un estado. permisos. En Android
8, lo reemplazó con un construir con función que requiere
un estado de lectura del teléfono permiso. Asegúrese de utilizarlo
por motivos válidos. Hablando de acceso limitado, aplicaciones
ejecutándose en segundo plano. requerirá las siguientes restricciones.
no lo harás ya no tienes acceso al micrófono o
a la cámara en segundo plano, sensores. Si su aplicación necesita
acceso a eventos de sensores en dispositivos, deberá utilizar un servicio
terrestre completo y informar más y proteger al usuario,
el sistema agregará un ayuda visual cuando acceden
a la cámara o al micrófono.

Nuestros contactos proporcionaron API utilizada para
permitir que las aplicaciones proporcionen datos a recoger información. A partir de enero
del próximo año, un conjunto limitado de campos y métodos de contacto
quedarán obsoletos. Entonces, si su aplicación accede o actualiza
estos campos, le pedimos que utilice métodos alternativos.
Podrías cumplir cierto uso casos utilizando proveedores de contenidos
privados o almacenando datos en sus sistemas back-end. Entonces
esta fue una muy breve hablar. Esperamos haber podido ofrecerle
información para construir Aplicaciones que son conscientes. Como
hemos mencionado, definitivamente Creemos que la seguridad y la privacidad
son una asociación entre usted, el desarrollador y nuestra
plataforma. Si tienes algún Si tienes alguna pregunta al respecto,
ven a buscarnos en horario de oficina. y espero que tengas una gran
cumbre. Muchas gracias. Gracias. [Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
Contenía una guía para la arquitectura
de aplicaciones, que muestra una manera en que pueden combinarse para tener
una aplicación comprobable y mantenible.

La separación de preocupaciones Hola a todos. Es
genial estar aquí. Mi nombre es Phil Adams. Soy investigador.
Y yo soy Pierre Lecesne. Estamos
aquí para hablar sobre cómo Estamos repensando la distribución
de aplicaciones en Google Play. Hablaremos sobre el formato y compartiremos las
características que hemos estado trabajando en. Para empezar, hablemos del
tamaño de la aplicación y del impacto que está teniendo en su aplicación. ¿Por
qué importa el tamaño de la aplicación? Compartimos este gráfico en Google
I/O y lo viste antes hoy. Muestra cuando la aplicación
crece, instalación exitosa la tasa baja. A muchos usuarios
no les queda suficiente espacio su dispositivo. Los datos pueden ser
costosos y las velocidades de conexión, lento. Quiero que también pienses
en tu propia experiencia.

Cómo ¿Cuántos habéis visto algún aviso
del Play? Comenzamos a investigar esta área
más de cerca y descubrimos que Liberar espacio es un importante factor
de desinstalación. Esto es un problema para las personas con dispositivos
de bajo almacenamiento. También es un problema con los dispositivos
de alta gama que llenan el dispositivos con contenido HD. Uno de cada cinco
dispositivos en el Reino Unido tiene bajo almacenamiento. Una petición clave que escuchamos
de los desarrolladores también es la de ayuda a comprender y desinstalar.
Ejecutamos un usuario estudio de investigación para ver por qué los usuarios,
en los EE. UU., desinstalan aplicaciones. La razón principal fue la calidad. Sin embargo,
la razón principal por la que las aplicaciones Los juegos se desinstalaron después
de un mes para liberar espacio. Las aplicaciones y los juegos
siguen creciendo. Han crecido cinco veces en promedio. Los dispositivos más
nuevos tienen más almacenamiento, pero la aplicación, los juegos, las fotos y los
vídeos HD también siguen creciendo.

Hacer que su aplicación sea grande la pone
en riesgo de sufrir todas estas desventajas. Pierden adquisiciones
y se desinstalan para liberar espacio. Estoy seguro de
que ya lo sabes y lo has hecho. Probablemente simplemente lo consideró una
compensación. ¿Agregas nuevos? ¿características? ¿Perder instalaciones
y generar más desinstalaciones? nosotros no Quiero que usted tenga que preocuparse por
estas compensaciones. Desde hace algunos años, existe una
forma de optimizar. Puedes usar múltiples SDK, pero es increíblemente ineficiente.

El número
de APK crece rápidamente, 64 bits, 34 bits.
Tampoco ayuda con algunos de las dimensiones. Los idiomas
están en cada APK. Nosotros puedes hacerlo mejor. Permítanos mostrarle
la solución que hemos creado para esto y vea cómo el nuevo modelo de aplicación
le ayuda a mejorar su vida. más fácil.
Entonces, el nuevo modelo de aplicación se centra en mejorar todo el proceso de
adquisición de usuarios. Ayuda haciendo sus aplicaciones más pequeñas,
mejorando directamente la instalación y tarifas de desinstalación. Hace que tu
liberación sea más manejable. En ese contexto, durante el resto de
la sesión de hoy, hablaremos sobre los pasos con los que queremos ayudarle.
Primero queremos ayudar conviertes más instalaciones y minimizas
las desinstalaciones construyendo aplicaciones más pequeñas. Entonces,
queremos hacer posible que usted ofrecer diferentes funciones a diferentes
audiencias, bajo demanda. Y, finalmente, queremos ayudarte a mantener
actualizados a tus usuarios. sobre las últimas y mejores versiones
de su aplicación.

Comencemos con cómo hacer que su aplicación
sea más pequeña. Aquí es donde Bueno, comenzamos con el App Bundle.
es la aplicación formato de publicación. Las aplicaciones
que lo han adoptado han visto un ahorro del 35%. Eso se compara con
un APK universal y eso es bastante. ¿Cómo conduce a tales
ahorros? Aquí está el gran idea, Google Play puede ayudar y
encargarse de entregar solo lo que se necesita en su nombre.
No es necesario enviar muchos de idiomas y recursos del
dispositivo. apoyamos tres corta dimensiones listas para usar,
idioma, densidades de pantalla y arquitectura. Todo esto es posible
gracias a los APK divididos, Agregamos en Android Lollipop. Los APK
divididos permiten múltiples APK estar en una aplicación. Se pueden
instalar en diferentes combinaciones, en diferentes dispositivos
y se pueden instalar todos de una vez o pieza por pieza.
Dado un paquete, Google Play Comienza poniendo todo lo que
es común en el APK base.

Estos son los archivos manue fest y dex.
Nosotros generar un APK MRIT diferente. Son
todos los dibujables que Habría tenido ese dispositivo y
densidad. Luego también generamos diferentes APK
divididos para cada nativo. arquitectura y generar una división
separada para cada idioma compatible con su aplicación al colocar
cada cadena en un APK diferente. En conjunto, llamamos a estas
configuraciones divididas o config. divisiones.
Cuando vamos a servir una aplicación para un dispositivo, sólo necesitamos servir
una porción.

Instalaremos el APK base, así como la división
de densidad, la arquitectura división y división del idioma inglés.
puede llegar a ser un poco más complicado que eso. Hablo
francés e inglés y tengo Especificé ambos idiomas para que
mi píxel no solo reciba el La densidad y la arquitectura correctas se
dividieron, pero los franceses y Divisiones del idioma inglés. Si me
mudo a Brasil y aprendo portugués, intentará descargar
la división de idiomas para todas las aplicaciones en mi teléfono.
Para dispositivos que no son compatibles Para ello, tendrán APK independientes
para API y densidad de pantalla.

Cada uno de estos contiene todos los
archivos necesarios. mi vieja galaxia lo ejecutará. Todos los idiomas están
incluidos en esos APK. Poniéndolo todo junto, la
imagen se ve así. Tú En realidad, no es necesario preocuparse
por todos los detalles de cómo se generan estos APK. Todo lo que tienes
que hacer es subir un paquete de aplicación único y seleccione las
cosas adecuadas para servir para cada dispositivo. En
resumen, el paquete de aplicaciones contiene todo, firma cada APK para entregarlo
a los dispositivos. Debido a que Play ahora firma los APK,
esto significa que debes sube tu clave de firma a Google
Play. Esto es parte de el programa llamado Firma de aplicaciones por Play.
¿Es esto seguro? La respuesta es, absolutamente. Como puedes imaginar,
Google toma esto muy en serio. Protegemos su clave en el mismo
almacenamiento que protegemos Claves propias de Google. Te beneficiarás
de nuestro propio viaje. inversiones. Hemos
estado charlando con desarrolladores que ya utilizan
el App Bundle sobre lo que como. Recientemente, llevamos a cabo
un taller con desarrolladores de India, tienen millones de instalaciones
activas y son muy sofisticados en cuanto a mantener pequeños
los tamaños de sus aplicaciones.

Mejora sus tasas de conversión.
Red Bus dice que es más
ágil. El cambio fue un proceso simple y estaban probando
con el paquete dentro una hora. Simplemente no son los desarrolladores
en la India, todos los los desarrolladores han cambiado y han
visto tamaños fantásticos ahorros. 56% de ahorro de tamaño
en comparación con un APK universal. Es difícil conseguir eso de incremental. Las aplicaciones
de Google están adoptando la paquete y producción y también
viendo fuertes ahorros. Google MapsMaps, Google News 27, reportan
agilización de sus proceso de liberación y notado No es experimental, esto
está listo.

Hay miles de aplicaciones– miles de paquetes de aplicaciones en
producción. Entonces, cuando adoptas el App
Bundle, no solo estás ganando ahorro de tamaño, hoy, se beneficiará
de la automática optimizaciones. Aquí hay otro. Hemos
agregado un nuevo Android plataforma al App Bundle llamado
nativo sin comprimir bibliotecas. Las bibliotecas nativas
deben descomprimirse del APK antes de que la plataforma pueda usarlos.
El usuario final termina con dos ejemplares de la biblioteca. Pueden
leerlo directamente desde el APK si se deja sin comprimir. Necesitará
dos versiones de tu aplicación. Si estás usando
el App Bundle, nos das tu bibliotecas y lo recreamos. Los ahorros
de tamaño que estamos viendo Hay alrededor de un 16% de reducción en el tamaño
y un 8% de reducción en la descarga. tamaño. Como expliqué, la aplicación
es más pequeña en el disco porque No es necesario hacer una copia. Es
más pequeño porque nuestro Los algoritmos de compresión funcionan
mejor en datos que no están ya comprimido. Nuestro socio obtuvo
ahorros del 22 % y del 16 % en su tamaño de descarga.

Y estos
ahorros se suman a los ahorros de tamaño que ya están
viendo. Con esta optimización, el tamaño
de la descarga es menor y más rápido. instalar y ocupa menos espacio
en el disco. Ahora, todavía queremos que usted mantenga
el control cuando estos Las optimizaciones deben enviarse
a sus usuarios. Sólo jugará aplicar optimizaciones que se han
creado con la versión de Gradle que introduce la optimización.
el sin comprimir Las bibliotecas nativas solo se aplicarán
a su aplicación si construye con Gradle 3.3. Ahora,
echemos un vistazo a cómo puedes crear, probar y publicar paquetes
de aplicaciones de Android. Puede compilar App Bundle en la versión
estable 3.2 de Android Estudio. Es muy similar a crear
un APK para la mayoría desarrolladores para que sea fácil
cambiar. Para quienes prefieren la línea de comando
o desean integrarse con sistemas de compilación automatizados, el
complemento Gradle para Android proporciona Tareas para construir paquetes.
Usarías la tarea de ensamblar. Con Android App Bundle, utiliza la
nueva tarea de paquete.

De manera similar a las tareas de ensamblaje,
puede crear sabores específicos. La tarea de paquete generará un paquete
de aplicación de Android con sabor. y tipo de construcción elegido. Se
llama paquete.aab. Queremos que las desarrolladoras conserven
el control sobre sus divisiones. Si necesita deshabilitar la
división, puede hacerlo usando el nuevo bloque de paquete, como se muestra
aquí. Android Studio y Gradle no son
solo formas de construir paquetes hoy. Son de código
abierto, otros ya lo son adoptándolos. Los juegos que usan Unity pueden
crear una aplicación para Android Paquetes también. Agregaron
soporte en la versión beta y Puedes unirte al programa beta ahora.
Entonces, ahora veamos cómo puedes
adaptar tus pruebas. Durante el fase de desarrollo, cuando necesita
iterar rápidamente, no lo hace Necesitas pasar por el paquete de aplicaciones.
Puedes construir a través de Estudio, mucho más rápido.

Antes de un lanzamiento,
es posible que desees probar los APK que se generarían a partir
del App Bundle. Esto es como tan fácil como crear una nueva configuración
de ejecución y seleccionar APK del paquete de aplicaciones. Studio, bajo
el capó, usa la misma herramienta. Play lo hace para que obtengamos
alta fidelidad. Cuando desee compartir los APK, generados
a partir del paquete de aplicaciones, puedes usarlo. Esto es lo que
Play y Gradle usan en sus Hood para generar APK. Es transparente
sobre cómo genera APK y puedes descargarlo
en el repositorio de GitHub ves aquí.

Genera
lo que llamamos Archivo de conjunto de APK que contendrá
todos los APK para todos los dispositivos que admite su aplicación.
Puedes compartir este archivo y Todavía uso la herramienta de paquete,
que simulará lo que hace Play. Como puedes imaginar, un conjunto de APK puede
llegar a ser bastante grande, así que si Si quieres compilarlo para un dispositivo
determinado, puedes hacerlo con especificación. Puede compartirlo
e instalarlo en los dispositivos.
Esto es lo que la línea común parece, para construir el archivo del conjunto
APK.

En este caso, cuando paquete de instructor para crear APK
solo para el dispositivo conectado. Si no tienes un dispositivo a
la mano, si lo estás generando desde un sistema CI, puede realizar la especificación
del dispositivo en este Formato JSON.
Si quieres un APK único, Puede construir un APK universal. Se puede
instalar en cualquier dispositivo. y es muy conveniente para compartir.
La mejor manera es pasar por la
pista de prueba interna en el consola. Puedes conseguir, bocado
a bocado, lo que tu usura hará. conseguir. Esto es similar a las pistas alfa y beta.
No hay demora entre el subir y estar disponible en el dispositivo.

Puede
crear una lista de correos electrónicos. Los evaluadores pueden seguir el
enlace y recibirán automáticamente la última
versión. Sabemos que para algunos de ustedes,
estas opciones de prueba no son ideal y vemos una brecha en
las pruebas con Android Studio y pistas. Estamos pensando mucho
en cómo cerrar esto. brecha.
Así que ahora has construido y probado paquetes, hablemos de una nueva vista.
En la consola de juego, Estamos empezando a mostrar una estimación
cuando pensamos en una aplicación.

Podría beneficiarse del App
Bundle. Calcularemos lo que podrías ahorrar si cambias.
Una vez que elijas cambiar, Administre su lanzamiento tal como lo
hizo con los APK. Simplemente cree una nueva versión y coloque el paquete
de aplicaciones en el mismo ubicación. Para facilitar tu migración,
puedes cargar APK en su línea de producción. Cuando
haces esto, Play no funciona. para reasignar el APK. Hicimos
esto para que puedas sentir sentir con confianza el App Bundle
con una pequeña cantidad de los usuarios primero.
Una vez que lo hayas subido, revisa tu lanzamiento, lo implementas.
Y eso es.

No puedo Insista esto lo suficiente, no hay ningún
APK múltiple con el que lidiar. Jugar La consola ha creado todos los APK para
los dispositivos compatibles con tú. Ahora
que has subido tu App Bundle y Play han hecho este
trabajo pesado, sería bueno para tener una visión general de lo que Play
ha hecho por usted. Hemos construido un nueva herramienta llamada explorador de paquetes,
que le permite navegar por su paquetes subidos. En la
primera pantalla del paquete. Explorer, verás el ahorro
de tamaño. esto va a ser diferente, dispositivo por dispositivo, por
lo que calculamos esto usando un configuración popular. Si hace clic
en ver dispositivos, puede vea qué dispositivos hay en cada depósito.
Alternativamente, puede buscar dispositivos
compatibles por nombre para descargar el conjunto de APK generados
que se entregan a ese dispositivo concreto.

Esto es útil
cuando tienes un error. informe para que pueda obtener los APK
exactos que Play le ha entregado. No nos hemos olvidado de todos los
que utilizan nuestra publicación. APK, está disponible mediante API y las herramientas
de automatización y CI están adoptando el paquete. Encontrarás
toda la documentación como estas URL. [No audio]. Puedes
reducir el tamaño de tu aplicación. Algunas funciones pueden ser utilizadas
por el 10% de sus usuarios, para evitar tener espacio en disco para una
función que no utilizan, usted puede optar por retractarlo. Se pueden
utilizar funciones dinámicas o puedes aplazar su instalación
para más adelante cuando la aplicación va [no audio]. Evalúan
el tamaño de la aplicación impacto para garantizar que el beneficio
de la función valga la pena el aumento de tamaño. Las características
dinámicas significan que pueden aumentar él. Las
funciones dinámicas ayudan a Facebook con su estrategia de alto nivel.
Son capaces de entregar funciones avanzadas solo para dispositivos
compatibles y eliminar características alarmantes que no se utilizan
con frecuencia para evitar adoptar espacio en ese dispositivo para siempre.
Facebook nos ha dicho que Las funciones dinámicas funcionan bien
cuando se trabaja en un nuevo característica.

Pueden tener un
equipo separado de ingenieros. trabajando en ello y pueden agregar la aplicación
y agregarla a la aplicación sin aumentar el tamaño de la aplicación base en
el momento de la instalación. Éstos son algunos de los ejemplos de características
dinámicas. Ellos están en producción. Por ejemplo, el escaneo
de tarjetas es una función que solo un pequeño porcentaje de usuarios lo está
utilizando. Se evita tardar 2 megabytes. Otro es la comunicación
en tiempo real. Solo usuarios con dispositivos que puedan
soportarlos y realmente quieran para usarlos es necesario descargarlo.
¿Cómo podría ser esa experiencia? como para un usuario? Tomemos un
ejemplo sencillo. Imagina eso Tienes una aplicación de recetas y
quieres que sea pequeña. Mientras A todos sus usuarios les gusta buscar
recetas, solo a una pequeña A una fracción de ellos les gusta
agregar recetas y notas que esto Ocupa un tamaño significativo en
su aplicación.

Puedes elegir divida estas características en su
propio módulo y sirva solo cuando sea necesario. Podemos ver cómo
se ve para el usuario aquí. La aplicación se abre y luego el usuario
agrega una receta. La aplicación Luego solicitó que se instalara
el módulo. Se descarga con progreso visible para el usuario y está listo
para ser utilizado después de un pocos segundos. ¿Qué
partes de tus aplicaciones podrían ¿Son buenos candidatos para
estallar? Si solo un pequeño fracción de sus usuarios, utilice esta
función, podría ser una buena candidato.

Y finalmente, considere si
los usuarios pueden esperar unos cuantos segundos antes de descargar y usar
esa función. Si está interesado en modularizar
su aplicación, le Os animo a mirar los artículos.
Ahora que hemos explicado cómo funcionan
las funciones dinámicas, veamos cómo crearlos. Para crear un módulo
dinámico en Android 3.0, utilice el asistente. Elija el módulo
de funciones dinámicas. Escribir el nombre de su módulo y Android
Studio descargará un nuevo característica para usted. En el
fondo, esto es lo que hace Studio. Se agrega un identificador dividido. En
este caso, lo llamaremos agregar recipiente. Así lo reconoce
la plataforma Android aunque este APK tiene el mismo nombre
de paquete, es diferente Nombre del módulo. Se
agrega una nueva etiqueta para aspectos de distribución. Lee propiedades
de los módulos de tu aplicación. A
continuación, usted declara que esto es un módulo bajo demanda, lo que
significa que solo se entregará a los dispositivos de los usuarios cuando
lo solicite.

Tenga en cuenta que bajo demanda Los módulos solo son compatibles desde
Android L, por lo que debe especificar qué debe hacer Play cuando genera
los APK anteriores a L. Este se está configurando usando la etiqueta de fusión.
Aquí hay un ejemplo con nuestra aplicación
de recetas. Tenemos dos dinámicas. características. Tiene igual verdadero
y el módulo es fusible igual a falso. Puedes ver que Play solo lo agregará
en el APK anterior a L. En el módulo dinámico, puede ver un nuevo complemento
de Gradle que se está ejecutando. usado. También tienes que añadir el módulo
base para acceder. funcionalidad del módulo base.
Mirando la construcción Gradle, el único cambio es declarar
todos los módulos dinámicos. Gradle pondrá a su disposición
los recursos almacenados. Ahora que hemos creado nuestros
módulos bajo demanda, escribamos el código para descargarlos.
Para interactuar con el Play store, tenemos que usar la API de instalación
dividida, que es parte de la biblioteca principal de Play.

Esta es
una biblioteca que se comunica con la tienda de juegos. Play Store se comunica
con los servidores de Play. La API está estructurada utilizando
el mismo marco de tareas de Google. Servicios de juego. Las instalaciones corren a cargo
del administrador del split. Tú Construya una solicitud con todos los
módulos que desea descargar y Instalar los splits necesarios para
los módulos solicitados. Para módulos grandes, necesitará para obtener la confirmación del usuario.
Tendrás que hacer esto siempre que una aplicación solicita más de 10 megabytes. Puede escuchar actualizaciones
y mostrar esto progreso a los usuarios.

Aquí mostramos
la barra de progreso de la descarga. La opción alternativa es utilizar
la API de instalación diferida. Estos se instalarán en un momento
conveniente para el usuario, generalmente cuando no están usando el dispositivo
y están conectados a WiFi y cargando. Debido
a esto, le permitimos instale hasta 100 megabytes y requiera
la confirmación del usuario. Le permite administrar sus módulos
bajo demanda. Puede desinstale los módulos que la
aplicación ya no requiere. Entonces, al instalar un módulo bajo
demanda, la aplicación no necesita reiniciarse. El código está disponible
inmediatamente y sus recursos y los activos están disponibles una vez
que actualiza el objeto de contenido.

En Android L y M, es necesario reiniciarlo
por completo. Incluimos un biblioteca dividida que tiene divisiones para
L y M hasta que la aplicación se ejecuta en segundo plano y podremos instalarlo
correctamente. Si usted es familiarizado con él, configurará la compatibilidad
dividida de una manera muy manera similar. Puedes
usar la división aplicación como su aplicación predeterminada
o simplemente puede extender. Y si ninguna de estas opciones
te conviene, puedes elegir para anular el contexto en su aplicación
e invocar la división compatible al instalar.
Ahora, hablemos de versionado. Cuando publicas una fecha
en tu aplicación, Play ilwill actualice el módulo base y cualquier módulo
bajo demanda para que la versión de sus módulos están siempre sincronizados.
Los socios nos dicen que esto es algo que les gusta mucho de este
modelo. Ahora hablemos del paso final aquí,
ayudar a los usuarios a actualizar. a la última y mejor versión
de su aplicación.

Sabes que Play ofrece funcionalidad de actualización
automática y muchos usuarios lo hacen tener activadas las actualizaciones automáticas.
En algunos mercados, no es Es poco común tenerlo encendido pero
su dispositivo no cumple con los requisitos. Por ejemplo, es posible
que no se conecten a WiFi. Soy Me complace compartir que estamos lanzando
una nueva función. Puedes llamar a esto API para determinar primero si hay una actualización
disponible y luego si por lo tanto, puede compartir un mensaje
con sus usuarios. El flujo es Diseñado para casos de uso críticos inmediatos,
como la privacidad del usuario. o errores que afectan los ingresos. Es una
experiencia de pantalla completa donde Se espera que el usuario espere a que se
aplique la actualización. Nosotros reinicie la aplicación por usted.
Algunos de ustedes han creado flujos similares
para ustedes mismos. Pero esto es un método estandarizado que
puedes utilizar con muy poco esfuerzo.
En lugar de ese inmediato actualización, también puede
crear una actualización flexible que no es necesario aplicarlo inmediatamente.
lo realmente genial Lo bueno de esta API es que personalizas
completamente la actualización fluya para que se sienta como parte
de su aplicación.

Puedes elegir empujar a los usuarios, como lo hace
Google Chrome en este ejemplo. El la descarga ocurre en segundo plano
para que el usuario pueda mantener usando la aplicación. La actualización
está completa, depende de usted y su aplicación, para decidir cómo
solicitar al usuario que reinicie. O simplemente puedes esperar hasta que
la aplicación pase a segundo plano. Google Chrome está probando esto
ahora y lo invitamos temprano acceda a socios para comenzar a probar esto
con nosotros también. Hablar con su gerente si está interesado.
Echemos un vistazo al código que permite
esa flexibilidad en la aplicación. actualizar para trabajar. Primero, puedes solicitar
una instancia de aplicación. gestor de actualizaciones. Y luego solicite la
información de actualización de la aplicación. Este resultado contendrá el estado de
disponibilidad de la actualización. Si hay una actualización disponible y la
actualización está permitida, el La actualización de la aplicación devuelta contiene
una intención de iniciar el flujo.

Si se permite que la aplicación se
inicie, extraerá este pendiente intención y comenzarlo. Esto iniciará
la descarga y instalación. Puede
monitorear el estado de un actualice registrando un oyente para recibir
actualizaciones de estado. Cuando el La descarga está completa, puede optar
por instalarla directamente o diferir para instalarlo. El reinicio
ocurre cuando se completa Se llama actualización. Entonces,
para resumir esta nueva API, Es importante asegurarse de que sus usuarios
obtengan la última actualización. Y Puedes hacer que eso suceda siguiendo
algunos de estos mejores prácticas aquí en la
pantalla y también integrando mediante nuestra API de actualizaciones en la aplicación.
La API está disponible para cualquier aplicación y para que pueda comenzar con él,
en paralelo al cambio con el paquete de aplicaciones.
Y eso es. ahora tenemos cubrimos cómo hacer que sus aplicaciones sean
más pequeñas y crear dinámicas características y cómo puede asegurarse de
que sus usuarios permanezcan en el última versión de su aplicación.
Si quieres chatear, puedes Encuéntranos en horario de oficina.

Si
quieres compartir sobre lo que hemos hablado, la publicación de este
enlace es un gran lugar para comenzar. Disfruta el resto de tu
dia. Gracias. [Aplausos]
Todos, la próxima sesión, en esta sala, comienza puntualmente, a
las 2:50. Gracias. 2:50. Gracias. 2:50. Gracias. 2:50.
Gracias. 2:50. Gracias. 2:50. Gracias. 2:50.
Gracias. 2:50. Gracias. 2:50.
Gracias. 2:50. Gracias. 2:50.
Gracias. 2:50. Gracias. 2:50.
Gracias. 2:50. Gracias. 2:50.
Gracias. 2:50. Gracias. 2:50.
Gracias. 2:50. Gracias. 2:50.
Gracias. 2:50. Gracias. 2:50.
Gracias. 2:50. Gracias. 2:50.
Gracias. 2:50. Gracias. Buenas
tardes a todos. Nuestro programa se reanudará en tres
minutos. Te recordamos, como Cortesía a los presentadores, por favor silencien
todos los dispositivos móviles. Agradecer tú. Gracias. Gracias.
Gracias. Gracias.
Gracias. Gracias.
Gracias. Gracias.
Gracias. Gracias.
Gracias. Gracias.
Gracias. Gracias.
Gracias. Gracias.
Gracias. Gracias.
Gracias. Gracias.
Gracias. Gracias.
Hola, mi nombre es Kodlee.
Y yo soy Rasekh. aquí para hablar para informarle sobre las novedades sobre el
desarrollador de aplicaciones y Android Auto. Estamos entusiasmados con el espacio
automotriz en este momento, conectividad, electrificación. Los coches
se están volviendo completos. Computadoras sobre ruedas. Tienen cámaras,
pantallas de todas las formas. y tamaños por todas partes.
Android Auto es un esfuerzo de Google y nuestros socios
automotrices para unirlos y brindar una experiencia segura a los conductores
de todo el mundo.

Por supuesto, Es más fácil decirlo que hacerlo. Muchos
tipos de entrada diferentes, desde Pantallas táctiles a paneles táctiles, muchas
formas y tamaños de pantalla diferentes. y resoluciones. Hoy en día, puedes ver esa
visión en funcionamiento en cualquier Los conductores de coches compatibles con
Android Auto tienen acceso a sus aplicaciones favoritas directamente desde la pantalla
de su automóvil y sus desarrolladores cree su aplicación una vez sin preocuparse
por diferentes marcas y modelos. Hoy hablaremos de dos
de los más importantes. categorías de aplicaciones, mesinging y medios. Primero
es mensajería. Ahí es donde
entró en juego CarExtender. CarExtender permitió que las aplicaciones
de mensajería proporcionaran Detalles y una forma de responder
a conversaciones en Android Auto. Pero con Android N, las aplicaciones podrían
estilizar sus notificaciones con Estilo de mensajería. Es un gran paso
adelante para CarExtender, ya que permite que las aplicaciones de mensajería
lleven la conversación al notificación.

No sólo proporciona una interfaz
de usuario más agradable, sino que proporciona posibilidades como
aplicar y gustar. Android Auto ahora es totalmente compatible
con el uso de MessagingStyle sin necesidad de CarExtender.
Esto significa Android Auto y el asistente permiten mensajería
grupal. Para MessagingStyle, las aplicaciones no sólo obtienen
una experiencia de usuario más rica y el beneficio del soporte automotriz.
Entonces, veamos cómo interactúa
Android Auto con esto, comenzando en el lado de la aplicación de mensajería.
Desde el punto de vista de Android Auto, Las aplicaciones de mensajería tienen tres funciones
principales.

Notificar a los usuarios de mensajes, marcándolos como leídos y respondiendo.
Las aplicaciones pueden Implementar lectura y respuesta
con servicios. Estos servicios se puede activar internamente con intents o externamente con intents
pendientes. Notificar es se realiza a través de una notificación de
Android y la información del mensaje se proporcionado con MessagingStyle.
la marca es leer y responder están envueltos en
intenciones. Nótese aquí que el La acción de respuesta tiene una entrada remota
agregada, que actúa como entrada. campo para la respuesta. Y esa
es la aplicación de mensajería. arquitectura. Pasando al otro
lado de la notificación, Podemos ver cómo Android Auto
aprovecha estos objetos. Ellos publicará una notificación en el automóvil
y, una vez que se toque, se leerá en voz alta los mensajes. La nota se
lee pendiente. El usuario ha dado la elección de responder y, si se
toma, una transcripción de esa La respuesta se establece en esa entrada remota.
La respuesta pendiente de intención.

Luego es despedido.
Y ese es todo Android Flujo automático, así que veamos cómo
podemos poner eso en código. Primero, la aplicación debe declarar compatibilidad
con Android Auto. Para hacer eso, necesita crear un nuevo archivo
XML vinculado en Android manifiesto. Este archivo dice que
tiene notificaciones que Android Auto debería echarle un vistazo. Tenga
en cuenta que para enviar mensajes aplicaciones que admiten SMS, es
necesario agregar esto. Y ahora Android Auto está echando un vistazo a nuestros
mensajes, podemos construir el estilo de mensajería. Realmente no
podemos tener una conversación. sin personas por lo que tenemos que agregar
el usuario del dispositivo. Nosotros crear un nuevo objeto persona. La persona
se utiliza para configurar las cosas. como el nombre del usuario, su icono
y clave única. Entonces, creamos usuario de este dispositivo y creamos
el MessagingStyle con él.

Nosotros Podemos agregar nuestra información
de conversación. Soy de Seattle y me encanta esquiar, así
que lo estoy preparando para esquiar. grupo. Debido a que voy a llevar
a varios amigos, este es un conversación grupal, por lo que la aplicación
de mensajería debe configurarla como semejante. Tenga en cuenta aquí
el título de la conversación y si La conversación en grupo se puede establecer
o no de forma independiente. Esto es nuevo en Android P y ha sido adaptado
en la versión compatible. biblioteca. Finalmente
podemos sumar todos los mensajes en esta conversación en el
orden en que fueron recibidos. En este caso, mi amigo quiere coordinar
el desayuno, así que hay el texto, la marca de tiempo y el remitente.
Con esta conversación configurado, es hora de agregar las acciones.
Para la acción de respuesta, Nosotros fundamentamos una construcción
de acción y establecemos la semántica. acción a respuesta de acción semántica. Eso también
debe decirle al sistema operativo que Activar la respuesta pendiente de intención no mostrará
ninguna interfaz de usuario adicional.

Este es especialmente importante
en Android Auto porque no quieren distraer a los usuarios. Se proporciona
la acción de respuesta. con esa entrada remota de la que
hablé antes. En la marca como lado de lectura, se hace de la misma manera.
Está configurado como semántico. acción, marcamos como leído y le decimos
al SO que pendiente de esa intención no mostrará una interfaz de usuario adicional. La
acción de marcar como leído no necesita una entrada remota. Así
que esas son las tres piezas, las Ahora se puede crear una notificación.
Como referencia, aquí están los tres elementos que creamos. MessagingStyle,
que contiene nuestro conversación, responder y marcar como acción
de lectura. para construir un notificación, se proporciona un texto
estándar y configuramos el estilo de mensajería.

Podemos sumar nuestras
acciones. Aquí es donde el La aplicación de mensajería tiene algunas opciones.
La respuesta es regular y visible. acción y la marca como leída se agrega
como invisible. uno puede agregar ambos como visibles o invisibles. Esto
cambia la forma en que aparece en la interfaz de usuario móvil. En Android Auto,
las acciones nunca se muestran, pero Puede leer acciones visibles e invisibles.
La aplicación de mensajería puede publicar
la notificación y ahora tenemos Desayuno planeado en el camino y nuestro
viaje de esquí está en marcha. Y ahora que nos hemos coordinado
con todos, encontremos algo que escuchar. Obtener el acceso
del conductor a su contenido debe estar al frente y al centro. Voy
a hablar de nuevas funciones. para mejorar la usabilidad de las aplicaciones
multimedia. queremos hacerlo más agradable visualmente y permite
resultados de búsqueda.

Vamos repasar la arquitectura que tiene una
aplicación cuando se comunica con Android Auto. Lo primero que una aplicación
multimedia es un medio servicio de navegador. Proporciona un árbol
de elementos jugables y navegables. elementos. Los elementos navegables son básicamente
cosas para organizar la aplicación. contenido en lugar de devolver una lista
gigante de elementos reproducibles. Implementan el método ownload
Children, que agrega el árbol. Aquí en nuestra primera llamada,
volvería a casa, recientemente reproducidos, recomendados y listas de reproducción.
Dado que esto se está ejecutando un automóvil, recomendamos que las aplicaciones
multimedia solo proporcionen dos niveles en el árbol para no distraer a los conductores.
Ahora, una vez que un usuario ha
elegido algo reproducible del árbol de navegación, el servicio de sesión multimedia
se utiliza para reproducir música y proporcionar metadatos y controles.
Por ejemplo, nuestro La aplicación multimedia admite reproducción/pausa, reproducción
hacia adelante y salto hacia atrás.

También existe la posibilidad de proporcionar
su propia personalización. acciones, tal vez algo así como un salto
de 30 segundos. Obviamente, nosotros queremos alejar al usuario de tocar
o hacer cosas, por lo que trae al asistente. Podría decir
algo como "Oye, Google". jugar mis atascos de esquí. Realizan
reconocimiento de voz y solicitud. que reproduzca la consulta y la música comience
a reproducirse. Hoy vamos a dar un paso
más. te estamos dando la capacidad de las aplicaciones multimedia para
implementar una función adicional función, en búsqueda, y una vez que la música
ha comenzado a reproducirse desde un Consulta del Asistente de Google, pueden proporcionar
resultados adicionales.

Él proporcionó un viaje de esquí de este
año, así como del año pasado. Esto debería resultarte bastante
familiar. Esta es la búsqueda método. Toma la cadena de consulta,
un paquete de extras y un objeto de resultado que la aplicación
completa y envía de vuelta Android Auto. Las aplicaciones deberían
devolver una lista vacía si obtienen una consulta que no admiten. Segundo,
para consultas. Eso no puede ser respondido, se
hunde cruelmente, hazles saber. no enviar nada de vuelta de inmediato. Las aplicaciones
pueden hacer trabajo extra antes de enviar los resultados a
Android Auto. Finalmente, cuando los resultados estén
listos, podrán enviar el resultado. y se notificará el objeto
de resultado y Android Auto y mostrar los resultados en pantalla. Todos
los fragmentos de código provienen de el reproductor de música universal, una aplicación
multimedia de código abierto publicada en GitHub.

Se puede clonar, compilar
y utilizar como un gran haga referencia a cómo crear su propia aplicación
multimedia. Entonces, nuestra aplicación multimedia devuelve una lista
de elementos en la consulta de atascos de esquí. Devuelve dos listas de reproducción
y un álbum. Podría ser bueno Android Auto podría agrupar esos elementos.
Afortunadamente, estamos presentando una manera de hacerlo. Aquí
hay una función de ejemplo donde su aplicación multimedia podría utilizar desde
una representación interna de un elemento multimedia en la compatibilidad de elemento
multimedia. Podemos anotar elementos con una categoría extra y Android
Auto agrupará cualquier elementos adyacentes con la misma categoría.
Para los dos viajes de esquí listas de reproducción, podemos anotar con
listas de reproducción y Android Auto agrégalos por ti.

También
estamos agregando algunos anotaciones adicionales sobre elementos multimedia
que serían realmente útil en nuestro viaje. Podría estar
dirigiéndome a las montañas con mi familia, podría preocuparme por
la aparición de una canción contenido explícito. Podemos decir
que esto tiene contenido exlícito. y Android Auto puede mostrarlo en la interfaz
de usuario. Puede que no lo haya hecho gran ancho de banda, me encantaría
saber si se han descargado o tal vez no quiero grabar mis datos en
la música que estoy reproduciendo. También podemos anotar si los
elementos multimedia tienen o no han sido descargados y ya están en
el dispositivo.

Excelente. Parece que el viaje de esquí
2018 está descargado, no tiene cualquier contenido explícito, una
gran elección para mi viaje al montañas. Hay
una función más que actualización necesaria, se llama al
servicio de exploración de medios cuando La aplicación multimedia se conecta por primera
vez mediante Android Auto. Para poder búsqueda, necesitarás agregar un par
de extras para permitir que Android Auto sabrá que admite esas funciones.
Como mencioné, estamos La introducción del estilo de consentimiento
y Android Auto será interpretándolo de una manera mucho
más agradable visualmente.

Carpetas se interpretarán como listas. Pero
para elementos jugables, cosas como canciones, álbumes o listas
de reproducción, mostraremos ahora como cuadrículas. La mayoría de
estos artículos tienen más riqueza Contenido que los usuarios pueden identificar
al verlo mucho más fácilmente que lectura y mucho más seguro cuando
estás en el coche. Hay ocasiones en las que una lista es mejor
que una cuadrícula. Para Por ejemplo, en una aplicación de podcast,
cada uno de los podcasts individuales tener arte individual que sea mucho más
representativo visualmente mientras que los episodios, en cambio,
tendrían todos el mismo arte pero diferentes títulos de episodios,
duraciones y estados, y sería Sería mucho mejor mostrarlos como
listas. En el función ongetroute, pueden decir,
prefiero que sean grillas. Mis elementos jugables serán listas.
O viceversa. tienen lleno control sobre cómo estamos ralentizando
los elementos.

Ya mencioné el reproductor
multimedia universal. Yo solo Quiero reiterar que es una aplicación multimedia
excelente y completa. Él le brinda la implementación de una aplicación
multimedia que realmente reproduce música y es para Android Auto, así
como para Wear y Android TV. Te animo a que consultes el controlador
multimedia de Android, Otro código abierto en GitHub. Se
conectará a tu aplicación. sesión y le muestra información
de forma clara y semántica. formato. Si utiliza una
lista blanca, probablemente Sería una buena idea agregar la lista
blanca. Para resumir, hemos mostrado ejemplos
de código para MessagingStyle, acciones, adjuntando nuevos extras para los
metadatos de elementos multimedia y declarando soporte para exploración y búsqueda
de contenido. Que bien. Esperamos ver
todos sus mensajes y Aplicaciones multimedia en el coche. Rasekh
y yo estaremos disponibles mañana. mañana en horario de oficina para
resolver cualquier duda que tengas sobre Android Auto.
Muchas gracias por mirando. [Aplausos]
Hola a todos. Gracias por viniendo y viendo mi sesión,
que será en Android pantallas grandes. Sólo esperando a que
explote arriba. Fresco. Como todos sabemos, Android
ha evolucionado desde sólo siendo una plataforma telefónica.

Está
disponible en relojes y automóviles, como acabamos de escuchar. Escritorio,
teléfonos y específicamente el El espacio móvil ya ha cambiado drásticamente.
Veamos en qué funciona tu
móvil hoy. Empezando por el teléfono, es para lo que todos
nos desarrollamos principalmente. A un par de teclas sobre la plataforma,
retrato primero, toque primero y pantalla completa primero. Muchas aplicaciones
bloquean la rotación. Algunos usuarios use ventanas múltiples o estilos
y cosas así. Mayoría de sus usuarios lo utilizan con pantallas
táctiles normales y en su totalidad pantalla. Pasando a las tabletas.

Ambas
orientaciones son ciudadanos de primera clase. Si bloqueas
un retrato, los usuarios aún pueden use su aplicación en el paisaje vertical.
Las pantallas más grandes sí Trae desafíos, en cuanto a diseño
y la capacidad de hacer diferentes cosas y aprovechar más el
inmueble y permitir que sus usuarios hagan las cosas más rápido.
El medio diferente trae una enfoque diferente sobre para qué se utilizarán
las aplicaciones y el contenido aplicaciones o aplicaciones de consumo de medios,
aplicaciones de productividad, cosas que Realmente puede aprovechar la pantalla
más grande. Y luego pasamos a las plataformas
de escritorio. Tú sabes, tenemos Chromeless, tenemos
OEM. Además, Android ahora ofrece
la posibilidad de tomar ventaja de tener pantallas externas.
Incluso si está funcionando en un teléfono, podría
mostrarse a un externo monitor.

Aquí es donde entra
la mayor diferencia. donde el paisaje es primero, todos
estos entornos tienen algunos Una especie de ventana cambia de tamaño y tiene
una nueva entrada de primera clase. métodos como el teclado, el mouse
y los track pads que cambian con el dispositivo o se conectará.
Entonces, ¿en qué te centras
cuando piensas en cómo lleva tus aplicaciones a todas estas
plataformas y ten un buen usuario ¿experiencia? El número uno es el
diseño. De nuevo, si realmente has Me he centrado en los teléfonos, la mayoría
de tus diseños son muy basado en retratos y en
pantallas más pequeñas. Ventana La gestión es probablemente el lugar
más importante donde vemos problemas con las aplicaciones de los socios, cómo
lidiar con el cambio de tamaño, consideración de ventanas múltiples o problemas
que nunca hemos tenido que centrarse en antes.
vamos a hablar sobre el herramientas disponibles en Google para
garantizar que puedas desarrollar para estas plataformas y tráigalo
a su ciclo real.

Entonces, hablando de diseño, levanten
la mano si tienen diseños. ¿Para pantallas grandes o tabletas?
Mucha más gente que yo. esperado. Fresco. Entonces, ya sabes, lo
más importante es simplemente pensar nuevamente sobre las pantallas más grandes.
Durante los últimos años, hemos visto aparecer muchas más aplicaciones
que podrían bloquearse en modo vertical, lo cual tiene sentido. Con
un número cada vez mayor de plataformas que ejecutan su
APK, pero muestran un diferente factor de forma o plataforma,
es hora de comenzar pensando nuevamente en cómo llevar
la mejor experiencia a esas áreas. Un
muy mal ejemplo de diseño. es Google Play Music, que siempre
es genial. un par de cosas sobre esto que no es genial, diseño
súper estirado, toneladas de espacio que podría usarse para descripciones.
la clave mas grande aquí, sin embargo, no hay divisores de
línea, lo cual en un teléfono es bien porque mira en qué menú de opciones
estás haciendo clic.

Cuando lo llevas a un diseño horizontal
más grande, es difícil sigue las líneas y mira en qué elemento
estás presionando las opciones menú para.
Un socio externo es uno Pasar. Es su lista estándar de
elementos que profundizará en. Cuando pasas a una pantalla más
grande, realmente tardan La ventaja de que el inmueble
va a ser casi como un Diseño de tres paneles, que permite al usuario
obtener cualquier contenido. necesitan con muchos menos clics y mucho
más rápido. Además, siendo capaz de mostrar más información
al mismo tiempo. Entonces, volver al mismo punto
es, nuevamente, construir diseños para ambas orientaciones
y hay un par de teclas grandes para esto. Una vez más, no todas
las plataformas son verticales. A muchos entornos de escritorio, si
estás creando para retrato, vas a tener una experiencia de usuario
bastante mala cuando quiera para usar su aplicación en pantalla completa
o en la mitad superior de la pantalla.

Además de eso, las capacidades de
cambio de tamaño permiten al usuario haga que su aplicación tenga cualquier tamaño,
orientación o relación de pantalla que ellos realmente quieren hacerlo. Entonces, realmente
quieres permitir que el usuario realmente deciden cómo quieren usar
tu aplicación. Volviendo principalmente a las plataformas
de escritorio es el diseño para medios distintos al táctil.
Tenga en cuenta cómo su La aplicación funciona con un mouse o
un lápiz óptico. Los patrones UX son diferente para el tacto que para
el no tacto. Cosas como Hacer clic con el botón derecho es diferente
a lo que estamos acostumbrados. pulsación larga. Mientras que cuando haces
clic derecho en un escritorio, estás normalmente esperando un menú contextual
emergente. Entonces, tomando el Es hora de pensar realmente en cómo funciona
tu aplicación para los diferentes Consideraciones de experiencia
de usuario.

El otro gran problema que notamos es acciones de desplazamiento. En entornos
web o de escritorio con la ratón, espera algún tipo de retroalimentación
cuando mueve el Pase el mouse sobre un elemento de acción
para informarle que hay algo que puede hacer allí, ya sea que se
pueda hacer clic o arrastrar. hay algunos comentarios. Yo mismo, incluso si uso
la aplicación en un teléfono, En términos generales, Google Drive es
un buen ejemplo de esto, Android en Chrome OS, me perderé acciones que
realmente puedo realizar porque Simplemente en esta plataforma, espero
acciones de desplazamiento. Voy a repasar dos API simples.
Hay muchas API que ayudar a manejar muchos de estos métodos
de entrada y cosas como el mouse desplazamiento y cosas y habrá
recursos cuando el las diapositivas se publican.
Hacer clic derecho, que es uno de los bloques de funciones, es súper
fácil. Asegúrate de que sean ex planteando cualquier comportamiento que tengas
al presionar prolongadamente.

De nuevo, también con suerte, considerando cualquier tipo
de cambios de UX que deba realizar. Y configurar una escucha flotante para
observar el puntero del usuario. flotando sobre el artículo y afuera. Nuevamente,
este es realmente el El más grande que vemos que conducirá
a un mal funcionamiento o realmente te da la sensación nativa
del escritorio o incluso una especie de sensación nativa de pantalla grande. En
términos de flotación, la mayoría de Nuestros componentes nativos manejan
esto. El contraste y el cambio. puede no ser suficiente para usted o
sus usuarios o especialmente accesibilidad cosas así. Aunque
al final del día, Sabes cómo tus usuarios usan la aplicación
y conoces el producto.

Ya sabes, tómate un tiempo y usa tu aplicación
en diferentes plataformas y piense en cómo esperaría que se comportara
la aplicación. Puede que no Es necesario centrarse en la entrada del
ratón o del teclado. Donde un La aplicación de productividad
aprovechará la pantalla. bienes raíces y encontrar una manera para
que los usuarios hagan lo que quieran. Hablando de gestión de ventanas.

Esta
es el área más grande que vemos. desafíos. Me encanta la rotación
porque veo tantas aplicaciones que bloquear en retrato, lo cual es
completamente comprensible pero realmente muestra dónde cae
la experiencia. Si lo haces bloquear retrato en Chrome OS, así
es como se verá su aplicación. Obtendrás estas barras súper negras
en el costado y será un desperdicio pantalla de bienes raíces. Da un
no nativo [sin audio]. Ahora bien, ¿por qué huimos del
manejo de la configuración? cambios porque siempre han sido bastante
difíciles de abordar con. Los cambios de configuración son
más importantes que nunca. Cambiar el tamaño y las ventanas múltiples
trae muchas configuraciones nuevas cambiar paradigmas y desafíos. Chrome
OS es probablemente uno de los La más compleja de las estrategias
de cambio de tamaño porque no La configuración del disparador cambia
con bastante frecuencia.

Conozco algunos de las otras plataformas de escritorio
no causan tantos cambios de configuración. Además de
eso, con pantallas más grandes, Se utilizará ventana múltiple. mucho más frecuentemente.
Esto es algo rápido sobre cómo Cambiar el tamaño en Chrome OS funciona.
Cada vez que una de esas etiquetas cambios, está pasando por una completa
destrucción y reconstrucción. proceso. Entonces puedes imaginar
que esto puede desencadenarse. sustancialmente más rápido y sustancialmente más a menudo que en un
teléfono. Jetpack ayuda con esto. Cosas
como ViewModel y ser poder construir tus propios
componentes te permite tomar Tu lógica de negocio en tu actividad,
cualquier cosa que estés haciendo.

Para guardar el estado para que su actividad destruya
y el proceso de reconstrucción sea realmente rápido. Tu
aplicación no siempre estará disponible enfocar. Nuevamente, esto no es nuevo.
Con Android N, trajimos multi-ventana. Conozco a la mayoría de nosotros
que trabajamos con un monitor grande. tienes varias cosas a la vez
y debes asegurarte de que su contenido es visible y reproducible.
Así que asegúrate de que todavía estás mostrando mensajes o su contenido continúa
reproduciéndose. Aprovecha las funciones. Pantallas
más grandes y externas. Los monitores ofrecen nuevas
posibilidades. Uno de los cosas que hemos visto hacer algunas de
las aplicaciones, que realmente son traer una mejor experiencia, está permitiendo:
redactar correos electrónicos ventanas o nuevos documentos que se muestran
en diferentes tareas para que El usuario puede ver su correo electrónico, además
de este nuevo correo electrónico que está creando.

En una ventana diferente.
Algo que lanzamos bastante Hace un poco, pero ahora es mucho
más arrastrar y soltar. Una vez más, específicamente en estas plataformas
de escritorio, los usuarios esperan resistencia. y caer para ser una cosa. Entonces,
piensa si arrastrar y soltar tiene sentido en tu aplicación
y cómo puedes traerla a estas plataformas. Y luego
no es realmente ventana gestión, pero diferentes características
que son algo nuevas para Estos ecosistemas tienen diferentes capacidades
de información y específicamente, un mayor uso del
lápiz óptico. lo mas grande Lo que hemos visto que a los usuarios les ha
encantado es la posibilidad de tener atajos de teclado y navegación con el
teclado, de modo que si hay cosas que usan con frecuencia, pueden
hacer las cosas más rápido, entrar y fuera de la aplicación y hazlo
lo más rápido posible. Entonces, esto es genial y todo, pero
¿cómo construimos realmente para ¿este? Pasando a las herramientas,
ya sabes, sería horrible si Vine aquí y hablé de que deberías
hacer todas estas cosas.

Sin embargo, no existen herramientas para
hacer esto posible. La mayoría de dispositivos de herramientas que hacemos; los
ejemplos de herramientas que tenemos son sobre Chrome OS. A, es nuestra
plataforma y, B, es la plataforma que tenemos. La mayoría de los dispositivos
se envían con un teclado en la pista. Algunos no tienen pantalla táctil.
Entonces, es lo mejor de todo. una plataforma para probar. Estamos trabajando
para traer algunos integración en pantallas más
grandes en Chrome OS. Hilas Las adiciones llegarán pronto. Es mi trabajo,
una vez que este evento termine, para terminar esto. Estamos analizando
más cosas que podemos aportar la idea. Es genial tener dispositivos
en los que puedas probar, pero nosotros Quiero poder dar comentarios más
rápidos y cosas que buscar.

Mientras estás desarrollando la
idea. Entonces si tienes Ideas, por favor ven y házmelo saber.
Hay un emulador de Chrome OS eso está actualmente en vista previa.
Si no tienes dispositivos, puedes descarga el emulador y comienza a ver
dónde cae tu aplicación aparte. Cosas que no funcionan.
Cosas que chocan. Ya sabes, y etcétera.
Una de las mayores quejas para desarrolladores de Chrome OS y
las pruebas han tenido que usar ADB a través de WiFi y el ciclo de
desarrollo han sido malos. en el HP Chromebook y Pixelbook, puedes
llevar los dispositivos al El mismo ciclo de desarrollo que haces
con los teléfonos. Esperamos traer Cada vez más, más y más dispositivos
utilizan esta función. Pero la forma más sencilla, en realidad, es
simplemente ejecutar Android Studio en Sistema operativo Chrome.

Esto está disponible
en el Pixelbook en vista previa y Esperamos llevarlo a más dispositivos
en el futuro. esto esta encendido la tabla de Android Chrome OS. Para poder
construir la aplicación y implementar directamente en el dispositivo
hace que todo ciclo de desarrollo sustancialmente más
fácil y rápido. Cada vez hay más plataformas
que ejecutan APK, ya sea Son diferentes sabores o APK móviles.
Así que asegúrate de que tu La aplicación también
lo es. Gracias. De nuevo, por favor pregunte cualquier pregunta, cualquier sugerencia
que tenga sobre herramientas, cualquier cosas con las que te has topado al
intentar desarrollar para grandes plataformas de pantalla, me encantaría
conocerlas para que podamos abordar esto. Gracias. [Aplausos]
Muy bien. Así que sólo quiero que todos sepan. Actualmente es la
hora de la merienda. Así que nosotros tomar bocadillos [no audio].
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. . . . . . . .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Todo lo que tienes que hacer es utilizar
el complemento correcto. tienes la base función y luego aplica el complemento
de la aplicación, que He usado durante años.

Puede aplicar
la función dinámica. Ahora, tenemos que declarar una dependencia
especial del módulo base a todas las características diferentes
y te las explicaré más tarde por qué esto es necesario.
Obviamente tienes una dependencia. desde el módulo a la base, pero es
necesario hacer dependencia desde la base para los futuros. Entonces,
como ejemplo aquí, tenemos el fluir. Tienes un módulo base
y tres módulos. Nada tampoco específico. Depende de la
base. Ahora, al agregar la declaración
DSL, declaramos que los módulos A, B y c son modelos
futuros. tenemos esto La dependencia va en ambos sentidos. Entonces,
cuando pasamos por la construcción fluir, lo primero que hacemos es que
construimos normalmente todos los archivos en clases. Eso es
normal. eso es lo normal proceso por el que pasamos cuando construimos
cada uno de estos diferentes módulos.

Lo que realmente empieza
a diferir es que somos publicar todos los archivos de este
trabajo en el módulo principal y eso es absolutamente modular
porque necesitas tener un Vista global de la aplicación.
No puedes encoger el módulo futuro porque lo harás No sé cómo y cuál es la clase.
Entonces, una vez que los haya
publicado en la base, podrá aliméntalo al reductor y creará
un texto equivalente archivos. Existe un método uno
a uno. Pero no es exactamente un 1:1. Digamos que tenías clases que
estaban en tu módulo base. que pensabas que sería compartido por
diferentes funciones pero usado utilizado por el módulo B, pero
el divisor puede moverlo en su lugar de mantenerlos dentro del frasco dexter
principal del módulo principal.

De lo contrario, puedes imaginar más
o menos que hay un 1:1. Tienes Todos estos archivos de texto aún
residen en el módulo base, ahora van a fluir de regreso al
módulo originado. Hacemos eso para que
podamos tener, como usted pueda Mira, al principio, nosotros tenía compilación, estaba
paralizado. Si tienes un potente máquina, funcionan en paralelo
y se convierte en una cuello de botella porque tiene que esperar
a que todos los módulos estén listo para hacer la reducción y luego
podemos retroceder el procesamiento a cada uno de los mismos
módulos.

Entonces, puedes ver que agregar
modularidad a tu aplicación Podría ser una buena práctica personal.
Vamos a llegar mucho más rápido de un tiempo. Nos movemos tanto como
podemos y podemos ejecutar todos aquellos en paralelo tanto como sea
posible. Una vez que esto se hace en paralelo,
uno se empuja hacia cada módulo de funciones, eventualmente
podremos crear todos los necesariamente APK o artefactos. Todos
ellos, nuevamente, están en paralelo. El encogedor no suele
ser un problema porque… No es un problema porque normalmente
la gente no usa encogedor. durante las construcciones. Pero realmente
tratamos de limitar esto.

Cuellos de botella tanto como podamos
y cómo hemos mejorado la procesamiento con este tipo
de mejoras. Otra cosa que hicimos fue D8, que
es un nuevo código de enlace JVM. traductor. Básicamente eliminaremos
el antiguo, que es DX. Si estás usando DX, debes empezar a
entrar en pánico porque estamos va a quitarlo. Entonces, si estás
usando DX porque tienes problemas con D8, debes seguir adelante para
descubrir qué está mal. De lo contrario, te quedarás
atrapado en el pasado. R8 va para seguir el camino. Está disponible
ahora para probar. Somos muy contentos con los resultados que estamos
obteniendo hasta ahora, por lo que es muy estable.

Definitivamente deberías intentarlo.
Eventualmente se convertirá estable y puedes adivinar qué va
a pasar con el código antiguo encogedor, eventualmente lo quitaremos
y lo reemplazaremos con R8. Hay una sesión mañana
que te dará más. detalles técnicos sobre cómo son
estas dos bibliotecas implementado.
Bueno. hablemos un poquito sobre lo que sigue en 3.3. Entonces,
lo primero que quiero hablar sobre sus tareas. El concepto de tarea
(tarea perezosa) es: tú realmente debería entenderlo como una
tarea que sólo conseguirá inicializado si es tu excusa.
Tienes dos variantes. Si depura, no es necesario inicializar
la tarea. Así que lo que solíamos hacer, desafortunadamente,
así que esto se hizo antes en este ejemplo particular donde solíamos crear
todas las tareas.

Nosotros todavía tengo que hacer eso. Pero agregue el
tiempo de creación, también estamos configurándolos. Así que estamos configurándolos todos. Con la
tarea, tenemos la herramienta para retraso de la inicialización
hasta que sepa que esos tangs con ejecutado. Lo que significa
es que va a estar actualizado. comprobado. Es decir, buscará si
la tarea necesita ejecutarse o no ejecutando sus controles actualizados.
Tal vez ejecutado si es fuera de plazo. Entonces,
¿cómo se hacen las tareas perezosas? Es básicamente similar al estilo
antiguo, pero puedes ver que ahora el código de configuración,
que aquí está en azul, solo se llamará si la tarea está en el gráfico
de tareas de ejecución. Ahora nosotros Solíamos prestar mucha atención a
toda nuestra configuración. tareas, para hacer que este bloque
de configuración sea lo más sencillo posible posible porque siempre fueron
ejecutados.

Así que intentamos manténgalo lo más eficiente posible
sin acceso al disco, sin acceso a red, por ejemplo. Ahora,
probablemente sea un poco Está más bien hacer más trabajo
en esas configuraciones si Realmente es necesario, pero debes
recordar dos cosas. Primero, si haces un trabajo real, aún afectará
tu tiempo de construcción porque el tiempo de configuración sigue siendo
un evento de hilo. Toda la La configuración se realizará
una tras otra. Cuanto más cuanto más lo haga, más tiempo le llevará.
El tiempo de configuración ocurre todo el tiempo.

Es muy consciente.
Lo segundo es no mirar realizar más tareas. Entonces, cuando
tienes personalización, muchas la gente está haciendo un proyecto, obtenga
la tarea por su nombre. Cosas como esas. En realidad, esto buscará la tarea
y la inicializará. Él hará eso y todas las dependencias
también, todas las tareas y resultados, por lo que básicamente
tienes una buena oportunidad de inicializándolo. En lugar de hacer
eso, deberías conseguir un proveedor y obtener un objeto diferido
de la tarea en sí y usarlo para registrar su dependencia. Ahora bien,
¿qué puedes hacer tú también, si desea tener acceso al resultado
de una tarea, es utilizar eso proveedor y asigne la salida utilizando
el inicio de la API para obtener proveedor por lo que es básicamente
una promesa en la carpeta o un promesa de un archivo normal que
la tarea que se ejecuta dará lo verás más tarde.

Puedes conseguir
un objeto, ese objeto no. Inicialice la tarea en sí.
Obtener este proveedor no inicializa la tarea, no la fuerza
a ejecutarse y es realmente perezoso. Contiene dependencia e información
que significa que usted No es necesario que se registre como
una dependencia de la tarea. Sostener el objeto te permitirá
no solo obtener el objeto, pero también registra tu
dependencia. Al final podrás haz un get y eso te dará el objeto
que puedes usar. Entonces, aquí, cuando se está configurando,
todas las dependencias se configurará y así sucesivamente.
Somos modernizar todas nuestras tareas utilizando
proveedores y cosas como eso.

Si utiliza mucho la personalización,
debe investigar estas API en 3.3. Y
ahora Chris hablará de otras mejoras que hemos realizado.
Sí. Otra optimización es clases. Anteriormente, para cada
dependencia y cada materia, y junto con sus clases
reales. Es solo genera un frasco que contiene la clase
directamente. Y especialmente para aquellos con muchas bibliotecas
y muchas dependencias, esto evitó mucha compilación. Para grandes
construcciones multimodales, vio un gran porcentaje de aceleraciones.
Entonces el sistema de clases ha sido
reescrito. En lugar de confiar en los que están en el disco.
De hecho, acelera la indexación en Android Studio también. Incluso para complementos
de Gradle más antiguos. Este Sin embargo, rompe algunos complementos
de Gradle, incluido Butter Knife. Está en el dispositivo de biblioteca en 3.3.
Gradle ahora tiene soportes para el procesamiento de anotaciones.
Estamos trabajando para apoyar el procesos de anotación más
populares, incluyendo daga, Habitación, rejilla.
Y permitir estar aislado procesador de anotaciones, acelerándolo
aún más.

Nosotros también queremos para ayudarle a comprender el impacto de
la anotación en el tiempo de construcción procesos. Queremos informarles
cuál es el tiempo dedicado en y cuanto costaron? Sobre
ese tema, hay varios En otras áreas queremos brindarle una
mejor visión de su construcción, fácil y simplemente. Si está utilizando
procesos de anotación, es realmente crítico que tengas esa
idea porque a menudo es una cuello de botella para muchas compilaciones
que vemos. Cuando una tarea te causa problema, es genial conocer el complemento
Gradle o el script y qué lo impulsó a ejecutarse. Y estamos
trabajando para encontrar eso sale más fácilmente. También
queremos ayudarte a encontrar este tipo de problemas, incluso si
no estás buscando activamente a ellos.

A más largo plazo, queremos que Android Studio marque
si hay un problema y señale hacia el escaneo de construcción
mayor. Bueno. Entonces, desde estos mejores conocimientos
hasta completar las reescrituras. Espacio de nombres de recursos de Android. El
espacio de nombres de recursos es un canal completamente nuevo para
compilar y vincular Android recursos. Estamos haciendo esto por dos
razones. En primer lugar, acelerar la construcción y hacerla más fácil
de entender y queremos mejores Admite funciones dinámicas. Mirando
cómo funcionan las cosas ahora hay dos espacios de nombres. Eso
significa que si tienes dos bibliotecas, el mismo nombre y el mismo
tipo, tienen que elegir una y no siempre está claro qué
es lo correcto.

Él hace que dividir tu APK sea mucho
más difícil. donde esos De dónde vienen los recursos y hacia
dónde van es realmente importante. Cada biblioteca se compila y vincula
por separado y luego vinculados entre sí en el APK final.
Cuando estas usando recursos tanto de XML como de
Java, debe ser explícito sobre de dónde vinieron. Si están
en la biblioteca que Lo definimos, el siguiente XML, es necesario
utilizar el espacio de nombres. Esto también significa que ya no
se anulan entre sí sólo porque tienen el mismo nombre. Cuando necesite
anulaciones, estamos trabajando en una nueva forma de hacerlo explícitamente.
Los AR serán compatibles con versiones anteriores
para que puedas tener todos los beneficios de espacio de nombres.
Bueno.

Pasando a Izabela para Te cuento un poco más sobre los
detalles. Gracias. Ahora que sabemos qué es el
espacio de nombres, es posible que Te encuentras haciendo preguntas
como, ¿dónde está eso? ¿De dónde proviene el recurso o cuál
es la sintaxis adecuada? O como hago ¿Incluso poner nombres a mis dependencias?
La respuesta a todas estas preguntas es, lo arreglaremos por usted.
[Risas] Entonces,
sí, entonces la solución es espacio de nombres automático o espacio de nombres
automático con seguridad. Primero es la herramienta de reescritura oughtmótica
en el ideal.

Y el segundo son las transformaciones y tareas en
el complemento Gradle que reescribe tus dependencias
remotas, bajo el capó, no acción requerida. He
aquí un ejemplo de un gráfico de dependencia. Los nodos azules
son módulos locales que pueden ser reescrito usando la herramienta ide.
Los tres nodos naranjas no están bibliotecas remotas clásicas con espacios
de nombres que serán reescrito automáticamente. Todos
los recursos, clases, el Los manifiestos se reescribirán para utilizar
el espacio de nombres de recursos completo. Y finalmente, los nodos verdes
representan dependencias. que ya tienen espacios de nombres
para que no se modifiquen en todo. Veamos
qué tipos de cambios podemos ver después de que se produce esta
migración.

En el código de bytes, Puedes ver que ahora habrá diferentes
clases presentes. Si un recurso se definió en un
módulo diferente o remoto biblioteca, verás que el paquete de
la clase cambia para coincidir ese paquete. En el En el dispositivo: recursos XML,
lo verá en el símbolo @. Y finalmente, otra forma en que se
puede hacer referencia a los recursos es en atributos, por ejemplo, en
diseños. Aquí será modificado a punto y el atributo
usará este nuevo espacio de nombres, también.

Ya que estamos
en el tema de los recursos, vamos hablar de visibilidad. Probablemente muchos
de vosotros creasteis un Android biblioteca con mucho esfuerzo
declarando qué recursos son público y lo publicó con un .txt solo para
que los consumidores puedan ignoralo. Actualmente, esto es solo
una advertencia de Lint. este codigo compila y se ejecuta bien en tiempo
de ejecución, ignorando por completo el visibilidad prevista del recurso.
Estoy seguro de que muchos de ustedes De hecho, también ignoré estas advertencias.
Queremos introducir visibilidad. Entonces,
estas violaciones ahora se convierten en errores de compilación, por
lo que los detectaremos temprano y tres niveles de visibilidad. Uno, público.
Esto significa que estos Los recursos estarán presentes tanto en
las clases públicas como en las clases privadas para ese módulo
local. Recursos privados, solo presentes en
clases privadas y por último, recursos privados solo XML.

No estarán
presentes en ninguna clase. en absoluto. En cambio, sólo puedes hacer referencia
a ellos desde otros archivos XML. archivos dentro de ese módulo.
Esto resultará en menores clases, tanto de compilación como
de ejecución. Y, también, recurso. similar a la clase o método en Kotlin.
Gracias. [Aplausos] Muy
bien. Entonces, como puedas mira, estamos trabajando en muchas cosas
y muchas de las cuales esperamos ayudaría a ganar velocidad.
Volviendo a mi punto conciencia y herramientas, quería compartir
algunas cosas que puedes hacer hoy para comprender mejor su construcción
y mejorar su actuaciones. Entonces, lo primero
es actualizar. Mi primer gráfico, mejoramos con cada lanzamiento
y, por lo tanto, si realmente estás — preocúpate por tu velocidad de construcción,
lo mejor que puedes hacer es actualizar a la última beta, estable, Canary,
lo que te apetezca cómodo con.

Hay algunas
herramientas que puedes comience a aprovechar para
comprender mejor sus compilaciones. Una que realmente me gusta es una herramienta
gratuita de Gradle. implosiona algunos de sus datos en servidores Gradle
y proporciona paneles de control. Si estás tratando de entender qué
está pasando con tu construcción, ¿Por qué es lento? Este es un
recurso muy, muy útil. Si compartes algo de tu construcción datos con Gradle es algo con lo
que no te sientes cómodo, hay… perfil. Definitivamente no
es tan rico, pero proporciona alguna información y sigue siendo
local. Puedes combinarlo with–info que le brinda información
sobre una tarea determinada. Otro consejo es el error de archivo. Intentamos
probar todos nuestros lanzamientos. en cualquier entorno y caso de uso que
podamos, pero siempre hay diferentes configuraciones que existen.
Por favor, registre los errores cuando encuentras problemas. Por favor incluya
un escaneo con él. Él realmente nos ayuda a profundizar en
el problema y entender lo que está pasando. Por último,
pero no menos importante, si eres escribir complementos, ya sea para
que usted los publique o personalice un poco su archivo de compilación,
aquí tiene una serie de consejos seguir.

Entonces, primero, como Jerome
eludió, es establecer tareas, en realidad no hacer nada
más. Recuerde, si necesita calcular cosas para verificaciones actualizadas,
siempre puedes usar proveedor y proveedores para ejecutar siempre
esas comprobaciones si su tarea es parte del gráfico activo. Por
ejemplo, en la configuración, no debes hacer cosas como consultar
obtener, leer un archivo, buscar para un dispositivo conectado o calcular
cualquier cosa. Configuración En realidad es solo un lugar para configurar
tareas. Y es un lugar para establecer todas las tareas. Porque build
no sabe realmente qué es pasar vas a participar en eventos, así que intenta
configurar todas tus tareas en el paso de configuración. En cuanto
a las tareas, asegúrese de que cada tarea declara todas las entradas
y salidas, incluso si es uno sin archivo y asegúrese de
que sean incrementales y almacenable en caché.
Si estuviera trabajando con un paso complejo, intente dividirlo
en varias tareas.

Esto ayuda con la incrementalidad porque algunas
tareas podrían estar actualizadas. Si tiene varias tareas, podrían ejecutarse
en paralelo. Por lo que ayuda con la incrementalidad y el
paralelismo. Esta tercera mejor práctica parece
obvia, pero todavía quiero ponlo ahí. Asegúrate de que
no escriban ni eliminen cualquier otra salida de tarea.
Cuando escribas tareas, usa Java.

Y Kotlin. Y colóquelos en un complemento/carpeta.
Y por último, pero no menos importante,
como habrás oído de Jerome, aprovechar una nueva API de trabajo;
no, no hablamos de esto. Aunque hablé de cosas. Eso
realmente ayuda con problemas. Si no obtuviste imágenes
claras de todo lo que Acabo de decir, no te preocupes. Estamos trabajando
en un artículo completo. cubriendo todo lo que hablamos
sobre velocidad, en torno a los hallazgos que compartí,
las herramientas y las mejores prácticas y más, así que estad
atentos. En resumen, aquí está lo que se sacó
de esta sesión.

Primero nosotros compartió algunos hallazgos sobre la velocidad
y eso básicamente un poco superado por algunas de las características,
los complementos y todo las otras cosas, pero nos estamos
tomando esto muy en serio, así que Estamos redoblando nuestros esfuerzos para
mejorar las herramientas y atribución y continuar mejorando
el desempeño. Compartimos las nuevas funciones en
3.2 y definitivamente os animo. para actualizar a 3.2, si aún
no lo has hecho. Y mencionamos algunas de las cosas
que funcionaban para 3.3. y más allá.

3.3 beta está
disponible. Así que te animo intentarlo. Tiene algunas de las cosas
que mencionamos, como perezoso. tareas y otros. Y por
último, hablé de algunos de Las herramientas que puedes utilizar — —
perfil. Es todo por hoy. Quiero hacer un chiste
malo, pero a diferencia construcción, terminamos antes
de lo esperado. vamos a salir allí con – en la sesión de preguntas y respuestas de
los oradores o en las cabinas del estudio hoy y mañana, si tienes alguna
pregunta.

Así que gracias. [Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos]
Todos, la próxima sesión, en esta sala, comenzará a las 4:50.
Gracias, todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos.

Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos.

Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos.

Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Gracias
a todos. Gracias a todos. Bienvenidos
de nuevo a todos. Como un Como punto de información,
esta sesión comenzará en dos minutos. Y les pedimos, como cortesía
a los presentadores, que tómate un momento para silenciar tus teléfonos
y dispositivos digitales. Nosotros gracias a todos. Entra y siéntate.
Nuestro programa obtendrá en marcha en dos minutos. Hola. Buenas tardes. Estoy muy
emocionado de estar aquí y hoy vamos a hablar sobre ConstraintLayout
y cómo utilizar el editor visual para establecer
restricciones de manera efectiva en Estudio Android.
Soy Chris, diseñador de UX y Hablaré de algunas de las nuevas características
que hemos agregado. Y yo soy Sean McQuillan, defensor
de los desarrolladores de Android.

Después de hablar de lo básico. en 1.0-1.1, hablaremos sobre algunas
de las restricciones. Cuando agrego una vista a
un ConstraintLayout en el editor, Tendré uno en la parte superior, izquierda,
derecha e inferior. Si voy a el inspector de vista, voy a agregar
restricciones a la vista. En ConstraintLayout, antes de agregar estas
restricciones, las establecerá en algún lugar de la pantalla.
Es 30DP y tengo restringió completamente esta vista y
ahora ConstraintLayout sabe cómo para resolver a dónde va esto. Comenzaremos
con un ejemplo simple de cómo para construir más Ejemplos complejos de restricciones. cambiaría
esto para que sea 50DP o agregue una restricción al costado.
Si agrego otro al final,
centraré esta vista en todo el ConstraintLayout y este
truco va a funcionar en todas partes en ConstraintLayout.
Así es como centras una vista.

Dentro o encima de otra vista.
Entonces, echemos un vistazo a una cosa
más que puedo hacer. Entonces, si yo Mire el control deslizante que está
a la izquierda. comienza a los 50 cuando he restringido la parte superior
e inferior y puedo cambiar eso. Puedo cambiarlo hasta 25. En
lugar de centrarse, lo hará. introducir el sesgo en
el diseño. va a poner eso 25% en el camino, 75% en el camino y
un control deslizante horizontal, también.

Entonces,
profundicemos más en este inspector de vistas y eche un vistazo
a lo que está disponible en el editor especial. Hay un triple
chev en marcha. Juan dijo es porque es contenido empaquetado
y está tratando de extraer lo más fuerte que pueda desde ambos
lados. puedo cambiarlo a fijo ancho. Eso es 100DP. Entonces las restricciones de coincidencia son una
característica nueva, una nueva forma de establecer salidas vistas. Elimina todas las vistas
disponibles. Estoy restringido a la derecha y a la
izquierda, así que es lo mismo. cosa como padre completo. Así
es como abordarías todo pantalla. No querrás usar padre
completo en Diseño de restricciones. Veo este ícono
realmente interesante aquí. I Pensé que esto era un latido del corazón,
durante mucho tiempo. Yo pregunté Juan sobre esto. En realidad
es un resorte y en algunos versiones de Android Studio, obtienes
dos resortes y en otras, obtienes uno. Entonces,
volvamos a cambiar esto. para ajustar el contenido y agregar otra vista
para que podamos comenzar a construir diseños más complejos. Voy a agregar
una vista de imagen y restringirlo para que sea 20DP.

Moverá la vista de la imagen
para que sea 20DP. Soy Voy a agregar otra restricción
y la vista de la imagen va a centro mismo. Podemos
hacer esto en otra vista, también. Ahora
quiero cambiar el ancho. de esta vista desde ajustar el contenido para
que coincida con las restricciones. Y esto tiempo, en lugar de restricciones
de coincidencia, tomará el ancho de esta vista de texto, sea cual
sea el tamaño de esta vista de texto, Intentaremos igualar esa restricción
y este nuevo control. aparece. Esta pequeña línea crea
un pequeño triángulo. I habilitar una relación de aspecto. Esta es una
característica realmente interesante, si desea mostrar una imagen con una relación
de aspecto. Imágenes, cuando nosotros consígalos de los diseñadores, ellos
quieren 1 por 1.

Te estas riendo porque eres diseñador. Que
es mi culpa. Lo siento. [Risas] Podemos
configurar exactamente lo que nuestro los diseñadores quieren y cambian el tamaño
de esta vista a medida que cambia el texto manteniendo esta relación de aspecto.
Si lo configuro en 3:1, establezca una relación de aspecto que diga:
Me gustaría que esta fuera una restricción, 3:1. Y otro dicho:
esto no puede ser más ancho que este cuadro de texto. ConstraintLayout
tiene que resolver esto y lo hará Utilice las restricciones del cuadro de
texto. Puedo liberar otra dimensión. Entonces,
si cambio la altura para que sea coincidir con las restricciones, es capaz de cambiar
el tamaño de ambas dimensiones para ahora puede establecer la relación de aspecto
3:1. Entonces, eso es todo lo que podemos hacer. con solo uno, ya sabes, elemento
o dos elementos.

Vamos agregue una vista más compleja y hable
sobre cómo diseñar las cosas con más funciones con ConstraintLayout.
Mi diseñador me envió este encantador formulario
de correo electrónico. esto es hablar de ConstraintLayout y no formularios de inicio
de sesión. No copie esto, hay muchos problemas. Están sucediendo
un par de cosas. Las etiquetas son alineado a la derecha con una especie de
línea invisible. El texto de edición está alineado a la izquierda y el botón Iniciar
sesión y nueva cuenta están colgando y parece haber una
línea. Y luego, al mismo tiempo, el correo electrónico
y la contraseña están verticalmente. centrado en la pantalla. ¿Cómo
vamos a distribuirlos? ya sabes, ¿vistas de texto? Tenemos el texto del correo
electrónico y la edición del correo electrónico. texto. Podríamos alinear la parte superior de
la vista de texto con la parte superior.

Eso sería incorrecto. Si miramos las métricas
de fuentes, tenemos esto línea de base en la parte inferior. En inglés
y en la mayoría de los idiomas, casi todo se asienta sobre la
línea ascendente y eso la línea discontinua es la que desciende línea descendente.
Esto crea una sola línea de texto para nuestros ojos y nos permite
leerlo como una unidad cohairants entonces queremos hacer eso
en ConstraintLayout.

Voy a conseguir este control. Se ve así,
lo he ampliado. sustancialmente. Obtengo
mi control favorito. parpadea El editor lo llamo el orbe verde
brillante de la línea de base. Podemos ir al texto de edición y arrastrar
desde una línea base a la otros y crear una restricción que indique
que estas vistas de texto deben tener la misma base. Y haremos
eso por todos los demás. vistas de texto en la pantalla aquí para
configurar todas las líneas de base alineaciones. Cuando
alineas el texto junto a texto, casi siempre querrás utilizar
la línea de base. Eso es forma correcta de hacerlo en
ConstraintLayout. Pongamos ese botón Iniciar sesión en la pantalla.
Tiene que estar restringido en el editar texto a la izquierda. ¿Cómo hacer este
centrado, el correo electrónico y La contraseña está centrada verticalmente
en la pantalla. como voy ¿Para hacer eso? Ponemos una restricción
en ambos lados de la pantalla y centros. Lo pondré desde el correo electrónico
en la parte superior de la pantalla.

De contraseña desde la parte inferior de la
pantalla y hasta ahora, esto hace sentido.
Ahora supongo que voy a tener para agregar una restricción de contraseña
a correo electrónico. Entonces yo soy voy a hacer eso y esto va a
centrar la contraseña entre correo electrónico y la parte inferior de
la pantalla. Retiramos el correo electrónico Abajo con otra restricción y resolveré
este problema. Este introduce una cadena. Ahora
por supuesto, configurando todo las restricciones son tediosas. Puedes
entrar haciendo clic derecho en centrar y elegir verticalmente. Cuando tengo
correo electrónico y contraseña seleccionado, configurará todas
las restricciones que Acabo de hablar. Entonces, dentro de
una cadena, en realidad hay tres formas diferentes de presentarlo:
cuatro, técnicamente. Nos hemos extendido, lo que significa
distribuir todo uniformemente. Difundir por dentro, que es
básicamente lo mismo excepto el primer y último elemento se empujan
hacia un lado. Entonces nosotros tener paquete. Usaremos una cadena empaquetada
para centrar estos vistas juntas.

Hay una cosa más
que debemos hacer. Nosotros Necesito poner esta línea invisible en
el medio de la pantalla. Entonces Para hacer eso, iré a los ayudantes
y agregaré una vertical. guía. Puedes considerarlo como un
nuevo borde de la pantalla. I tengo uno a la izquierda y ahora pongo
un borde de la pantalla en el centro de la pantalla que puedo usar
como ancla para restricciones. I tome las vistas de texto y cree restricciones
a partir de ellas. para amable de visualizar lo que esto está haciendo
debajo, si muevo el guía, en realidad ahora moverá
todo el diseño. Entonces, movamos eso hacia atrás
y luego obtengamos otro diseño. porque resultó que el diseño
no estaba funcionando muy Bueno. Después de muchos estudios de usuarios,
hemos descubierto que la solución es alinear las etiquetas a la izquierda. Entonces,
intentemos hacer eso. Bueno, yo Lo hice y lo traduje al alemán
y esto es lo que sucedió. Esto no es genial. Entonces,
¿qué pasó aquí? Por lo que Resulta que si expongo esto de forma
similar a como lo acabo de hacer, entonces, la contraseña es el campo más largo
en estas etiquetas, así que si configuro un restricción y otra restricción
de editar texto hacia abajo al texto de edición de contraseña,
esto funcionará muy bien en Inglés.

Cuando lo traduzco al
alemán ya no es correcto. Entonces lo que voy a necesitar es
algo que sea dinámico, que sea basado en todas estas cosas. Algo así como
un grupo de visualización. Básicamente, es posible que desee un diseño
lineal. estoy dentro ConstraintLayout, entonces, ¿cómo hago
eso en ConstraintLayout? Hay otro ayudante y lo usaremos
ahora. Si nosotros use agregar barrera vertical, esto
le permite agregar una barrera a la pantalla. Es como un grupo de vistas.
Es un código de agrupación.

Podemos abrir el componente y
agregarlo. Es una vista que añadido a la pantalla. Se
coloca en un lado o en el otra de todas las vistas que hay
en su interior. Por defecto, Está en la izquierda. Si abro el panel de atributos, puedo configurarlo
hasta el final. Estableceré las restricciones
y traduciré mi inglés al Alemán. Así que eso es realmente todo. Esas
son todas las características en Diseño de restricciones 1.0 y 1.1.
Entonces Chris va a hablar sobre Más trucos que se pueden usar para usar
el editor visual para construir. restricciones. Fresco.
Gracias Sean. Entonces, con diseño de restricciones, hemos introducido
muchos consentimientos. Nosotros Comenzó con restricciones,
márgenes y cadenas. hemos introdujeron directrices y
barreras y grupos y muchos Más ayudantes vendrán y hay un diseño
de movimiento. Una cosa que Lo que hemos escuchado consistentemente es que
a medida que agregamos más conceptos, Cada vez es más difícil
gestionar todos estos con diseño de restricción.

Y entonces,
lo que estoy aquí para contar usted, hoy, es que en realidad
hemos estado mejorando esto en el editor visual en Android Studio.
Las cuatro áreas son creando restricciones y nuevas vistas
y trucos para hacer zoom y panorámica y luego, por supuesto,
utilizando datos de muestra, que introducido nuevamente en 3.2. Entonces,
crear restricciones, en este caso, tenemos dos componentes. Una vista
de imagen y una vista de texto. Si queremos centrar la vista de la imagen,
ponemos una restricción en la parte superior y uno de allí abajo.
Tomemos ese lindo Iniciar sesión forma desde abajo. Tenemos etiquetas,
tenemos entradas, algunas botones. Pero desde el punto
de vista de las restricciones, tenga esta guía en el medio,
el botón Iniciar sesión restringido a la parte inferior y
derecha de la entrada. tenemos el entradas restringidas a la
directriz. porque son todos bastante cerca uno del otro,
cuando los arrastras, Puede ser bastante desafiante hacerlo
bien.

Incluso cuando hice esa diapositiva, escondí
la mitad de las restricciones porque estaba demasiado ocupado.
Sí, fue muy simplificado. de hecho. Hemos
agregado la capacidad de agregar restricciones directamente con el menú
contextual. Si usted tiene componentes que están muy cerca uno
del otro, esto lo convierte en un mucho más preciso y directo para establecer
esas restricciones. Entonces, en este caso, y esto también está
disponible en la versión 3.3 beta, para que puedas probarlo hoy. Y entonces,
en este caso, tenemos esta preciosa foto de gato. Puedes
simplemente limitarlo a el padre. Entonces, ¿cómo
se ve si tienes múltiples componentes? Entonces, en este caso, tenemos
estas dos vistas de texto.

Que están muy cerca uno del otro
y por eso no estoy seguro si La gente ha intentado crearlo, se
vuelve doloroso cuando estás yendo desde la parte inferior de uno hasta
la parte superior del otro. Puede mantén los dos seleccionados, y luego
cuando abras el contexto menú, está este menú de restricciones
y puedes ver los dos Los elementos que desea utilizar están
ahí y luego puede fácilmente en cascada hasta la restricción correcta
que desee. En este caso, solo mostramos el
inicio y el final y eso es porque, en este caso, las restricciones
superior e inferior tienen Ya se han configurado, por lo que no los
mostramos. Entonces, aquí queremos restringir el
ícono de ubicación a esto guía vertical a la izquierda. Entonces, si
usas la función de arrastrar y soltar método, obtienes todos estos – Los destellos verdes favoritos de
Sean. Si estás intentando apunte a algunas de estas cosas más
pequeñas como el siguiente texto o números, se vuelve difícil
cuando intentas arrastrar y gota. Nuevamente, esto hace que sea mucho más
directo para que pueda seleccionar la guía y utilice el menú
contextual.

Si realmente no desea seleccionar
estas cosas, puede usar el árbol de componentes. Esto
resulta útil. Hace el exactamente lo mismo.
Pero si te gusta arrastrar y soltar, ya sabes, todavía puedes hacerlo
y una cosa que hemos Intenté hacerlo más fácil en realidad
cuando lo arrastras y así en este caso, tenemos este nuevo gesto que,
pendiente, se llama arrastrar al centro. Mientras arrastras, verás
todos estos pequeños objetivos y Entonces, en lugar de intentar centrarse en
esas áreas verdes específicas. puntos, simplemente puedes arrastrar
hasta el centro de lo que deseas restringir a. En
este caso, si arrastro desde el Vista de texto de Mountain View, puedo arrastrar
a la imagen del gato y obtener un menú emergente que me muestra las dos restricciones
que puedo establecer. Porque vamos desde la izquierda
del texto de Mountain View. vista de la imagen del gato, las dos restricciones
son la izquierda y bien. Y en
realidad tenemos esto, como bueno, lo cual resulta útil cuando
tienes vistas superpuestas y Este es bastante simple, pero
a veces tienes vistas.

Quieres ocultar y mostrar en tiempo de ejecución
y todo lo que tienes que hacer es arrastrar a donde sea – al objetivo
y lo que haremos es De hecho, descubre qué pocos están
debajo del píxel y te lo muestra. un menú contextual en consecuencia.
Entonces, si pasamos a ver opciones, por lo que la superficie de diseño siempre
ha tenido opciones de visualización para aproveche cuando esté trabajando
con sus diseños. El dos son mostrar todas las restricciones y renderizado
en vivo. Entonces, si vamos De regreso a nuestro formulario de inicio de
sesión, lo reutilizaremos mucho. [Risas] Ya
sabes, las limitaciones son establecido aquí. Pero la cuestión
es que, cuando intentas… Di que eres nuevo en este diseño y
estás intentando editarlo.

Restricciones en uno de estos controles,
están sucediendo muchas cosas en. Y esto está simplificado en comparación
con el diseño normal. superficie. Y entonces lo que tenemos 3.3 se agrega esta opción para mostrar todas
las restricciones pero está activada desactivado de forma predeterminada. Lo que
haremos es mostrar sólo las restricciones. en el componente seleccionado
activamente. lo hace mas facil para trabajar con el componente con
el que está trabajando. Por supuesto, puedes volver a activarlo
fácilmente si quieres ver todas las restricciones al mismo
tiempo. Y esto es como mostrarles uno al
lado del otro. Sobre el izquierda, lo tenemos apagado. A la
derecha lo tenemos encendido.

Especialmente en la superficie de diseño
o modo de diseño, lo limpia mucho porque no tienes flechas
ni margen, especialmente para los 322 y siguientes y
los 20 seguidores. Plano El modo es lo mismo. Aunque
el modo plano es muy simplificado, todavía resulta
un poco complicado de ver. Y Entonces, creemos que esta también
es una buena opción, aquí La otra La opción de visualización que tenemos es renderizado
en vivo, lo hemos hecho en vivo. renderizando desde hace bastante tiempo.
Déjame volver.

¿Puedo volver? Oh. Y así, está activado de forma predeterminada,
pero dependiendo de las especificaciones de su máquina, puede ser lenta. Podrías
cometer un error. A menudo veces cuando intenté usarlo,
intenté crear un restricción y el botón se moverá
después de ella y eso me causa para cometer más errores.
Y si lo apagas, es mucho más rápido a medida que arrastras
y mueves cosas. Todavia puedes Vea los cuadros delimitadores y así
sabrá dónde terminan las cosas. El único inconveniente es que no se renderiza
al arrastrar.

Alternativamente, puede utilizar
el modo plano. Aquí no lo hacemos hacer representaciones en vivo. Esta es la
mejor manera de trabajar con ConstraintLayout porque puedes centrarte
en las restricciones. configura estas opciones, están en
la esquina superior izquierda y si desea cambiar, es decir, usando el
ícono de capas azules también. Zoom y panorámica. Entonces, realmente
has podido hacer zoom y panorámica en el editor de laboratorio
y resulta muy útil cuando estás lidiando con ConstraintLayout
cuando las cosas están muy pequeños o cercanos entre
sí o superpuestos.

Qué Lo que hemos hecho, en 3.3, es cambiar los
atajos de teclado para que coincidan. más de Photo Shop y Sketch. Puedes
usar comando o control y luego el igual [sin audio]. Entonces, es comando y control y
luego comando y control con el ratón y pellizca en la
dirección opuesta. Y luego ampliar para ajustar, de modo que si
está ampliado y desea volver a En ese diseño, puedes usar comando
y control, más cero. Y entonces, si estás ampliado
y en realidad no quieres alejar el zoom, pero quieres
desplazarte, puedes hacerlo manteniendo presionado el espacio y usando el
mouse para hacer clic y arrastrar. Este Es un gesto algo familiar si
has usado Photo Shop u otro herramientas de diseño.
Y entonces el último consejo es usar datos de muestra y así con datos de
muestra, en ConstraintLayout, es Es más fácil obtener una vista previa de
cómo responderán sus diseños. diferentes tipos de contenido en tiempo
de ejecución y por eso introdujimos Ayudantes de datos de muestra para facilitar
el trabajo dentro del diseño. superficie. Específicamente para vistas de
imágenes, vistas de texto y vistas del reciclador.
Y así, con la vista de imagen, tener dos conjuntos de muestra.

Disponemos
de avatares y fondos escénicos. Y entonces, si usted, y si desea agregar
sus propias imágenes al datos de muestra, puede hacerlo. Simplemente
creas datos de muestra. directamente en la raíz de su proyecto.
Datos de muestra, con su vistas de imágenes restringidas, puede
cambiar rápidamente entre diferentes tipos de imágenes y establece diferentes
proporciones para que puedas ver cómo responde su diseño sin tener que
ejecutar su aplicación Con texto vista, tenemos datos de muestra. Tenemos
ciudades. Tenemos citas, nombres completos. Si desea sus propios
datos de muestra, puede crear Está en la raíz de tu proyecto y
creo que admitimos texto plano.

Archivos y JSON. Con vistas de
texto, esto es más importante porque tiene vistas de texto para
contenido abierto. Tenemos pelo corto doméstico es una
descripción muy breve. Sobre el Bien, este es un montón de texto
colocado allí. Y entonces tu sabes, sin tener que ejecutar nuestra aplicación,
puedes ver, solo con datos de muestra, cómo responde
su diseño.

Entonces, no necesito ¿Ya no copias lorm ipson de internet?
[Risas] Creo
que, como mencionaste, esto es excelente para realizar pruebas en
diferentes idiomas. Y entonces, con eso, se lo devolveré
a Sean para que hable sobre algunos nuevas características.
Gracias, Chris. De modo que Cubre todo en 1.1 y 1.2.
Ahora quiero pasar a Nuevas funciones que aparecerán en
ConstraintLayout 2.0. Quién tiene ¿Ya intentaste jugar con el editor de movimiento?
Entonces veo cinco personas. Entonces, con suerte, podemos dar una
buena introducción aquí a la Conceptos básicos y Chris va
a hablar sobre el diseño.

Superficie. Entonces
el diseño de movimiento le permite cree diseños dinámicos utilizando todas
las funciones de ConstraintLayout hablamos antes y cambiar
las restricciones tiempo. Vemos construir un
encabezado plegable que Chris Banes juntos. Entonces puedes ver la
imagen del título en realidad. se esconde detrás de la vista a medida que
se desplaza hacia arriba. es un lindo animación dramática. Antes
de llegar a algo así, hablemos de lo que podemos construir
con MotionLayout, puede utilizarse para crear encabezados plegables,
comentarios de estado o transiciones, tal vez el estado abierto
y cerrado de un sorteo y usted También puede realizar la mayoría de las
animaciones de esta presentación. Para entender el movimiento y la
animación, es realmente importante.

Dar un paso atrás y pensar en
lo que define una animación, no sólo en Android, sino en una
película de Disney. estan definidos por un comienzo y un final. Empiezo de
nuevo aquí. Estoy aquí. Y luego Estoy terminando por aquí. Y en
el medio, con el tiempo, yo Creé una animación, por lo que es un
movimiento muy complejo. Hablemos sobre uno sencillo. Voy a poner
un punto azul en la pantalla. y me gustaría crear una
animación. Para hacer eso, Tengo que definir un comienzo. Tengo
que definir un final. Soy Voy a poner eso en la esquina inferior
derecha con restricciones. y para construir una animación,
todo lo que hago es transición de uno al final. Eso
es lo que hará MotionLayout para ti. Descubrirá cómo hacer la
transición de ese punto azul desde el principio, hasta el final. Para
construir un MotionLayout, usted Tienes que comenzar con
un MotionLayout en tu XML. Lo hicimos para que tuviera todas
las características de Diseño de restricciones. Apunta a una escena
en movimiento, que es una archivo XML separado y usted codifica
la información de inicio y fin eso define tu animación.

El inicio
y el final están definidos en términos de conjuntos de restricciones. ¿Qué son
los conjuntos de restricciones? Usted puede ser ya estoy familiarizado con esto.
De lo que hemos estado hablando, hasta ahora, es esto. Las vistas, las etiquetas
reales, además de todos los restricciones y toda la información
de tamaño. A El conjunto de restricciones es solo
esta parte.

Sólo las limitaciones y Solo la información de tallas. Apunta
a ID de vistas reales. pero no contiene las vistas.
Si animo una restricción, se vería así. Si lo aplico
a una animación, se vería así. Construyamos
una vida justa diseño sencillo y fácil de
seguir. Aquí tenemos una bonita animación de revelación dramática, el título
aparece en la parte superior, el subtítulo se expande hacia abajo.

Al mismo tiempo,
la imagen en el el fondo está cambiando de tamaño. Así
que están sucediendo muchas cosas en. En realidad, esto puede ser difícil
de escribir en código, pero es bastante fácil de escribir usando
MotionLayout. Entonces, tomemos un Mira cómo vamos a hacer eso.
Para hacer un MotionLayout, Sólo voy a agregar: voy
a definir el inicio y el fin. Para empezar, voy a sacar
el título de la pantalla.

Y hacerlo haciendo una restricción
al final de la título al inicio de la vista,
al ConstraintLayout. ConstraintLayout estará encantado de
exponer sus puntos de vista, si Pídelo. nosotros
también vamos a hacer lo mismo cosa en la parte inferior, donde vamos
a poner una restricción a Empuje el texto de descripción fuera de
la pantalla. Entonces para realmente construir eso, vamos a seguir adelante
y crear un MotionLayout. Esta es una subclase de
ConstraintLayout. Tiene un etiqueta de diseño. Aquí lo llamaré
espaciado. Entonces tengo que Defina mi diseño, que son solo
las vistas. no lo doy anchos y altos, no limito
nada. Soy literalmente, simplemente vamos a hacer
una lista de tres vistas de texto y una vista de imagen.
Ahora voy a ir al archivo. Estaba hablando antes. Este es el
archivo de escena de movimiento. Dentro de eso, define una transición
y una transición tiene un comienzo y un final. Nuevamente,
eso es lo que define un animación. Una animación siempre
tiene un comienzo y siempre tiene un final.

Para definir el inicio,
voy a hacer una restricción. set y un conjunto de restricciones es solo una
etiqueta. tiene un ide-identificación.
Pero diremos qué identificación soy. Vamos a establecer su altura, ancho
y relleno. Voy a limitar – para sacarlo de la pantalla, voy
a restringirlo hasta el final de parent y haga lo mismo con el conjunto
de restricciones, end. Soy Voy a seguir adelante y hacer que la vista
del título restrinja el inicio. al inicio del padre. Y esto
trae ese título al pantalla. Voy a hacer lo mismo
con todos los demás.

Vistas en este diseño también.
Es una claridad de XML y yo construyó esta animación. Así
que ahora voy a pasarlo de vuelta. a Chris, quien va a hablar un
poco más sobre… El editor de movimiento. Entonces, en
I/O este año, les dimos un adelanto Vistazo del editor de movimiento. Hemos
estado trabajando bastante duro en él, pero aún no está listo.
Queríamos asegurarnos que nos centremos en poner en marcha
algunas piezas fundamentales antes de que lo lancemos. No queremos ser
demasiado impacientes y conseguir hacerlo bien, a diferencia de cosas como la ejecución
instantánea. [Risas] La biblioteca
de movimientos ya no existe. por un momento. Queríamos definir los
conceptos de animación correctos y roles requeridos.

La biblioteca
también debe ser ejecutante. John
y Nicolas han sido trabajando duro en la biblioteca. Les
encantan tus comentarios y todo. las demostraciones geniales que han estado
saliendo. Entonces, por favor, mantenlo. vengo y gracias. otra
cosa es la calidad de Android Estudio. Ha sido el enfoque
principal para nosotros en 3.3. y la próxima versión 3.4. Hemos
logrado rendimiento y mejoras en las interacciones
porque tiene que ser capaz de renderizar animaciones a 60 fotogramas
por segundo y hacerlo más fácil trabajar con restricciones porque
hay que saber usarlas ConstraintLayout y por eso pensamos
que si invertimos en la calidad ahora en la herramienta, realmente
hará que MotionLayout editor mejor Con eso, estoy aquí para
mostrárselo desde el principio.

Exploración del editor de movimiento.
Esto son maquetas, no La construcción. Soy el diseñador.
Todo esto está hecho en Foto. Comercio.
Siéntete libre de encontrarme a mí o a Sean. y creo que John también está aquí.
Si tomamos el ejemplo de antes de que tengamos las vistas espaciales
de imagen y texto animándose, usemos eso como contexto de lo
que veremos en la moción editor. Entonces, ¿cómo se ve
eso realmente? Entonces, aquí, Tenemos una nueva perspectiva sobre el árbol
de componentes, por ahora estamos llamando a la vista de transiciones. Para
el propósito de la charla, estoy Vamos a hablar de esta nueva visión
porque creemos que es la parte KNT más significativa.

Tendrás
el panel de propiedades. y palet. No hemos descubierto
del todo los detalles sobre cómo se integra con la línea de tiempo
o la vista. Así que quédate sintonizado para eso.
Entonces, en este caso, tenemos la inicio de la transición y para que pueda
ver que las vistas de texto son fuera del puerto de visualización, pero puedes
ver que hay una ruta de movimiento que va desde afuera hacia adentro. En realidad,
no representamos el texto. Vistas fuera del puerto de visualización
hoy, pero eso definitivamente es algo que necesitaremos tener para
la animación porque sabemos Ese es un ejemplo de animación muy típico
en el que las cosas vuelan. Y entonces, si avanzamos rápidamente
a la mitad del transición, puede ver que las vistas
de texto se han movido a la mitad y tenemos la imagen espacial
alejada y eso es lo que pretendíamos aquí. Entonces, si retrocedemos,
profundicemos en lo que esta visión de transición realmente lo
hace. Entonces, solo estamos mostrando una transición ahora y tiene
un nombre único por su inicio y conjunto de restricciones finales.

Puede
tener múltiples transiciones por MotionLayout y así, con este
menú desplegable, podrás cambiar entre las diferentes
transiciones y cargaremos el conjuntos de restricciones correspondientes
y cambiar las líneas de tiempo para que Puedes ver cómo cambian los componentes.
Cada transición tiene sus propias
propiedades, que es el comienzo. y finalizar el conjunto de restricciones. Tiene
una duración expresada en milisegundos. Entonces,
si bajamos, tenemos el línea de tiempo. Y entonces tienes,
empezando por la izquierda, tienes la barra de reproducción, puede repetir
la animación tantas veces como quieres. Puede saltar rápidamente
al principio o al final. Si usted queremos acelerar o ralentizar la
animación, permitimos que, según Bueno. Sólo para ajustar la animación
a la perfección. Y tenemos este control de tiempo aquí
para que puedas dar un paso a través de milisegundo, por
milisegundo y luego por el línea de tiempo en sí, ya sabes,
mostramos de cero a 100, siendo 100 el fin. Puedes usar este control deslizante
aquí para hacer la línea de tiempo. más grande o más pequeño dependiendo
de qué parte de la transición quiero centrarme.

Y
entonces bajamos y vemos todo. los componentes que puedes
animar en MotionLayout. Cada componente mostrará que tiene
una restricción de inicio y fin. set, que son necesarios para animar
cualquier cosa. Y entonces si nosotros Mire específicamente esta imagen del flash
espacial, tiene una clave. atributo o fotograma clave que
cambiaremos a la mitad del animación. Si
nos alejamos, corresponden responde a los mismos. Aquí están mis
componentes que estoy animando y dónde comienzan y terminan y cuáles
son los resultados reales rutas de movimiento.
Y entonces, ahí es donde nosotros están con el editor de movimiento. Esperamos
sacarlo pronto, pero yo No puedo prometer nada. El próximo
año. [Risas] En algún
momento de 2019. Y eso es él.

[Aplausos]
Todos, la próxima sesión, en este teatro, comenzará a las
5:40. Gracias. 5:40. Gracias. Bienvenidos
de nuevo a todos. El El programa comenzará en unos
dos minutos. Nuestro El programa se reanudará en dos minutos
y medio. medio minuto. medio
minuto. medio minuto. medio
minuto. medio minuto. medio minuto. medio
minuto. medio minuto. medio
minuto. medio minuto. [Sin
audio] Al final, hablaré sobre en qué
estamos trabajando. Dos Hace años, CEO de Google, pasaremos al mundo donde los
dispositivos móviles son lo primero. Significa aprendizaje automático y dispositivos móviles.
Años y años, cada vez más. Las aplicaciones móviles utilizan el aprendizaje
automático para producir cosas fascinantes. experiencia de usuario. Cada vez hay más lógica
de aprendizaje automático pasar del servidor que ejecuta la
nube al dispositivo móvil en tu bolsillo.

Tiene muchas ventajas
rápidas. es lo que hace No es necesario gastar costos. También se ejecuta
en cualquier momento y en cualquier lugar, con y sin conectividad de
red. También proporciona mejor producción para la privacidad
del usuario ya que los datos no Tienes que dejar el dispositivo. Déjame
hacer una encuesta rápida aquí. Cómo muchos de ustedes viajaron desde
fuera de California para asistir ¿Esta cumbre de desarrolladores? ¡Guau! Bienvenido.
Bienvenidos a Silicon Valley. I Espero que tengas la oportunidad de visitar
el puente Golden Gate y disfrutar. buena comida.
Hablando de comida, mi El reloj biológico me dice que es hora
de cenar.

Entonces, dónde ¿debería comer? Bueno, sacaré mi teléfono
y le preguntaré a Google. Asistente. Hola Google, tengo hambre.
Cualquier buen restaurante ¿por aquí? Recomiendan donde
ir a cenar por los alrededores el área y ubicación en la que me
encuentro actualmente. Cuando le digo un Nuevo lugar, me gustaría tomar
muchas fotos. Los dispositivos móviles ahora pueden funcionar
cada vez más para máquinas tareas de aprendizaje. La primavera pasada
llevé a mi familia a la Toscana en Italia. Condujimos por esos hermosos pueblos
en la cima de las colinas. Allá Hay muchos signos, pero lamentablemente
no hablo italiano. I Ojalá lo haga. ¿Cómo sé lo que
significa? Aquí es donde Google Traducir vino a rescate. Utilizará un procesamiento
de lenguaje natural para traducir. el texto de un idioma a
otro. Finalmente, utiliza la voz para
convertir texto en voz y decir Cuéntame cuál es el signo, en mi propio
idioma. Todo esto implica aprendizaje
automático. Hay una perfecta y una potente experiencia de usuario.
Todo esto se ve genial. Pero como un desarrollador, ¿cómo hago algo
como esto? El aprendizaje automático requiere
conocimientos especializados y años.

De experiencia. Requiere una gran
cantidad de bien datos de alta calidad. El
dispositivo móvil tiene muy potencia informática limitada. Los modelos
ejecutados en un servidor en la nube son A menudo son demasiado grandes o demasiado
complejos. Necesitas gastar mucho Esfuerzo por optimizar el modelo para el
uso móvil. Después, finalmente, La aplicación está construida, debes preocuparte
por cómo implementarla. eso se convierte en otro dolor de cabeza. Toma
todos estos problemas, nosotros lanzó ML Kit, que ayuda a los desarrolladores
de dispositivos móviles a crear Android y aplicaciones de sistema operativo que utilizan
tecnologías de aprendizaje automático. ML Kit tiene como objetivo facilitar el aprendizaje
automático para dispositivos móviles desarrolladores solo porque quieren utilizar
el aprendizaje automático en móvil, no significa que tengas
que preocuparte por cobrar datos, construcción de modelos, optimización,
alojamiento, implementación, descargando.

ML Kit se encargará
de todo esto por usted. Nosotros Proporcionar modelos comunes que funcionan
de inmediato. Ellos optimizaron para velocidad, precisión y eficiencia para
el dispositivo móvil. Proporcionamos una API consistente
en Android y yo sistema operativo.
Para máquinas que se necesitan con frecuencia tareas de aprendizaje, tenemos una API base que
viene con Google previamente capacitado Modelos que funcionan desde el primer momento.
Hay cinco API que estamos secundario. La API de reconocimiento
de pruebas está en el en dispositivo y en la nube. Puede reconocer
el latín. caracteres y una amplia gama de
idiomas y especiales caracteres. La detección
de rostros es API soporte para tener caras en imagen
y también video en vivo transmisión.

Contamos con detección
de contornos que puede ayudarte Identifique diferentes partes de la cara
y luego aplique la mascarilla. El escaneo de códigos de barras se puede utilizar
para detectar imágenes unidimensionales y códigos de barras bidimensionales. La API de etiquetado
de imágenes puede detectar objetos dentro de la foto. Para el dispositivo
y la nube. El dispositivo Cubre la mayoría de las cosas comunes que
ves en las fotos. Mientras que la La API en la nube puede admitir 10 000
etiquetas en muchas categorías.

Finalmente, nuestra API emblemática
puede reconocer lugares conocidos en la foto, como la Casa Blanca o
la Torre Eiffel. Si esto no se ajusta a tus necesidades y eres un
desarrollador experimentado con la conocimiento sobre cómo construir
y entrenar modelos, eres más que bienvenido a traer su propio modelo personalizado.
Lo ejecutamos en TensorFlow. Es un marco de código abierto para
el aprendizaje y TensorFlow Lite. está optimizado para plataformas
móviles. Para modelos entrenados con TensorFlow, proporcionamos sus herramientas
para convertir y comprimir en un formato. Mientras utilizas el
modelo personalizado, puedes hacer dentro de su aplicación o alójelo
en la nube. Si eliges el Esta última opción es alojar en
la nube, no significa que necesites para construir su propio servidor en la nube.
ML Kit encontrará la manera de hacerlo. Gestionaremos el alojamiento del modelo,
su implementación, descarga, actualización y experimentación
continua. Desde que se lanzó ML Kit hace
seis meses en Google I/O, hemos han realizado varias mejoras. En primer
lugar, mejoramos enormemente nuestra enfrentar el modelo de detención, que ahora
es 18 veces más rápido y un 13% de 24% más preciso.

También pulimos
nuestro reconocimiento de texto. API haciéndolas más
ágiles y consistentes tanto en el dispositivo como
en la nube. Además, lanzamos Detección del contorno del rostro. Puedes
ver que ahora puedes usar la API para Identifica los contornos del
rostro en la foto. Incluye todo el rostro, tanto cejas, ojos,
nariz y labios. Esto es donde las aplicaciones en tiempo real pueden
poner la mascarilla como unas gafas o una nariz divertida en la cara y hacer
que la máscara se mueva con la cara en la transmisión de video en vivo. A continuación,
voy a compartir algunos Consejos y prácticas sobre cómo usar
ML Kit para poder crear impresionantes aplicaciones móviles usando la
máquina aprendiendo. Un mal
enfoque de la imagen puede dañar la exactitud. En segundo lugar, debes asegurarte
de que la imagen tenga suficiente tamaño. Por ejemplo, para la detección
de rostros, debe tener al menos al menos 100 por 100 píxeles para
cada cara. Si desea detección en el modo selfie, debería ser 200 por 200. Para la API de lenguaje,
debe tener un tamaño de 16 por 16.

Si utiliza nuestra API en la nube
para reconocer chino, japonés y En coreano, cada carácter debe tener
al menos 24 x 24. Similarmente, El código de barras tiene el
requisito de tamaño. Por favor consulte documentación en línea para más
detalles. El aprendizaje automático y las bibliotecas pueden
ser grandes, lo que puede ralentizar bajar la descarga de la aplicación.
Hay dos formas de reducir el APK. tamaño. Primero, puede crear su aplicación como
un paquete de aplicaciones de Android. Al hacer esto, habilitas a Google Play
para generar automáticamente APK para densidad de pantalla
específica, arquitectura y los idiomas. Tu usuario sólo tiene
que descargar el APK y coincidir con la configuración de su dispositivo
Otra forma de reducir API14 El tamaño de RR RR es que si no es un
propósito principal, podrías moverte.

Funciones de aprendizaje automático, que requieren
que ML Kit se convierta en una dinámica. modelo de características. De esa manera,
evitas que los usuarios descarguen modelo, que en ocasiones puede ser
grande. Todos sabemos que el aprendizaje automático
implica mucha computación, Entonces, la velocidad se vuelve realmente
importante. Aquí hay consejos sobre cómo mejorar. Puede reducir la resolución de
la imagen y el fotograma del vídeo. tasa para limitar la cantidad
de cálculo que implica. Cuando el proceso de velocidad de cuadro actual,
también debe acelerar fotogramas de vídeo entrantes, lo
que aumenta la memoria, así como ralentizar el rendimiento. Para la detección
de rostros en tiempo real, usted Deberías usar el modo cara rápida, que afortunadamente
es el modo predeterminado. Muchas veces, la resolución es suficiente
para la detección de rostros. Para el procesamiento en tiempo real,
también debe elegir entre detección de contorno versus clasificación
o punto de referencia detección, pero no ambas.

Porque
hacer ambas cosas podría ser caro y puede no ser adecuado para el procesamiento
en tiempo real de la Dispositivo lento.
Otro consejo y truco que deberías uso es, debe esperar a que finalice
la detección antes Representando la cara y el contorno
juntos. Puedes consultar nuestro Aplicación de inicio rápido en línea en GitHub
para obtener más detalles. Para ilustrar lo que quiero decir, haré
una demostración en vivo. vamos cambie al modo de demostración. Entonces,
para fines de demostración, estoy usando más lento, niño de 3 años Teléfono Nexus 5X. En el primer
video, les mostraré, sin ningún consejo y no hacemos videos
– ningún dibujo para hacer Asegúrate de que el contorno y el rostro estén
juntos, así que si simplemente llamas la API sin ninguna mejora de rendimiento,
como puede ver, el Los contornos no son completos en
la cara. Y hay una gran brecha entre estos dos.

Está
bien. Entonces, ahora cambio a otra versión, después de aplicar consejos
de rendimiento. En esta versión, usa exactamente
el mismo Nexus 5X. teléfono. Además, esperamos a que
finalice la detección antes renderiza tanto la cara como el contorno.
Como puedes ver ahora, los contornos están llenos en
la cara todo el tiempo. No hay más brecha. Fresco.
Entonces, volvamos a las diapositivas.
[Aplausos] Si está utilizando nuestra API de modelo personalizado,
cómo incluir el modelo es algo que deberías considerar.
Hay dos maneras, puedes paquete dentro de su aplicación o
alojarlo en la nube.

Si agrupas tu modelo en el aplicación, está disponible de inmediato.
No necesita ninguna descarga. Obtienes una aplicación más grande porque la aplicación
contiene el modelo. Puede que sea más lento bajar la descarga de la aplicación. Además,
no puedes cambiar el modelo. sin un nuevo lanzamiento de aplicación.
Por otro lado, si organizas una modelo en la nube, te brindamos
todo el soporte de hosting. Obtienes un tamaño de aplicación más
pequeño porque la aplicación no contiene el modelo, lo que se traduce en una instalación
más rápida. También Puede elegir el modelo de descarga
solo si es necesario. El modelo las actualizaciones pueden llegar de forma inalámbrica
a la aplicación sin ninguna aplicación nueva liberar. También
puedes usar la configuración remota. y pruebas AB proporcionadas por
Firebase. El inconveniente de modelo de alojamiento en la nube es,
obviamente, significa conectividad. Cuando no hay conectividad,
no puedes descargar el modelo. Además, el modelo
no estará disponible. hasta que se descarguen. Entonces,
una tercera opción es usar un enfoque híbrido. Puedes agrupar el modelo
en la aplicación, así que hazlo utilizable de inmediato.

Luego podrá recibir
actualizaciones de modelos a través del aire de la nube. Si está utilizando
nuestra API base, es proporcionado en dos formas diferentes.
Para mejores términos, SDK. El El modelo en realidad lo proporciona el servicio
Google Play, por lo que es en todas las aplicaciones, por lo que la
aplicación en sí no tiene que contener el modelo, lo que hará que tu aplicación sea
más pequeña. Reconocimiento de texto se proporcionan a través del SDK. El
segundo tipo son los SDK gruesos. Los modelos están vinculados dentro del
SDK. Cada aplicación tendrá su propia copia del modelo, lo que aumentará
el tamaño de la aplicación. La detección de rostros y el etiquetado
de imágenes son compatibles a través de los SDK gruesos. Para
utilizar este tipo de SDK y SDK proporcionado por el kit ML, debe
incluir el ML apropiado Dependencias del kit en su aplicación.

Dentro
de ese archivo, dentro de este sección de dependencia, si desea utilizar
el soporte API a través de el SDK ligero, debes agregar la dependencia
llamada Firebase. Y Además, si desea utilizar un SDK
grueso, aún debe conservar esta línea, porque todos los puntos de
entrada de la API provienen de esta cosa dependencia del SDK. Pero
también necesitas agregar más dependencias. Si desea utilizar el
reconocimiento de imágenes, detección, entonces necesita agregar
la visión de Firebase ML porque Es un SDK grueso. De manera
similar, para el etiquetado de imágenes, debe agregar la dependencia del modelo
de etiqueta de imagen.

A continuación, hablaré sobre algunas áreas
nuevas en las que estamos actualmente. trabajando en. Algunas características nuevas
del ML Kit se encuentran en desarrollo o en fase de prueba temprana.
Empezamos con natural procesos del lenguaje. Tenemos respuestas
inteligentes. Nosotros también planeando ir a otras áreas, como
el habla. Al mismo tiempo, Continuaremos mejorando el rendimiento
y la precisión de la base. API. Lanzamos
la compresión de modelos. y servicio de conversión a nuestros
servicios alfa, lo que ayudó para convertir y comprimir un modelo
grande en uno más pequeño y Versiones más rápidas para uso
móvil.

El servicio de conversión es alfa, usando poda, cuantificación
y transferencia aprender a volver a entrenar los modelos
grandes, hacerlos más pequeños y más rápido sin sacrificar demasiada
precisión YAERS. Fishbrain te permite compartir
las fotos de tu captura. Él Puede identificar cualquier pez con
una foto. Su modelo es más de 80 megas. Al utilizar nuestra conversión
y compresión, ellos pudieron reducirlo.

Sólo mantienen
el mismo nivel de precisión, es ligeramente mejor.
Si estás interesado en probar nuestro servicio de compresión
de modelos, únase a nuestro alfa programa registrándose hoy en g.co/firebase/sign-up. Espero
que hayas disfrutado la charla. hoy y puedo llevarme a casa algunos consejos
y no puedo esperar a verlos. lo que construirás con ML Kit.
Si tienes preguntas, estaré afuera en el salón y también estaremos
en horario de oficina.

Gracias Demasiado para escuchar. [Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
Hola a todos. Bienvenido a Notificaciones de Android modernas.
Mi nombre es Jingyu. Soy Paul Matthews. Soy un defensor
de los desarrolladores en Londres. Entonces, hace tres años, en este
escenario, Chris Ren dio esta cita y es brillante. No molestes
al usuario, respétalo, empoderarlos, deleitarlos, conectarlos
con las personas que preocuparse. Y esto sigue siendo
muy cierto hoy en día.

Muy bien Mire los canales y cómo puede usarlos
en su aplicación. Qué novedades en notificaciones y
por último, bienestar digital. Primero, cómo respetar a tus usuarios.
Así que respeta las de tus usuarios. atención. No molestes al usuario,
respétalo. Algunos útiles consejos, así que respete la configuración
del usuario. Entonces, si han le comunicaron, en su aplicación,
que quieren un determinado configuración para tus notificaciones,
entonces debes respetarla. No intentes anularlo. No
intentes ignorarlo. Tú Debes verificar que las notificaciones
que estás enviando sean no bloqueado. Que todavía quieren
escuchar estos notificaciones. Y finalmente, si
eres capaz en tu aplicación, debe hacer una copia de seguridad de cualquier configuración
de la que le hayan hablado notificaciones y asegúrese de que estén
sincronizadas durante la instalación y dispositivos.

Deberías
utilizar bien estructurado. aplicaciones, haciendo uso de los estilos, como
estilo de mensajería, bandeja de entrada estilo, estilo de panorama general. Debes
asegurarte de que tu las notificaciones son oportunas. Usar mensajes
de alta prioridad para garantizar Reciben tus mensajes cuando tú
intentas que reciban tu notificaciones. Y priorizar las
notificaciones y realizar se ven mejor. Algunas cosas
que no se deben hacer, no las envíes. notificaciones y olvídate de ellas.
Queremos que utilices el características de la plataforma que están ahí
para ayudarle. Por ejemplo, automático cancelar, asegurándose de que desaparezcan.
Tiempos de espera, ¿verdad? ¿Relevante después de cuatro horas? Y
sincronizando a través del dispositivos. Si sabes que usan tu aplicación
en varios dispositivos, deberías intentar sincronizar las
notificaciones que leen en uno. Así que no envíes notificaciones que
no sean procesables.

El punto de las notificaciones es que están ahí
para ser utilizadas. Por Por definición, el usuario quiere
saber algo, lo que significa que Generalmente hay que hacer algo. Así
que no les envíes un notificación que dice, oye, sincronizamos
algunas cosas en el fondo. No molestes
al usuario, usa alerta. una vez y no te asegures de que
se vuelvan locos mientras Están de pie en el escenario, presentando
sobre notificaciones. Asegúrese de que sea representativo
de lo que desea. si eres un aplicación de chat, tal vez comportamiento de
notificación de grupo de niños. Por lo tanto, respete al usuario, de lo contrario,
podría simplemente apague sus notificaciones y es posible
que opten por desinstalar tu aplicación, lo cual sería mucho
peor. Hay características de la plataforma que
permiten deliberadamente las notificaciones están desactivadas.
Por ejemplo, las notificaciones son se publica y los usuarios tal vez
siguen deslizándolo y ahora, en P, le preguntamos al usuario, ¿realmente
te importa esto? ¿notificación? ¿De verdad quieres
ver este contenido? Este actúa en los canales si no estás
describiendo tus canales correctamente, esto puede llevar a cierta
confusión y tal vez a alguna pérdida notificaciones.

Entonces,
veamos más Canales de notificaciones. Proporcionan
control granular. Los canales son la forma de potenciarlos.
Así que veamos cómo usalos, usalos a ellos. En primer lugar, ahora son
obligatorios en todas las aplicaciones, como Tenemos… son obligatorios en API
26 y eso debería ser en todos lados. Ayudan al usuario a
categorizar. Entonces te ayudan categoriza tus notificaciones que
ayudan al usuario a interactuar con ellos. Y
finalmente, permiten al usuario para personalizar su configuración. Entonces,
el usuario tiene la última palabra. Entonces, si crees que algo es
importante y ellos no piensan lo es, te lo pueden decir. Entonces,
veamos lo mejor. prácticas. Nuevamente, debe permitir
que los usuarios administren sus notificaciones a través de la
creación del canal. Debería Permítales tal vez establecer un vínculo profundo
en la configuración para cambiar estos cosas, si están expresando interés
en trabajar con su canales de notificaciones, tal
vez quieran poder cambiar la importancia de algo.

Entonces,
establecer la importancia correcta El nivel para un canal de notificación
parece obvio, pero es tan fácil pasarlo por alto. Configuración
de usuario, deberías respete la configuración del usuario, pero haga
una copia de seguridad cuando pueda y no intente abusar de ellos eliminándolos
y volviendo a crearlos. Otras cosas que no se deben hacer son usar
solo un canal. Este es un claro Olor de notificación, si lo desea.
Si solo tienes un canal en tu aplicación, probablemente
haya algo más que necesites estar mirando.

Si proporciona
descripciones deficientes para usuarios por lo que no entienden
los usos de un canal, no podrá poder. Si utiliza canales
incorrectos o bloqueados. Están tratando de comunicarte
que a eso no le gusta esto. contenido y debes respetarlo.
Enviar spam al usuario con
canales de notificación no es el mejor manera de proceder.
Elegir tus canales con cuidado poder ayudar. Piensa en tus usuarios
cuando elijas tus canales. Piense en el usuario y en cómo podría
querer interactuar con su aplicación.

Por ejemplo, es una mala
idea crear canales en torno a tu nivel de importancia. Esto no es
lo que los canales de notificación son para. Debes agruparlos en
categorías como etiquetar en una foto, publicaciones etiquetadas.
También deberías pensar en creando notificaciones cuando
se necesita más control. Por ejemplo, si estoy en una aplicación
de chat y tengo un canal general Todas las notificaciones del chat
llegan pero luego expreso un interés en controlar un grupo de
chat familiar, debes crear un canal y permitir al usuario sumergirse más
profundamente y tener mas control.

Creando
perezosamente, eso es si no recibes un mensaje a través de tu
aplicación, no es necesario Crea el canal para eso. Y luego,
el usuario puede proporcionar comentarios para usted, para decir, mira,
esto es útil o esto no lo es útil y deberías escuchar eso. Entonces,
en Android P, nosotros Se agregaron transmisiones para
escuchar el bloqueo, bloquear o cambiando el estado de sus
canales de notificación. Tú deberías entenderlos y deberías
reaccionar ante ellos. Tú tal vez deberías hacer una copia de seguridad de ellos
para que la próxima vez que crees un canal en un dispositivo diferente, tiene sentido.
También puede consultar estas API en tiempo
de ejecución para descubrir cómo el usuario interactúa con tus
canales. Entonces, ahora mira las novedades en
notificaciones. Gracias, Pablo. Bueno. Ahora veamos
qué más hay de nuevo. en notificaciones en Android 9. Agregamos
actualizaciones para hacer que notificaciones más fáciles de leer
y escanear.

Agregamos más notificaciones de relleno y volvimos
a usar el redondeado esquinas en la parte superior e inferior. Les encanta
la apertura fluida de la aplicación. animación que estás viendo aquí en
la diapositiva en lugar de cerrar la notificación y abriendo la aplicación,
ahora la notificación va sin problemas en la aplicación. Necesitas
asegurarte de que estás comenzando Tu actividad directamente y tu actividad
comienza rápidamente. Dado que, para la mayoría de los usuarios,
la notificación que les interesa la mayoría son quienes los conectan
con las personas que les importan, por eso mejoramos nuestro estilo de mensajería.
Experiencia de mensajería, por agregando una nueva clase de persona. Una
vez que uses API 28 y si estás usando MessagingStyle en la
notificación, ahora hemos movido Avatar de las personas a la izquierda de
la notificación y puedes configurar ese Avatar usando el método de establecer
íconos. También agregamos soporte para imágenes
y stickers en los mensajes.

Notificación mediante el uso de datos establecidos,
puede agregar una imagen en su notificación de mensajes directamente. La
otra característica que me encanta, en Android, es respuesta directa. Pero llegan
momentos en los que estoy respondiendo a una notificación, accidentalmente
tocaba el notificación y eso abrirá la aplicación
y mi respuesta se perderá. Android 9, puedes ayudar al usuario
con esto. Al recuperar el borrador, puede completar la respuesta
en su aplicación. Así que hazlo la experiencia del usuario mejor,
deleitarlos. Si ya admite la respuesta inteligente
en su aplicación, Le recomendamos encarecidamente que utilice
esta API para mostrarlos también en su notificación.

En lugar de
responder a la notificación, El usuario ahora puede simplemente tocar
uno de ellos y responder. Bueno. Aquí hay un ejemplo que tenemos
para usar las nuevas API. Primero, vamos a crear una instancia
– instancia de persona aquí. Entonces, vamos a utilizar
a la persona. Estamos fijando el nombre, el URI, el icono de esta
persona y esto va a Representa el centro del mensaje.
Y luego nos vamos para pasar eso a este mensaje que
estamos creando aquí. Como Puedes ver, estamos pasando la instancia
de la persona, no como antes donde pasábamos el nombre de
esa persona. Nosotros también queremos incluir la imagen, por lo que estamos
usando el método de establecer datos para incluir esa imagen.
Y luego de eso, estamos agregando este mensaje con otro mensaje,
por lo que estamos agregando dos mensajes en esta notificación
MessagingStyle y Estamos configurando el estilo en nuestra
notificación.

Bueno. Entonces, aquí hay un resumen
rápido de algunos de los pros y los lo que no debes hacer cuando usas
MessagingStyle. primero por favor utilice MessagingStyle para mensajes.
Y esto también se aplica si estás usando Android Auto o
Android Wear. Si eres notificaciones de mensajería
ascendente, utilice Estilo de mensajería. En el pasado,
hemos visto a desarrolladores cambiar entre MessagingStyles para lograr esa
gran expansión de imagen presentación.

Pero ahora, con el método de
configuración de datos, no es necesario Haz eso. Puedes usar
MessagingStyle y esto crear una experiencia consistente para
el usuario. Y siempre es bueno agregar el ícono
para las personas en el notificación, por lo que le recomendamos
encarecidamente que la utilice para agrega el avatar. Si no lo configura,
usaremos la inicial de el nombre de la persona. Y, por último, si tu
aplicación es compatible con smart responda, agréguelo a su notificación
para que esté creando una mejor experiencia para el usuario.
Y aquí hay algunas cosas que quieres para evitar.

Hay muchas buenas razones
para cancelar automáticamente una notificación. Con el fin de brindar al usuario
una información limpia y actualizada tarro de notificación, después de
responder a un mensaje notificación, éste no es uno
de esos casos. tu querrías mantenga esa notificación allí para que
si el usuario quiere responder esta conversación y responda después,
así que por favor no cancele eso y permita que el usuario
se deslice cuando haya terminado con la conversación.

El
otro mal comportamiento que Hemos visto en el pasado que algunos desarrolladores
están configurando esto en para lograr una presentación
visual. por favor no lo hagas eso. Hay dos razones. Una
es porque se romperá Android 9 en la presentación
y el otro… y el otro La razón es porque una persona
sin nombre no es real. persona.
[Risa] Hasta ahora hemos hablado de
cómo llegar al usuario. — cómo puedes ayudar a tu usuario a conectarse
con las personas que le importan acerca de y cómo puedes hacer que tu notificación
sea una mejor experiencia para el usuario, pero quiero hacer una pausa
aquí y observar el uso de la aplicación.

Desde el otro lado. Ya que por mucho
que quiera conseguir eso notificación de mi amigo y familia,
todavía necesito tiempo lejos del dispositivo. Entonces,
para ayudar al usuario con esto, nosotros anunció el bienestar digital en
I/O este año. Si tienes un dispositivo con Android 9, le
recomiendo que lo descargue desde Play Store y regístrate en la versión
beta. Entonces, esto es lo que nos mostrará
el bienestar digital. Él proporciona una descripción general del uso de nuestra
aplicación y proporciona un panel de control que muestra el tiempo que dedicamos a cada
aplicación y el número de notificaciones que hemos recibido. Personalmente
me encanta usarlo para saber dónde paso mi tiempo,
pero a veces veo algunos Las aplicaciones me envían
notificaciones inesperadamente. Uno La pregunta que podría tener es ¿cómo
se cuentan las notificaciones? El objetivo es rastrear al usuario.

Interrumpirinterrupciones. Cualquier actualización
que sea visible para el usuario se cuentan como uno. Si estás
enviando una notificación a el canal de bloqueo, eso no se
cuenta aquí. Entonces, en este caso, vi que esta aplicación
me envía muchos notificaciones así que sentí curiosidad.
Entré en el tablero y Lo abrí para ver el desglose
por horas. Y como puedes ver aquí recibí una notificación cada hora
ese día e incluso a las 4:00 A.m.

De la mañana, recibí ocho notificaciones.
Entonces si esto Las notificaciones son de
gran importancia, me despertarían. En medio de la noche. Afortunadamente,
ese no es el caso. Pero si estas notificaciones son
notificaciones push y son enviado utiliza un mensaje de alta prioridad, lo que
significa que esta aplicación es despertando constantemente un dispositivo
de dosis profunda. si quiero tener bien batería por la mañana, podría desinstalar
esta aplicación. Por ahora, yo Activaré D&D para que no me
molesten. Proporciona formas para que los usuarios
se desconecten y reduzcan interrupción. Puedes encenderlo
volteando tu dispositivo, lo cual es muy conveniente. Pero ¿y
si esto es súper importante? ¿Notificación que el usuario realmente
quiere recibir? Entonces Para aquellos, aquí tienes algunos consejos.
Primero, establezca el derecho categoría a su notificación. Como
podemos ver aquí, en el do configuración de no molestar, el usuario
puede elegir qué bloquear y qué permitir y establecer excepciones en
llamadas, recordatorios y eventos. Si tu notificación pertenece a uno de ellos,
por favor etiqueta tu notificación como tal.

Aquí,
enumeré algunas categorías. lo que corresponde a las
excepciones del otro lado. Como dije, si tu notificación pertenece
a uno de estos categorías, háganoslo saber etiquetándolas.
El otro consejo que tenemos es si se trata
de una notificación en camino. de otra persona, etiqueta tu notificación.
Como puedas vea aquí, en el digtell: el usuario puede
elegir a quién quiere obtener notificado desde. Entonces, agregue
a esa persona en su notificación. y agregue el asociado URI, si es posible. Omitirás No molestar.
Cuando el usuario gira encendido, realmente no quieren que los
molesten. Así que si estás enviar una notificación que
no se espera, eso realmente molestarlos. Así que no abuses
de estas API. Esto nos devuelve al código que
teníamos al principio. Siempre que envíes una notificación,
no molestes al usuario, respetarlo, empoderarlo,
deleitarlo y conectarlo a las personas que les importan.
Gracias.

[Aplausos] [Aplausos]
[Aplausos] [Aplausos].

As found on YouTube

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *