Bienvenido a Android Dev Summit
2018. Bienvenido a Android Dev Summit 2018. Bienvenido a Android Dev
Summit 2018. Bienvenido a Cumbre de desarrolladores de Android 2018. >> Todos, por favor, 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 lo que es más importante, el acceso directo
a los ingenieros. tenemos tantos de ellos aquí esta semana que estoy bastante
seguro Android el desarrollo se va a detener. Tenemos
asistentes de más de 70 países, tanto en persona como en la transmisión
en vivo. Ahora, hablando de historia, fue… estamos
a punto de celebrar nuestro 10º aniversario de Android y
fue hace unos 10 años que los clientes estaban desempaquetando sus
dispositivos G1. Hay un gran potencial para el G1, los desarrolladores crean
más aplicaciones para Google Androide. Lo
hizo bien. Pero es lo que vino next y lo que creaste en Android
que fundamentalmente cambió la industria móvil. Hace
10 años, el móvil los paisajes se veían muy
diferentes.
Las plataformas móviles no eran amigables.
Cada sistema operativo requerido habilidades completamente diferentes
e intransferibles por lo que Era imposible construir una aplicación
móvil a escala. En el edificio 44, un pequeño equipo de ingenieros
dedicados estaba 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 usar con un poderoso SDK que prioriza a los
desarrolladores. para muchos en En ese momento, esto parecía una
idea descabellada. Que hizo Google sabe de telecomunicaciones
y cómo podría ¿Es posible que influya en esta
industria establecida? Fue un momento intenso para el equipo
de Android. Y para agregar 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 horario. Sentimos
que teníamos una ventana a Cumplir con 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 paralelo, planificación de versiones.
Estos gatos no saben nada Finalización del código de
Android Studio. Tendría una versión de Android de
la semana anterior, pero por el por la noche, aparecería una
notificación. era como ver el sistema operativo cobra vida ante tus
ojos. Uno de los grandes retos es el problema
del bootstrapping. Y por qué ¿Compraría un usuario un teléfono sin
aplicaciones? Así que hicimos dos cosas.
Primero, el equipo central de Android escribió
versiones de aplicaciones móviles de los servicios de escritorio de Google de gmail a Maps a 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 primera vista y anunció el desafío
para desarrolladores de Android, con $ 20 millones para ser otorgados. Los
desarrolladores respondieron y por Abril de 2008, tuvimos más de 2000
presentaciones. Y fue increíble, dado que no había
dispositivos físicos, solo el emulador Las aplicaciones fueron sorprendentemente
diversas de los juegos. a redes sociales y utilidades y localización
y GPS fueron los las 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. los Lanzamiento de T-Mobile G1. Fue
el antecesor 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 integradas en la aplicación y el
apoyo más amplio del país aún no se habían construido.
Los siguientes 10 años fue uno de rápida evolución.
En los primeros
días, estábamos haciendo dos grandes lanzamientos al año y nuestro gerente
principal de programas, en ese momento, hizo esta sugerencia improvisada de que
le pusiéramos un nombre en clave postres y esa idea se quedó y esto es
lo que vino después. Asi que, Android 1.5, Cupcake, estábamos
comiendo muchos Cupcakes en el tiempo, agregando soporte de teclado
virtual para que ya no necesitemos El teclado físico.
Añadimos
el copiar y pegar. Había diferentes densidades y tamaños
de pantalla, por lo tanto factores de colocación que vendrán un
par de años después. Eso fue 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 tomando notas y configurando
alarmas. Ese fue el antecedente 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 el tema hueco.
Pero, ahora teníamos un problema porque los teléfonos
se enviaban en 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 arrial.
gominola incluida proyecto mantequilla. Y las animaciones
suaves son algo que yo personalmente ubzesabout. Android
Kit Kat vino con proyecto con 512 megas y DSP
descargado Google Hot word. Le siguió Android 5 Lollipop y fue la
madre de todos los lanzamientos.
Llevó el diseño de materiales a Android,
dándole un aspecto totalmente nueva apariencia, y entre Project
Butter y el diseño, Cambió la narrativa, dándole un
hermoso refinado. Piruleta también presentó soporte para nuevas categorías para dispositivos
portátiles, automóviles y TV. Ahí fue el perfil de trabajo, que 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.
Turrón trajo apoyo virtual. Oreo tenía teléfonos inteligentes de nivel
de entrada y vino con una revisión masiva de la capa de interfaz de hardware para
ayudar a acelerar y reducir la costo de hacer actualizaciones.
Finalmente este año, lanzamos Android Pie, que es una primera
experiencia de IA.
Eso contiene toneladas de mejoras en la interfaz
de usuario e introduce el concepto de bienestar. creo
que es bastante increible para ver cuán lejos hemos llegado todos en
una década de teléfonos inteligentes desarrollo. Y mientras estamos resolviendo
diferentes problemas hoy, está claro que los principios sobre
los que construimos Android son tan cierto hoy como lo eran 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 de entrada hasta el de gama alta y UX en constante mejora.
Entonces,
¿cuál es el próximo 10 tienen en tienda para Android? Bueno, obviamente
no tengo un cristal. pelota, pero hay tres tendencias
que quiero señalar que creo que son importantes. Uno, los teléfonos
inteligentes son cada vez más inteligentes. Dos, la informática multipantalla se está
volviendo omnipresente y nuestra los teléfonos nos van a poder
ayudar con la seguridad y bienestar. Nuestros teléfonos
inteligentes se están volviendo más inteligente AI permitirá que
su teléfono lo conozca mejor. Puedes ver esto en Android Pie ejecutándose
en Google Pixel. los el brillo de la pantalla aprende automáticamente
sus preferencias y en Se prevé que las próximas aplicaciones
le ahorren tiempo. Y la cámara es capaz de reconocer objetos en tiempo
real con Google Lens. Para los desarrolladores que desean aprovechar
la IA, anunciamos ML Kit. Tanto si eres nuevo como si tienes
experiencia 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,
aumentar el rendimiento, MobileNet, para TensorFlow, se ejecuta
ocho veces más rápido con NNAPI en 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 gran experiencia de Android
en todos los televisores, wearables, coches y Chromebooks. Por ejemplo,
la participación del usuario en Android TV ha crecido. Este año, Android
auto ha visto 250% usuario crecimiento y nuestros socios lanzaron
9th relojes. Justo cuando pensabas que habías visto
todo en los teléfonos, estamos a punto de ver una nueva idea.
plegables. se aprovechan de tecnología. La pantalla puede doblarse
y plegarse literalmente y usted puede pensar en el dispositivo como un
teléfono y una tableta. Y en términos generales, dos variantes.
Cuando
está plegado, parece un teléfono, así que cabe en su bolsillo o bolso y la característica
definitoria para este factor de forma es algo que llamamos
continuidad de pantalla. Tú podría iniciar un video en la pantalla
plegada y más pequeña, pero luego siéntese y quiera una experiencia
más inmersiva. Puedes Despliega el dispositivo para obtener una pantalla más
grande. A medida que se despliega, la aplicación se transfiere a la pantalla más grande
sin perder el ritmo. Es un concepto emocionante 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 escuchará más
tarde hoy. Por nuestra parte, estamos mejorando
Android para aprovechar este nuevo factor de forma, con
el menor trabajo posible de tú. Estamos agregando banderas de tamaño variable
para que su aplicación pueda responder a plegándose y desplegándose y esperamos
ver un montón de 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 indepensable.
En la idea misma de salir de su casa sin su teléfono inteligente
literalmente envía escalofríos por las espinas de las personas.
Más allá de la utilidad, FWEEL es
una responsabilidad para 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 significar la diferencia entre la vida
y la muerte. lanzamos Androide Servicios de localización de emergencia.
Cuando marque 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, todo el camino de
regreso a la versión 4 y estamos seguir buscando nuevas formas de
mejorar su seguridad. Ahora, tener un teléfono inteligente contigo
todo el día es increíble, pero también quiere asegurarse de que tiene
el control de su digital bienestar y sabemos que el 72% de las
personas se preocupan por cantidad de tiempo que dedican a la tecnología.
Entonces, con Android Pie este año, presentamos
nuevas herramientas para permitir usted controla el uso con los límites de la
aplicación, reducción de la 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 intenciones.
Seguimos invirtiendo en el espacio con muchas
mejoras planeadas. Bueno. Entonces, terminemos. Android,
desde el principio, fue concebida como una plataforma construida alrededor
de los desarrolladores. Vertimos un toneladas de energía para hacer crecer este ecosistema desde cero. Y
a cambio, has sido un increíble comunidad creando aplicaciones
y servicios increíbles que permiten y deleitan a los usuarios de
todo el mundo. simplemente podríamos No hacer esto sin ti. Así que
gracias. Así que con eso, pongámonos manos a la
obra.
Estoy emocionado de entregar a Steph y al equipo para hablar sobre
el trabajo pendiente que hemos 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 eres parte de lo que hacemos. Kotlin
es un gran ejemplo. Es no es un lenguaje diseñado por Google.
Tal vez no era lo obvio elección, pero fue la mejor elección,
como dejaste claro. Nosotros podría ver a los desarrolladores votando
con los pies en la adopción y los meses antes de que anunciáramos el
soporte.
Como Kotlin, nuestro Las inversiones de los desarrolladores se reducen
a dos cosas en el fondo. Número uno, sus comentarios. Y número
dos, ingenieros de Google usando Android y pensando, ¿cómo
puedo hacer algo que la gente ¿amor? 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 Comencemos con los idus. Hicimos
una demostración de Android Studio en E/S. Profilers, herramientas de
diseño móvil, mejor R C++. Queríamos agregar las
pequeñas cosas, ya sea Integración de Maven a las verificaciones
de Lint. Segundas API. En 2016, Diane Hackborn
escribió una famosa publicación sobre arquitectura de la aplicación diciendo,
no somos obstinados. a lo que ella repl respondió, por favor sea
obstinado. [Risas] Entonces
creamos arquitectura componentes y los refinó en muchos
EAP y los expandió a Paquete de propulsión de Android. Vemos Jetpack
como el futuro de nuestro móvil API. Son API obstinadas, fáciles
de usar e intuitivas que Funciona en el 95 % de los dispositivos.
Queremos
que se integren a la perfección con las primitivas básicas 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 fueron los idiomas. En 2017,
anunciamos la compatibilidad con Kotlin. Desde entonces, agregamos soporte
ide, API y lo movimos a la Fundación Kotlin. Cuarto, entrega
de aplicaciones. Asi que, a los desarrolladores siempre les ha gustado
Play Store, eso es genial cuando quieres lanzar rápido. Nos dijiste que el tamaño
de la aplicación es demasiado grande.
Anunciamos App Bundle y Dynamic
Delivery. Están adelgazando aplicaciones en todo el mundo con la mayoría
de las aplicaciones ahorrando hasta y más 30%. Por
último, la seguridad. androide fue construido pensando en la seguridad desde el
primer día, con la aplicación sandboxing Hemos ampliado nuestros servicios
de seguridad móvil. Hoy, el 99 % de las aplicaciones abusivas
se eliminan antes de que nadie pueda instalar y después de instalar, usamos
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 deshabilitamos o lo eliminamos. Digamos
que estás haciendo todo bien y accidentalmente
te atrapan en esto net sin alguien con quien hablar. Este
es un lugar que creo que necesitamos para hacerlo mejor Tenemos que hacer que
sea mucho más fácil para usted llegar nosotros en estos casos. Entonces, nuestros
ingenieros estarán aquí, mañana, en la charla junto a la chimenea,
para hablar contigo sobre el tema y obtenga sus comentarios.
Ahora, otra manera 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 danos un aviso largo período, por eso dimos casi
un año de aviso. Nosotros pensar en usted como parte de nuestra forma
de trabajar, ya sean ideas tempranas, beta e iterando después del lanzamiento.
Realmente queremos ser confiables y hemos oído hablar de cosas que te encantan,
como el componente de arquitectura y Kotlin. A veces hemos subestimado
el tiempo que lleva para hacer las cosas bien, como ejecución
instantánea. lo que hemos escuchado ¿Quieres que compartamos abiertamente para
que puedas ver las cosas que son temprano, siempre y cuando estemos claros.
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 ids móviles, consola y distribución para desarrollar más fácil,
tener aplicaciones de mayor calidad y para 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 comenzar
con alguien que fue clave en la decisión de Kotlin, es un
gran colaborador de Android, tanto mientras estaba en la
comunidad, ahora en Google equipo.
Es un privilegio entregarle
las cosas a Jake Wharton. [Aplausos] Hola
a todos. Entonces, soy jake, Soy parte del equipo que trabaja en
Kotlin para Android y ha sido 18 meses desde que Steph subió al escenario
en el anuncio de Google I/O 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 Trabajador lenguaje de más rápido crecimiento en
términos de contribuyentes.
Stack Overflow lo
coloca como el 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.
10 X aumento de los números el año pasado. Ahora,
cuando el soporte de Kotlin fue anunció, había un montón de aplicaciones
que estaban usando en Play Tienda. 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
última versión de Kotlin, 1.3 con nuevas funciones de idioma, API,
correcciones de errores y rendimiento mejoras Por ejemplo, las clases
en línea, que en la mayoría 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 apuntamos, evitando asignación sin dejar de restringir
el tipo de seguridad es un gran one La biblioteca de 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 The el soporte tan esperado está en 1.3, que
es una versión más ligera de enhebrar Combina la forma de hacer
operaciones. Cosas que son esenciales para cada
aplicación de Android. y como soy Seguro que sí, estamos ansiosos
por usar estos nuevos Características de Kotlin en las
API específicas de Kotlin. los la mayoría ha sido a través de las extensiones
de Kotlin a través de Mochila propulsora.
Anunciamos el Kotlin extensiones se estaban expandiendo a KTX. Y todos
estos ya están disponibles en lanzamientos estables. Sin
embargo, desde entonces, como nuevas API se agregan a bibliotecas existentes o
bibliotecas nuevas, el KTX se están construyendo extensiones,
navegación, paginación, Las rebanadas tienen extensiones que se
construyen con ellas. Estamos empezando a ir más allá,
el ciclo de vida te permitirá lanzarlo 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 laboratorio de código, cubre trabajo, pruebas de Corrutinas.
Como Kotlin no es un idioma para crear aplicaciones de Android, las
plataformas en la nube de Google lo tienen. Y finalmente, los nuevos cursos de udacity
están disponibles hoy. Ellos usan tanto Jetpack como bibliotecas
populares de terceros Para hablar más sobre Jetpack en su conjunto, me
gustaría darle la vuelta a Romain Guy.
[Aplausos]
>> Hola, trabajo en el equipo de marco
de Android. Unos pocos meses hace, anunciamos Jetpack. Se construye
sobre la base de que nosotros diseñado con biblioteca de apoyo. 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. Empezamos a ejecutar
programas de acceso anticipado hace unos dos años y luego el
primero fue hace 18 meses en Google I/O 2017.
Fuera de las 1000 aplicaciones principales, más lo
están usando. 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 son temprano caras del desarrollo, se están utilizando
en 38.000 aplicaciones en todo el mundo. Sabemos
que muchos de ustedes tienen expresó el deseo que simplemente dar
retroalimentación. Lo movimos todo al público Puede ver correcciones de errores
y características en tiempo real. Todo lo que necesita es Android Studio
y un SDK público. también queremos para usar AOSP. Nuestra esperanza
de un acceso anterior nos ayudará refine y envíe bibliotecas aún mejores.
Entonces, por favor únase a nosotros. Con Jetpack, presentamos el componente
de arquitectura bibliotecas, navegación
y WorkManager. Hay un manera simplificada de tener los
principios en la aplicación usando una sola actividad.
Tienes
animaciones consistentes y transiciones animadas más fáciles.
WorkManager hace que sea fácil realizar tareas en segundo plano.
No es necesario si usted debe estar usando 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 retroalimentación.
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, estamos
pasando a EAP público en el final del mes. Haremos
experimentos con Slices en los resultados de Google.
Nuestro equipo ha estado trabajando duro aportando numerosas mejoras a las
bibliotecas. En 2.1, tienes más 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 fueron herramientas
profundamente integradas y bibliotecas Un nuevo gran ejemplo es
la navegación. Puedes entenderlo fácilmente y construirlo
en su aplicación. Vayamos directamente a una demostración.
Aquí, ya estaba parcialmente hecho. Puede ver el flujo de navegación.
Si ejecuto la demo en el emulador, y esperamos a que Gradle
haga su trabajo, puedo haga clic en tablas de clasificación y
vea diferentes perfiles. si hago clic en el perfil no pasa nada. Puedo
volver al editor, añadir 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 cadena. Y simplemente vuelva a
ejecutar la aplicación. Espera a Gradle. ¿Quieres chatear conmigo después de esto?
[La risa] Si hago clic en el perfil, ahora
puedo ver el perfil. Puedes Mira que no hay animaciones, ni transiciones.
Así que si vuelvo y seleccione 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, vuelve a las tablas de clasificación
y ahora puedes 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, estamos enfocados en sus comentarios.
Así que por favor déjanos saber. Queremos saber sobre animaciones,
UI, estamos aquí. Este Dia. Estamos aquí mañana.
Con eso, me gustaría convertir pásalo a 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é podemos hacer para tener un impacto significativo
en la productividad y dónde pasas la mayor parte de tu tiempo. Escuchamos
que está construido velocidad. Algo que haces todos los
días. Algo que haces cada día, varias veces al día y cada
vez que está esperando esa construcción para terminar, sabemos que
es un minuto perdido.
Nosotros encontramos dos cosas para ser verdad, lo primero
que encontramos es que construir las velocidades en realidad se vuelven
más lentas con el tiempo. El segundo Lo que encontramos es que los nuevos
lanzamientos de Studio son en realidad mejorando los tiempos de construcción. Vimos que las
velocidades de construcción aumentaron un 42 %. Algo está pasando y tuvimos que echar
un vistazo más profundo. Las bases de código son cada vez más grandes,
se agregan compilaciones personalizadas a los tiempos están negando el beneficio de
las compilaciones incrementales. Si usted tienen muchos módulos, la gestión de la investigación
puede agregar tiempo, ya que bien. Está superando nuestras mejoras
de construcción. Estamos comprometido a hacer que la construcción
sea más rápida. Una gran parte de la tiempo, en compilación aquí, esta semana,
puede escuchar y aprender más sobre lo que estamos haciendo. Queremos
hacerlo bien y necesitamos tu ayuda para hacerlo. Nos
estamos dando objetivos y trabajando en herramientas de atribución
para comprender mejor qué es afectando su construcción en sus
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 ejecución instantánea,
queremos aplicar rápidamente cambios. Parte de eso se debe a los tiempos
de implementación. sabemos que ellos jugar un papel muy importante y hemos
enviado una actualización en Android Pie donde estamos viendo una gran
diferencia en el mundo real y ejemplos de proyectos entre Pie y Oreo.
Si está usando USB, nosotros he visto cerca de esa velocidad del emulador.
Por favor, háganos saber si usted está interesado en dar retroalimentación
temprana.
Eso nos lleva a los emuladores.
porque queremos hacer velocidad de iteración más rápida, estamos
invirtiendo en emuladores para cada sistema operativo Le mostramos una instantánea
y arranca y cambia en menos de dos segundos. La productividad
también se trata de haciendo los problemas difíciles más fáciles.
Escuchamos que es difícil saber cómo tu aplicación está afectando la duración
de la batería. Puedes visualizar el el uso de la batería e inspeccionar
los eventos de fondo. La nueva beta de Android Studio 3.3
está disponible hoy y fue acaba de publicar hace unos momentos.
Sabemos que para que ser encantador, tiene que ser no sólo
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, que llamamos Proyecto Mármol.
Usuario de reparación impactando errores e invirtiendo nuestra infraestructura
y herramientas. Nosotros sabemos que a veces hemos pasado por alto las fugas
de memoria antes de que hayamos enviado por lo que estamos construyendo 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 traeremos a Chrome OS más tarde el próximo año.
Ahora, me gustaría invitar a Matt Henderson para 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 subido cinco veces. desde 2012. Pero un tamaño más
grande tiene un costo. reduce el instale la tasa de conversión y aumente
la tasa de desinstalación. Tú nos dijo que usar múltiples APK era una forma
dolorosa de reducir la aplicación Talla. Entonces, el paquete de aplicaciones de
Android lo hace mucho más simple. Usando App Bundle, reducimos el tamaño
generando un APK para el idiomas, la densidad de pantalla,
la arquitectura de CPU que cada necesidades del usuario. Y está funcionando. Si
bien las reducciones de tamaño varían, en promedio, las aplicaciones están viendo una reducción
del 35% en tamaño en comparación con un APK universales. Ahora,
con el reciente establo lanzamiento de Android Studio 3.2,
App Bundles y producción han despegado. Han subido diez veces.
Miles de desarrolladores han adoptado App Bundle y el número
en producción total miles de millones de instalaciones. Y las
aplicaciones de Google, son cambiar, también.
YouTube, Google
Maps, fotos, Google News son todo en producción. Fotos, por ejemplo,
ahora es un 40% más pequeña. Por lo tanto, estamos muy entusiasmados con el potencial
del paquete de aplicaciones. Nosotros firmar APK para la entrega al usuario
final. Esto es altamente seguro. Protegemos su llave en la misma memoria
que — en la misma almacenamiento protegemos las propias claves
de Google. Nos permite procesar 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 App Bundle ahora admite bibliotecas nativas sin
comprimir. Esto utiliza un característica existente de la plataforma
Android que se usaba poco porque en el pasado, habrías tenido
que usar dispositivos.
Nosotros no se necesita trabajo de desarrollador adicional.
El paquete de aplicaciones ahora hace aplicaciones utilizando 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
necesita enviar ese mismo gran característica para el 100% de sus usuarios
si solo va a ser utilizada por 10% de ellos. Y no es necesario mantener
grandes características que son solo usado una vez. Las características
dinámicas se pueden instalar y desinstalado dinámicamente cuando su
aplicación lo solicite. O bien, puede optar por aplazar la instalación
a un momento posterior, cuando la aplicación pasa a segundo plano. Facebook
fue uno de nuestros lanzamientos socios. Y están usando características
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 solo un pequeño porcentaje de La base de usuarios de Facebook está usando, así
que muévelo a una función dinámica.
Evita que ocupe casi dos megas en
el dispositivo de cada usuario Dentro de un paquete de aplicaciones, las aplicaciones
instaladas e instantáneas pueden tener la 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, puede comenzar a construir y probando características dinámicas
usando Android Studio 3.2 hoy y únete a nuestra beta Ahora, me gustaría invitar
te levantas para hablar más.
>> Gracias, Mat.
Hemos escuchado sus comentarios, que le gustaría tener más
control para asegurarse de que los usuarios están ejecutando la última y
mejor versión de su aplicación. Está la API de actualización de Google
Play. Hay un inmediato 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. este nuevo la implementación es menos
propensa a errores y muy fácil de integrar. Lo siguiente
son actualizaciones flexibles. Las actualizaciones flexibles son realmente
geniales porque realmente permiten que actualizar la experiencia para
integrarla en su aplicación. como un ejemplo, Google Chrome empuja a los
usuarios. Si el usuario acepta que actualización, la descarga ocurre en
segundo plano y el usuario puede continuar usando su aplicación.
Cuando
se completa la descarga, es Depende de usted, como desarrollador,
decidir si desea la actualización. para ser aplicado inmediatamente o si
desea que se aplique el próximo tiempo que la aplicación está
en segundo plano. Google Chrome es probando esto ahora y estamos emocionados
de probar el acceso próximamente, en breve, pronto.
Próximas aplicaciones instantáneas. Instantáneos Las aplicaciones están disponibles en 1.300 millones
de dispositivos. Hemos sido duros en trabajar en la simplificación de
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 estar por debajo
de ese límite de tamaño sin trabajo adicional. Adicionalmente,
la dinámica las funciones son compatibles al instante.
También hemos hecho posible cargue y pruebe aplicaciones de intención de
cualquier tamaño. Puedes experimentar iterar sobre el usuario al mismo tiempo
que está optimizando 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 puede tener un
solo 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
desarrollo de Play.
Estamos súper emocionados por eso.
Y, con eso, de vuelta a Steph. [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 para el discurso de apertura.
Gracias. espero que disfrutes Cumbre de desarrolladores de Android.
[Aplausos] >> Ahora, todos, denle una calurosa
bienvenida a Dan. Galpin. [Aplausos] [Pérdida
de Primero quería dar un
saludo 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.
[La risa] De lo contrario, tendré que improvisar.
Puedo hacer esto. Asi que, hay un montón de cosas pasando
aquí, hoy. 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, junto a estas habitaciones.
Ya sea que
esté aquí o sintonizando de forma remota, echa un vistazo a la aplicación
Android Dev Summit para que puedas ver en todos los eventos y crea tu propio
horario. Ahora notará que tenemos diferentes
secciones a lo largo El dia. Esto es un poco un experimento
y los 20 minutos las sesiones se van a ejecutar
consecutivamente con la intención que mires las dos sesiones porque
no hay tiempo para salir el cuarto. Además, tenemos
charlas relámpago que van ser una ronda de velocidad donde nos
movemos lo más rápido posible para romper tanto contenido a 40
minutos. Vamos a tener preguntas y respuestas con
los presentadores, fuera de estos. Asegúrese de revisar el horario
publicado en la pared. Nosotros hay tantos que querían hablar contigo
que en realidad no podemos encájelos aquí de una vez. Quiere
asegurarse de que está aquí para que el ingeniero que trabajó
en los errores que usted podría ser interesados van a estar realmente
allí para defenderse. LAEF [Risas] El horario
de oficina será todo el día, por lo que puede faltar
a clase si quiere ir a horas de oficina.
Y decide, vamos
a estar corriendo todo los estos. Tendremos
una fiesta más tarde. Prepárate para una noche épica de música
y estar de pie alrededor y Hablando con personas.
[La risa] Y eso es. Realmente
aprecio todo. Tenemos un pequeño descanso ahora y así disfrutar
el resto de Android Dev Summit [Aplausos] Todos,
nuestra próxima sesión será empezar en 10 minutos. Bienvenidos todos. Bienvenido
de nuevo. Nuestro programa va a estará en marcha en tres minutos.
Te pedimos que silencias 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. Todavía
no he hecho nada. 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
de qué se trata. Iban para hablar sobre algunas de las transformaciones
que puedes hacer, cómo venir sido LiveDatas y hablar sobre
patrones y anti-patrones es posible que desee evitar.
Vamos a explicar todo esto 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 es tener
una referencia de uno objeto de otro y llamarlo directamente.
Sin embargo, en Android, esto podría tener
problemas.
Los componentes tienen diferentes ciclos similares
y diferentes vidas. Esto es el diagrama de alcance de ViewModel.
Algo simple como dispositivo la rotación puede volver a crear la
actividad. Entonces, probablemente sepas que tener una referencia de actividad
en este ViewModel sería ser una mala idea porque conduce a pérdidas
de memoria, incluso bloqueos sin excepciones. Entonces,
en lugar de tener una referencia AKactividad, 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 poco de código. En 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 la propia suscripción y lo hacemos llamando
al método de observación. los primer parámetro es algo llamado
likecycle. Yigit es va a hablar de esto. La segunda
parte es un observable Esto es lo que se llama
cada vez que el observable, se cambia el valor de LiveData. Entonces,
José mencionó que quieres hacer referencia a un objeto en el
ámbito más amplio, como un ViewModel de un objeto en un ámbito más pequeño,
como una actividad. pero de Por supuesto, cuando observas
algo, tiene que mantener un referencia a usted para poder llamarlo
para que haya un referencia. Pero, ¿por qué esto no
es un problema con LiveData? Está un componente. Para poder observar
LiveData, tienes que proporciona el ciclo de vida y
mantiene su suscripción para libre. Entonces, si el ciclo de vida de su
observador no está en una buena estado, no te devolverá la llamada.
O cuando su actividad o se destruye un fragmento,
lo devolverá por ti.
Si regresa al gráfico anterior,
su observador LiveData solo se llamará cuando se inicie
y antes de que se inicie. No necesitas preocuparte por fragmento. Probablemente
la mayoría, como, propiedad distintiva de LiveData es
el titular de los datos. No es — Seguimos diciendo esto, no es una corriente,
es un titular de valor. Si vuelves a nuestros gráficos anteriores,
a la derecha, tenemos LiveData en ViewModel y a la izquierda
está la actividad o el 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 Ud.
Cambiar el valor cuando
el observable no está activo estado, no tiene idea de que es la
actividad. mientras tu la actividad sigue en segundo
plano, envías un nuevo valor y tu actividad aún no ve
esto. Ahora, la propiedad del titular de datos
entra ahora cuando su actividad regresa, lo que el usuario está
viendo en primer plano. recibe el valor más reciente de
ViewModel. solo le importa sosteniendo un solo valor y es el valor
más reciente. Esto funciona perfecto para la interfaz de usuario porque
solo quieres mostrar lo que es correcto ahora.
Pero, si está tratando de procesar
esto, esto no es lo que estas buscando. Del
mismo modo, si cambia el 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 excelente para comunicar la vista y un ViewModel.
¿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 le dijo a yo, si necesita un ciclo de vida en
su ViewModel, probablemente necesita una transformación, pero eso
es realmente incorrecto. [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 un 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.
Se 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 transforma de X a Y. No sabe nada sobre
LiveData. Entonces, cuando estableces la
transformación, la clave, aquí, es el ciclo de vida se transfiere para
usted.
Digamos que ejecuta 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 hagas
nada y es completamente administrado por nosotros, por lo que
es completamente seguro. Tenemos SwitchMaps. Tienes una aplicación
Yo tienes un usuario medida que mantiene el ID de usuario de
registro. 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 el LiveData, también. Porque el objeto de usuario podría
cambiar, ¿verdad? Que podría devolverte el caché. Así que estás
en esta situación en la que tienes LiveData y un LiveData para el usuario
y necesita encadenarlos cosas.
Entonces, redes, si está encadenando
desde una identificación a un usuario, como cambiamos de una identificación, eso es switchMap.
Proporcionamos LiveData y nuestro función, esta vez, devuelve LiveData.
Entonces, looks característicos como esto. Tienes una fuente.
Al final, tienes un LiveData y proporciona una función que convierte
la X en LiveData. Lo que técnicamente hace es cada
vez que cambia la ID de usuario, llama a tu función. Le das un
nuevo LiveData, se necesita de datos anteriores y ese
es el nuevo. Me gusta cambia vías o como conmutadores.
Está completamente gestionado por ti.
Obtienes todos los beneficios de utilizando datos en vivo.
Ahora, solo proporcionamos mapas y cambiarMapa. No tienes un millón
de transformaciones. Este es muy limitante y, a veces, es posible
que desee escribir su 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 darle una función, a la derecha. Todo
lo que hace es crear esto MediatorLiveData y es una fuente
para MediatorLiveData. 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 súper simple
de escribir. Y ahí está no hay ciclo de vida aquí, pero todo este
código es 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 devolvemos
los LiveData. lo que nosotros hacer, aquí, es que tenemos una
función. Es muy simple. Va a través de todos los LiveDatas y suma
su longitud. Necesitamos que tenga en 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 es, como, cuatro líneas de
código y tienes un transformación de sus
LiveDatas.
Ahora, hay algunos errores comunes
que puede cometer mientras usando LiveData y queremos tocar
la base de estas cosas. Una Lo que vemos mucho es, digamos que
tú, usas JSON, usar la transformación para eso no
es una buena idea porque es una titular de valor. La cadena larga
que obtiene de su servidor es va a quedar en la memoria. Se
va a aferrar a eso para que probablemente no quiera usar
LiveData para algo como que. Bueno.
El segundo elemento es sobre compartir instancias de LiveData.
En un momento, yo estaba tratando de hacer una aplicación
con LiveDatas y tenía un repositorio eso estaba allí. Dije, está bien,
puedo guardar algunos LiveDatas y compartir un solo LiveData.
Yo un
repositorio, toma un dato fuente y el LiveData que estamos devolviendo
en el elemento de carga se comparte por todos los que llaman cargar artículo.
Ahora, esto está bien, funciona.
Pero esto es muy interesante. caso. Este antipatrón se trata
de que pienses en qué Los servidores van a estar activos.
Hay 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
cargamos la actividad 2, va a cargar datos para el elemento 2. La actividad
uno también va a recibir esos datos Como está en medio
de la animación, estás va a ver un destello, una falla.
Ha creado 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
elemento es acerca de 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 desconectas un cable cuando está
en funcionamiento y lo enchufas en algún otro lugar. Esto es exactamente
lo que está haciendo este ViewModel. Muchas cosas horribles suceden
en este ViewModel, por la manera.
[La risa] Para empezar, deberías
tener un, no lo hagas esto, en esta diapositiva.
[La risa] Alguien copió y pegó y luego nos
culpó. [Risas] Está
exponiendo datos de elementos, que es un valioso. Y también, 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
cargar datos de nuestra actividad a establecemos el ID de lo que queremos
cargar y reasignamos el elemento datos a algo. Algo sucedió, por
lo que el observador no está va a saber – En realidad,
incluso si estás devolver LiveData y su observe la suscripción del observador,
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 fuente de transformación. Es
ese LiveData mutable así que cada vez que cambie el ID del artículo,
la transformación se realizará ser llamado con la identificación apropiada.
Después de que haya ocurrido la suscripción
a los datos de este artículo, llamamos cargar datos, pasamos la cadena, podría
provenir de la intención y cuando establecemos el valor, desencadena
una actualización y todo va a funcionar como esperabas
que funcionara.
Bueno. Entonces, nos gusta pensar que
LiveData es increíble y es resuelve todos los problemas, pero no
lo hace. Vemos gente intentando para usarlo en otras áreas. Quiero
dejarlo claro, si estás escribiendo una solicitud para Operadores, compraron totalmente
esto, usen RxJava. Si tiene cosas que no están relacionadas con
el ciclo de vida o la interfaz de usuario, están tratando de sincronizarlo
con el back-end, no hay razón para usar LiveData para
algo así. Utilizar 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á usando Kotlin, es un área nueva y emocionante. Puede
usar RxJava, pero no use Datos en tiempo real. LiveData funciona
muy bien como última capa para su interfaz de usuario Está perfectamente
bien. Si tratas de escalarlo, es solo no voy 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, así como complicado con el uso
de Room. Tiene varios datos fuentes, transformaciones y puedes
mirar el código. si tiene bichos, puedes culpar a este tipo. Él
lo escribió. Sí. Muchas gracias por venir. Espero
que esto haya sido útil y estaremos en – 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?
[La risa] Soy DanielSantiago. Trabajo principalmente
en Room. Bueno. Entonces, hoy, vamos a hablar
sobre Room. Pero antes Nosotros… No creo que mi clicker
funcione. No.
Trabajando en ello, chicos.
Bueno. Lo siento. Está bien. Sí, empezó a funcionar. Ahora estoy
tratando de volver. Bueno. Ahora sí. Todo bien. Entonces,
¿por qué quieres Room o haces ¿Quieres escribir Habitación? Le pedimos
a la gente que escribiera aplicaciones listas para desconectarse [sin audioaudio].
Es casi imposible. Asi que por esta razón, necesita una base
de datos. Tenemos esculita. 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.
Necesitas escribir de repetitivo
para convertir entre tu Java y tu SQLite. No hay seguridad
en el tiempo de compilación así que si está creando una consulta
y olvida un caso "si", vas a tener un bloqueo de tiempo de ejecución.
No puedes observar lo que ha cambiado.
queremos que la gente escriba aplicaciones o interfaces de usuario
reactivas y, si no puede observarlas, es difícil.
Tienes que construirlo tú
mismo. Entonces, lo construimos para tú. Entonces, hace aproximadamente dos años,
enviamos Room, presentamos seguridad en el tiempo de compilación y una fuerte
integración de ID. Como puedas aviso con Room, con navegaciones,
esto es una gran cosa para nosotros. Queremos desarrollar
bibliotecasbibliotecas, junto con Estudio Android. La
E/S de este año, teníamos 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 puede tener una migración fácil.
2.1, vamos a hablar de Este Dia. Esto es 2.0. Tenemos, como,
búsqueda de texto completo, ruedas, AutoValor y más cosas. Uno
de los nuevos y geniales La característica que agregamos en 2.1 es la
búsqueda de texto completo. es una forma de indexar documentos de texto y hacer
que se puedan buscar. tomemos un mira un ejemplo. Imagina 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 Habitación, 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 etiquetas, ya sabes, cuál es el nombre de la
canción, el nombre de la etiqueta y el artista nombre, esto es algo de lo que
queremos buscar y hacer el índice.
Si
fuéramos a hacer esto, necesitamos para escribir una consulta y tenías
que usar el operador. Esto no es Muy bueno. Es muy limitado. Ese signo
de porcentaje es una especie de como un comodín y esto: incluso
si indexa esa consulta columna, SQLite no podrá usarla.
Entonces, no hagas esto. Además, si
intentas buscar realmente de ancho, tienes que expandir esta consulta.
Y esto, como se puede ver, no se 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 su consulta, utiliza un operador diferente y estábamos
viendo la misma columna y eso básicamente le dice al operador
de puré 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 retrocede
unas pocas tablas y mucha de la información. Esto se
conoce como mesas de chat, cuando consulta desde su 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, hey, 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, incluso la URL
no es lo que queríamos índice. Lo
que sucede ahora es que tenemos un mesa delante y detrás, tenemos
la misma sombra tablas para índices, pero 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 tabla
virtual y luego lo harías haz una unión porque queremos obtener las
canciones y, de manera similar, tú todavía usaría el partido.
Una cosa, sin embargo, es que porque estas son dos tablas diferentes,
cuando insertas en el tablas de sonido, las cosas no se insertan
realmente, lo que significa no se actualiza, así que tienes
que hacerlo tú mismo.
Pero ya sabes, no queremos que hagas
esto. queremos hacerlo fácil. Cuando use Room, creará
un disparador para que mantener estas dos cosas sincronizadas,
eso es genial. Otra característica importante es la compatibilidad
con las vistas de la base de datos. Nosotros tienen canciones y álbumes y una canción puede
estar en varios álbumes, por lo que tenemos una tabla de unión que
asocia las canciones. Ahora esto es todo genial Quieres buscar un
listado y tener el álbum nombre y todas las canciones en él 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. Usted tipo de necesidad de escribe una consulta como esta
donde obtienes de la tabla y únelo con la canción y la mesa
y luego puedes devolver tu lista y datos. SQLite
es tan poderoso que puedes expresa esto, si te encuentras
escribiendo estas cosas, es como un repetitivo. Podría
ser genial si pudieras tener una mesa que tiene la canción
y el disco juntos, sin duplicando los datos en esos datos
y las canciones y el álbum títulos Aquí es donde entran en juego las
vistas de la base de datos.
Tú básicamente escribe la consulta que define
el álbum y la canción juntos como consulta. Anota una entidad
con esa vista de base de datos. Y en eso, esta es la misma Habitación.
Puedes tener cualquiera con el campos o lo que sea. Una
vez que lo declare, agréguelo a la base de datos de su habitación, así 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 la consulta,
eso es una tabla. Ahora es mucho más simple 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 la LiveData y ejecutar consultas.
Puedes
hacer todo lo que puedes hacer con una tabla, excepto que no puede hacer
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 direccionar lógicamente sus datos. Otra característica
importante que tenemos han agregado es soporte para múltiples
instancias. Entonces vamos digamos que estamos escribiendo
las aplicaciones, tenemos un juego lista, todas las canciones y tenemos un servicio
de sincronización que va y saca los nombres, 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 estos.
Esto funciona
perfectamente, pero luego su solicitud está inflada,
por lo que decide entrar en poses de fondo. Saca
la canción, escribe en la base de datos y la interfaz de usuario
no tiene idea. no sabe el La base de datos ha cambiado porque solo
sabe si la misma Room. Nosotros no obtenga esa información de
SQLite. Ahora, con Room 2.1, puede 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 por defecto porque necesitamos
crear el servidor s. Es un costo que la mayoría de la gente no necesita.
Habilitamos esta bandera para aprovecha esta función. Otra característica
que agregamos, que en realidad 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, podrías estar utilizando otros valores. La sala puede entender
estos valores automáticos objetos anotados. Si sabes
un poco sobre el valor, tiene una clase abstracta y la
anota con otros valores. Ahora puede anotar ese mismo valor
abstracto y Room será capaz de descubrir que desea hacer
una mesa para ello. Estos ahora se pueden anotar con anotaciones
de habitaciones a través de la tecla información de la columna 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á utilizando
AutoValue. De manera similar, si estuviera usando
una clase normal, lo haría tener campos. Todavía necesita
ese método de fábrica y Room será capaz de descubrir esto.
Usarías la clase abstracta.
Que declararías. Otra
función muy solicitada que se ha pedido por un tiempo
es esto. puedes tener un sincronizar los tiempos de retorno e insertar,
actualizar y eliminar. Escuchamos. Cuando lo solicite, lo escucharemos.
[La risa] Esto es en realidad… esto solo está
disponible en rx, eso es interesante. Que
podría estar disponible, por
lo que la Sala 2.1 es una gran 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 retroalimentación. La gente realmente lo quería.
Esta es nuestra filosofía, nosotros mira lo que está haciendo la comunidad,
cómo lo están usando, qué quieren y ponerlo en práctica.
Entonces, por favor, trata de uso 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 ellas y vemos cómo están usando.
Buscamos
la caja entrante, no realmente tiene caja, pero a veces. Busque
el error de usuario entrante. [Risas] Para
arreglarlos. Entonces, trabaje con nosotros e
intentaremos envolverlo y enviarlo. y también, háganos saber qué
otras funciones desea en Habitación Muy bien. Muchas gracias
por venir a esta charla. Espero fue útil [Aplausos]
Gracias. estaremos
en el arenero área, 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 tendrá en marcha en unos dos minutos. Como cortesía
a nuestros presentadores, le pedimos que silencie sus dispositivos.
Nos pondremos en marcha en unos dos minutos.
Hola a todos, bienvenidos a nuestra
ronda relámpago y esto es donde tratamos de romper una cantidad
increíble de contenido en Esto va a ser 40 minutos. muy,
muy divertido. Tenemos una conjunto increíblemente distinguido
de oradores y voy a hablar realmente rápido. Si escuchas un
gong, eso significa que alguien ha se ha ido para siempre. Vamos a tratar de
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, le mostraré
lo que espera ver cuando ver JNI, que es un código que se
parece a esto.
Estoy adivinando nadie puede decir que el código
que hace algo útil no es en esa pantalla todavía. Y supongo
que nadie puede decirme donde la línea útil está en
eso, tampoco. Esta charla es cómo no hacer eso.
¿Cómo nos alejamos de eso? La respuesta de una línea es, use C++
mejor. Si estás usando el CAPI, es complicado. Terminas con un
estilo de anidamiento. Existen muchos casos especiales, como, estoy
tratando de lanzar un excepción, pero ya hay una excepción
pendiente. Entonces, no escriba eso en cada
método JNI. escribe eso una vez. Y en particular, tenga clases
que le permitan usar un cadena como una cadena. Ya sabes, usa
una cadena J como si fuera una cuerda.
Similar para un aumento.
No quieres hacerlo con una J cuando puede usar corchetes de
operador. Referencias locales, también. Las
cadenas y arreglos rimativos son la mayoría de ellos. Excepciones, más
difíciles de lo que parecen y el… el tipo de primitivas sin procesar que
obtienes en JNI no son muy útiles. Esperan que usted mismo encuentre
la clase y cree una instancia. Si 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. Tener una función que toma una cadena de
formato es un gran alivio y — Correcto.
He estado hablando de esto en el dicho abstracto, debes usar
estas cosas. Existen 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. pienso cinco segundos es tiempo suficiente para
ver qué hace el trabajo aquí.
No necesitas tener el estilo donde
tenemos los constructores. y verificamos, ¿realmente funcionó?
Si estamos preparados para usar Excepciones de C++, eso es más
avanzado. Esto te da el 90% de el beneficio con el 20% del esfuerzo.
Esto es lo que dice el código parece en Android para esa llamada.
Entonces, eso fue algo realmente
simple, donde realmente había solo 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 mezcle
todo el modelo de JNI cosas.
Por otro lado, no mezclarías
tu lógica empresarial y cosas de renderizado de interfaz de usuario.
Es un consejo similar, no hagas eso. Si quieres un buen ejemplo de esto,
el sistema operativo Android la clase está implementando exactamente
de la misma manera. Es super repetitivo, muy aburrido
y así nos gusta. Si necesita preocuparse por las versiones
antiguas de Android y tiene varios archivos SO, que pueden ser
complicados.
Te recomendamos ir a GitHub. Los archivos comprimidos, que
se mencionaron anteriormente en la nota clave Uno, una gran biblioteca
es generalmente más grande que muchos pequeñas bibliotecas.
Gracias. Si usted tiene preguntas, por favor ven a buscarme. Estaré
haciendo puertas abiertas todos 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 sabemos
que se guarda en Java bytecode y podemos transformarlo
y ejecutarlo en Android. Puede ejecutarse en servidores en la nube y nuestros
escritorios, etc. Hay dos sabores más de Kotlin,
JVM. Y luego está Kotlin/Native que puede
ejecutar o apuntar a varios plataformas, incluso montaje web 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 de Kotlin en el Carpeta principal de JS, se compilarán
en archivos JavaScript.
¿Qué quiero decir con Kotlin
específico de la plataforma, el páginas de referencia para cada uno de los
paquetes de Kotlin, pase el mouse sobre cualquiera de ellos, en la parte superior
derecha, verá estos multicolores chips que te dicen qué objetivo
de compilación es este disponible en. El paquete de
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 pura de Kotlin
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 comunes donde puede colocar
código independiente de la plataforma. Lo que pasa con el código
independiente de la plataforma, es no 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 forma funciona. Tú puede tener su código específico de plataforma,
depende de un compartido biblioteca común o conjunto de fuentes.
Entonces, sabiendo todo eso, me propuse para escribir una aplicación de ejemplo solo
para aprender sobre Kotlin una plataforma y escribí un juego. Todavía necesito
crear una aplicación de 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 pongo en un biblioteca compartida utilizada Kotlin
Common. Y de hecho, el único el conjunto de fuentes que tengo es common main,
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 debe 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 quiero hacer es que realmente lo
delegue a 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 depende
de estos. ¿Cómo funciona en Kotlin? Bueno,
está esto de esperar un mecanismo real que le permite declarar
las 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 de mi conjunto de fuentes comunes
al otro, parece algo como esto. Pero, en realidad, al compilar
para un determinado plataforma, como JS, esta dependencia
realmente usará Lienzo HTML.
[La risa] Bueno. Si pudiera mostrar el enlace
al proyecto para que todos pueden verlo, eso 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 en
estos días. Los vectores son increíble. Son nítidos en cada pantalla
de densidad única. Ellos son también extremadamente flexible
y quiero hablar de esto para que puede sacar el máximo provecho de los vectores. Entonces,
la mayoría de los vectores en su aplicación probablemente se vea algo como
esto.
Tienen partes y codificar un color. Algo como
esto, relleno o trazo aquí. Tal vez estés usando un recurso
de color. hay mucho más puedes hacer aquí. Lo primero
es usar los colores del tema. Por lo tanto, puede usar los colores del tema
de dos maneras. Puedes aplicar un tema color como un matiz. Tintará todo
el dibujable. Aquí está para los íconos y puede tener
un solo recurso que muestre en diferentes temas. Ya no tienes
que preocuparte de qué color activo que obtuviste de tus diseñadores,
que obtuvieron exactamente el tono correcto de gris que necesitas.
Será teñido en tiempo de ejecución por lo que siempre
es correcto. En este ejemplo, voy a usar color primario. Digamos que tienes una aplicación
de deportes, que usando un tema para un equipo determinado. Puede hacer
referencia a ese color de tema para que tienes un solo dibujable.
Soporte
de vectores 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 voltear entre ellos. Si el renderizado
es 99% igual, querrás guarde el trazo aquí, esto ahorra
la duplicación. lo defines como esto en sus recursos de color y
consúltelo como le gustaría recurso de color Mi
función favorita es el degradado. Los vectores admiten lineales, radiales
y de barrido. Un lineal tiene un inicio fin, coordenada xy s. De
hecho, puedes obtener 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 degradados en un directorio o la sintaxis de
recursos en línea y 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 Embarcacion. Es útil para iconos adaptables.
Los vectores no son compatibles sombras. Si necesita construir
un spinner personalizado, este es necesario lograr. Los degradados
tienen ciertas formas, pero se pueden transformar,
como girar, etc. yo quería crear esta sombra de
forma ovalada. Así que lo hice esto dibujando un círculo con un
gradiente radial y usando el función de escala y para transformarlo
y producir el efecto que es después.
Si no llena toda la
forma, puede usar esto. Continúa coloreándose hacia el exterior.
Si usa un modo de repetición, se repetirá y continuará. O un
modo de espejo volverá y adelante a través del gradiente. También
puede utilizar 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. Este ejemplo
es una sola forma.
Usando un gradiente radial. Puedes
hacer un spinner de carga o combinarlo Este es el gradiente
sobre esta área y usted puede divertirse un poco animándolo. Entonces,
espero haberte mostrado que los vectores son nítidos, pequeños
y efectivos. quiero mostrar usted lo que puede construir. Este es
un único vector dibujable. Yo Tuve el placer de animarlo. Este
es un vector dibujable, extremadamente pequeño, extremadamente
agudo.
Eso es dibujables vectoriales. Muchísimas gracias. [Aplausos] [Aplausos]
Tenemos una breve pausa mientras tenemos
la siguiente sesión en cola arriba. Espero que hayas disfrutado eso presentación orientada a vectores.
vamos a entrar un poco un poco de El enlace de datos, Ojalá. Entonces,
¿cómo están todos disfrutando el 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 por Décimo aniversario de Android.
Y, de nuevo, gracias a todos. yo Conozco a muchos de ustedes — cuántos
de ustedes viajaron por 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 estaba de vuelta
en 2015, mi reacción fue, ¿qué ¿Terminamos? Expresiones. El enlace
de datos es genial. Puedes realmente elige cuánto quieres
usar. es el principiante nivel. Beneficios inmediatos. En
el nivel intermedio, obtienes adaptadores de encuadernación personalizados.
Tiene datos de UI y UI para datos. Vamos a deshacernos de buscar
vista por ID. [Aplausos y vítores] Necesitamos
habilitar el enlace de datos. Todo lo que tiene que hacer es configurar el
enlace de datos como verdadero en su Archivo Gradle y colocación de envolturas
de diseño. Puedes hacer eso en Android Studio lo sabe automáticamente
tirando hacia abajo 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 use expresiones en 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. En el cuarto tiene otra
vista. Ahora, para dar acceso a Data Binding,
establecemos el enlace objeto como este después de inflar el
diseño. Entonces, bonita directo y entonces nuestro ViewModel
ahora está disponible para ese diseño. Pero la verdadera pregunta
es, ¿cómo funciona todo esto? ¿trabajar? Y la respuesta es que
no hay magia en Data Binding.
Pero parece magia de Meige
y eso es porque tenemos adaptadores Cada llamada se hace un adaptador
vinculante. Puedes ver el código y usar un depurador. Esa
última línea es en realidad la establecer el texto que estamos buscando.
Lo hacen comportarse inteligentemente a través de todos estos puntos
de vista. Mirar los archivos de origen le
ayudará a crear su propia adaptadores de unión. Entonces, hablemos
de eso. los adaptadores tomar uno o más nombres de atributo.
El método toma una vista del primero parámetro. Pueden simplemente — los adaptadores
pueden diferir solo por datos tipos Por lo tanto, también puede usar
adaptadores para anular el comportamiento. Esto hace que la carga de la
imagen se deslice pero tienes que ser cuidado con esto También podríamos
hacer un montón de cosas con adaptadores de enlace avanzados.
A veces el viejo es bueno, como oyente. El compilador vinculante
pasará el anterior. en el primero. Y, además,
puedes utilizar multiatributos, lo cual es genial.
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 hacer
automáticamente la observación. Esto está muy bien. Solo estamos exponiendo
una clase inmutable. aquí. Y luego simplemente expone un
LiveData usando Kotlin. Y luego necesita 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. En realidad, puede llamar a esto
con enlace de datos bidireccional con iguales.
Podemos observar LiveData.
Entonces, en este caso, está bien exponerlo y luego establecemos
el propietario del ciclo de vida y usamos la notación at equals y eso
es todo. Datos bidireccionales Unión. Tal vez eso ya no sea
tan experto. Echa un vistazo al laboratorio de código
de enlace de datos. Ahí tienes [Aplausos]
Hola a todos. Me llamo Carmen y yo estamos en el equipo de
rendimiento de Android y hoy estoy le mostraré ejemplos de cómo analizar
el rendimiento utilizando Sistrace. 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. los la realidad podría sorprenderte.
Y aquí es donde Systrace interviene. Por lo tanto, Systrace es una
herramienta que le permite recopilar información de tiempo sobre lo que está
pasando, en su dispositivo, y visualizarlo. Registra hasta el segmento
de tiempo de la CPU individual. Es la herramienta más importante que tenemos
para depurar problemas. Nosotros han dado charlas sobre cómo usar
Systrace en el pasado.
Google para la charla I/O.
Hoy quiero hablar de la problemas que puede encontrar. Usé Systrace
para tres aplicaciones que no usar. Empecemos. Con la primera
aplicación, cuando miro el rastro, tres comienzos de actividad diferentes
me saltaron a la derecha lejos. Hay muchas razones para utilizar
las actividades de trampolín. yo ver cuándo los desarrolladores intentan
usar una pantalla de inicio. Ellos definitivamente afectará su tiempo de lanzamiento.
Si estás tratando de hacer una pantalla de inicio, 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
de niños. A veces necesitamos inmediatamente por razones de UX. Podrían
ahorrar 42 mill más segundos. La
segunda aplicación sigue lo que Yo esperaría. No hay actividades
ni servicios extra siendo iniciado. Busqué más e hice
clic en las vistas que se estaban inflado y los nombres de los widgets
que pude ver coincidieron 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 está diciendo contención
de bloqueo, donde el propietario de el bloqueo del hilo. Así que 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 base de datos móvil
como Sequel. Esto puede ser o no ser algo que pueda arreglar porque es
posible que necesite coordinar con el Reino biblioteca. De
cualquier manera, este es otro potencialpotencial 30 mill segundo.
Hay dos actividades que se están
iniciando, pero hay otra mejora potencial aquí. Incluí
el nombre del hilo, este es el subproceso de la interfaz de usuario. Si nos desplazamos
hacia abajo, podemos ver estos subprocesos de fondo en ejecución.
CPU
0, CPU 1 CPU 2. Es impresionante hicieron subprocesos de fondo pero
hay un rendimiento potencial tema. Estos subprocesos en segundo plano están
bloqueando muchas operaciones de E/S. Esas son las secciones naranjas. Son
un poco difíciles de ver. Para que pueda ver que está ocurriendo
algo de E/S. ahora resulta que en muchos dispositivos tenemos
que preocuparnos por las E/S contención.
No necesariamente
hay más de uno canal a utilizar. Pueden estar ralentizando
la solicitud de E/S del subproceso de la interfaz de usuario.
Eso se destaca abajo. Vemos los ocupados 4 milisegundos. Podemos
ver que en esta sección, gastar 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 archivo en tu navegador y ver
todo lo que te mostré Este Dia. Y esto apenas araña
la superficie de lo que puedes hacer con Systrace.
Pude
identificar estos oportunidades en aplicaciones en las que
no trabajo. Cuando miras un rastro de tu propia
aplicación, va a hacer 100 veces más sentido para ti. E incluso
puede agregar su propio rastro puntos dentro del código de su aplicación
para que pueda ver el contexto de lo que se está ejecutando en su aplicación
desde el seguimiento.
Gracias. [Aplausos]
PRAEF Hola a todos. Espero que hayamos estado disfrutando
el primer día hasta ahora. soy parol Queremos hablarte
de ciertas prácticas que usted, como desarrollador de aplicaciones, puede
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 coleccionando y cómo lo estás usando.
Por lo tanto, puede servir como una plataforma
para construir experiencias sociales. Nosotros tener esfuerzos continuos. Entonces,
las cosas que queremos tocar hoy son cómo sus aplicaciones están accediendo
a los datos de los usuarios, asegurando su usuario sabe a qué se está
accediendo y transparencia. Por lo tanto, tenemos un enfoque de
varios niveles. Nos enfocamos en mejorar API. Nos
preparamos para mantener el abuso en verificar y asegurar que se proporcione
un campo de juego equitativo y un experiencia segura para nuestros usuarios.
Hemos construido para identificar cuando las aplicaciones pueden estar abusando
de la información personal de un usuario.
También tenemos revisores humanos, por lo
que no se trata de bots e IA, sino en realidad, las personas que revisan las aplicaciones
para asegurarse de que el usuario se asegura el derecho a la privacidad
y se brinda una experiencia segura. También invertimos mucho en
seguridad. tenemos la seguridad programa y programa de vulnerabilidad.
Siéntase libre de dejar caer más si quieres saber más sobre estos.
Finalmente, tenemos Google Play, que
ayuda a los usuarios a conservar sus 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 tú. Tu como los desarrolladores, que construyen estas aplicaciones,
juegan un papel muy importante en el ecosistema Puede abogar por mejores
políticas de privacidad y asegúrese de que no se comprometa el derecho
a la privacidad de los usuarios. Por ejemplo, si tiene una solicitud
para recopilar ciertos información sobre un usuario desde su dispositivo,
una pregunta todo el camino vale la pena preguntarse, ¿realmente
lo necesitamos? ¿Cómo planeas usar ¿eso? ¿Y lo seguimos usando?
Hay razón es que es en realidad no es raro que cierta
información sea recolectado, que en realidad
nunca se usa y a veces se abandonado.
Algunos
datos que vemos ser recopilados incluyen IMI, una lista de aplicaciones
instaladas, para orientar anuncios a ellos Recopilación de información de una
aplicación de información o un red, como el nombre o la fuerza.
probablemente siempre no necesita tal información. Entonces,
para algunos casos, tenemos privacidadopciones de privacidad. Algunos
ejemplos incluyen animamos que use ID de instancia. Si está
tratando de confirmar la número de teléfono del usuario,
le recomendamos que utilice este. Puedes también considere la calificación
en lugar de la buena ubicación y entonces, si desea ver si un usuario
en el núcleo, puede verifique el foco en lugar de solicitar
el estado de lectura del teléfono, que da muchos más datos. Por
último, desea asegurarse que sus usuarios estén al tanto
de qué datos se recopilan y cómo se está utilizando. Esto no es
solo 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 con qué
propósito se está utilizando, usted está obligado a revelar a ellos
y obtener permiso para hacer asi que.
Los datos se están recopilando la aplicación en la tienda con fines de
prevención de fraude, por lo que esta necesitaba ser revelado al usuario y
solo después de que el usuario consiente en que los datos sean
cedidos. Hemos trabajado duro y lo 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 su propio registro de llamadas del grupo de permisos. Si
su aplicación está solicitando… 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 compilar con una función que requiere
un estado de lectura del teléfono permiso. Asegúrese de usar
if por razones válidas. Hablando de acceso limitado, aplicaciones
ejecutándose en segundo plano requerirá las siguientes restricciones.
no lo harás ya no tiene acceso al micrófono o
la cámara en segundo plano, sensores Si su aplicación necesita acceso
a los eventos del sensor en dispositivos, necesitará usar un servicio
terrestre completo y para informar y proteger aún más 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 los campos y métodos de contacto
quedarán obsoletos. Entonces, si su aplicación está accediendo o
actualizando estos campos, le preguntamos que utilice métodos alternativos. Podrías
cumplir con cierto uso casos mediante el uso de proveedores de contenido
privado o el almacenamiento de datos en sus sistemas back-end. Así
que esto fue muy breve hablar. Esperamos haber podido ofrecerle
información para construir aplicaciones que son conscientes. Como
hemos mencionado, definitivamente creen que la seguridad y la privacidad
es una asociación entre usted, el desarrollador y nuestra
plataforma. Si tienes algún preguntas al respecto, por favor ven
a buscarnos en el 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 forma en que pueden combinarse para tener
una aplicación comprobable y mantenible.
La separación de inquietudes Hola a todos. Es
genial estar aquí. Mi nombre es Phil Adams. soy investigador
Y yo soy Pierre Lecesne. Estamos
aquí para hablar de 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 la 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 Este Dia. Se muestra cuando la aplicación
crece, instalación exitosa tasa baja. Muchos usuarios no
tienen suficiente espacio en su dispositivo. Los datos pueden ser
costosos y las velocidades de conexión, lento. Quiero que pienses también
en tu propia experiencia. Cómo ¿Cuántos habéis visto un aviso
de Play? Comenzamos a investigar esta área
más de cerca y descubrimos que liberar espacio es un factor importante
en las desinstalaciones.
Esto es un problema para las personas con dispositivos
de almacenamiento bajo. También es un problema con los dispositivos
de gama alta que llenan el dispositivos con contenido HD. Uno de cada cinco
dispositivos en el Reino Unido tiene almacenamiento bajo. Una solicitud clave que escuchamos
de los desarrolladores también es para ayudar 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, las
principales razones por las 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 videos HD también siguen creciendo.
Hacer que su aplicación sea grande la pone
en riesgo de sufrir todos estos desventajas Pierden adquisiciones
y se desinstalan para liberar espacio. Seguro
que ya lo sabes y has probablemente solo lo consideró una compensación.
¿Agregas nuevos? ¿caracteristicas? ¿Pierde instalaciones
y genera más desinstalaciones? nosotros no quiero que tenga que preocuparse por estas
compensaciones. Durante algunos años, ha habido una
forma de optimizar. Puedes usar varios 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
ayuda a hacer su vida más fácil. Por
lo tanto, 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 tasas 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 ayudarlo.
Primero, queremos ayudar conviertes más instalaciones y minimizas
las desinstalaciones creando aplicaciones más pequeñas. Entonces, queremos
hacer posible que usted pueda ofrecer diferentes características a
diferentes audiencias, bajo demanda. Y, por último, queremos ayudarte a mantener
a tus usuarios actualizados en 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 paquete de aplicaciones.
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 grande idea, Google Play puede ayudar y
encargarse de entregar solo lo que se necesita en su nombre. No
hay necesidad de enviar un montón de idiomas y recursos del
dispositivo. Apoyamos tres separa las dimensiones de la caja, el
idioma, las 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 colocando
cada cadena en un APK diferente.
Juntos, llamamos a estas divisiones
de configuración o config divisiones
Cuando vamos a servir una aplicación a un dispositivo, solo necesitamos servir
una porción. instalaremos el APK base, así como la división
de densidad, la arquitectura división y la división del idioma
inglés. puede 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 correcta y la arquitectura se
dividieron, pero los franceses y División 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 ellos tienen 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. Poniendo todo junto, la
imagen se ve así. Tú en realidad no necesita 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 única y seleccione las
cosas correctas para servir para cada dispositivo. Para
resumir, el paquete de aplicaciones contiene todo, firma cada APK para
entregar a los dispositivos. Debido a que Play ahora está firmando
los APK, esto significa que debe sube tu clave de firma a Google
Play. esto es parte de el programa llamada 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 nuestra propia inversiones. hemos
estado chateando con desarrolladores que ya usan
App Bundle sobre lo que me gusta. Recientemente, llevamos a cabo
un taller con desarrolladores de India, tienen millones de instalaciones
activas y son muy sofisticados a la hora de mantener pequeños
los tamaños de sus aplicaciones.
Mejora sus tasas de conversión.
Red Bus dice que es más
eficiente. 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 un tamaño fantástico ahorros. 56 % de ahorro de tamaño
en comparación con un APK universal. Es difícil sacar eso de incremental Las aplicaciones
de Google están adoptando la el paquete y la producción y viendo
fuertes ahorros, también. Google MapsMaps, Google News 27, informan
de la racionalización de su 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 adopta App
Bundle, no solo está ganando ahorro de tamaño, hoy, se beneficiará
de automático optimizaciones Aquí hay otro.
Hemos
añadido un nuevo Android plataforma al paquete de aplicaciones
llamado nativo sin comprimir bibliotecas Las bibliotecas nativas tienen
que ser descomprimidas desde el 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á utilizando
App Bundle, nos proporciona su bibliotecas y lo recreamos. El ahorro
de tamaño que estamos viendo son alrededor de 16% de reducción en tamaño
y 8% de reducción en descarga Talla.
Como expliqué, la aplicación es
más pequeña en el disco porque no necesita hacer una copia. Es más
pequeño porque nuestro Los algoritmos de compresión funcionan
mejor con datos que no son ya comprimido. Nuestro socio vio
ahorros del 22% y 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
descarga es más pequeño, más rápido para instalar y ocupa menos espacio
en el disco. Ahora, todavía queremos que mantengas
el control cuando estos las optimizaciones deben enviarse
a sus usuarios. El juego solo 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 crea con Gradle 3.3. Ahora,
echemos un vistazo a cómo puede crear, probar y publicar paquetes
de aplicaciones de Android. Puedes construir App Bundle en la versión
estable 3.2 de Android Estudio. Es muy similar a construir
un APK para la mayoría desarrolladores por lo que es fácil
de cambiar. Para quien prefiere la línea de comando
o desea integrarse con sistemas de compilación automatizados, el complemento
de Gradle para Android proporciona Tareas para construir paquetes.
Usarías la tarea ensamblar.
Con Android App Bundle, utiliza la
nueva tarea de paquete. 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 el tipo de construcción elegido.
Se llama paquete.aab. Queremos que los desarrolladores mantengan
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
en las que puedes construir paquetes hoy. Son de código
abierto, otros ya lo son adoptándolos. Los juegos que usan Unity
pueden crear una aplicación de Android Paquetes, también. Agregaron
soporte en la versión beta y puedes unirte al programa beta ahora.
Entonces, ahora, veamos cómo puede
adaptar sus pruebas. Durante el fase de desarrollo, cuando necesita
iterar rápidamente, no necesita 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 desee 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 consigamos alta
fidelidadfidelidad. Cuando desee compartir los APK, generados
a partir del paquete de aplicaciones, puedes usarlo. Esto es lo que
usan Play y Gradle en sus capucha para generar APK. Es transparente
sobre cómo generar APK y puedes descargarlo
en el repositorio de GitHub ves aquí. Genera
lo que llamamos un Archivo de conjunto de APK que contendrá
todos los APK para todos los dispositivos compatibles con su aplicación.
Puedes compartir este archivo y Todavía use la herramienta de paquete,
que simulará lo que hace Play.
Como puede imaginar, un conjunto de APK puede
volverse bastante grande, por lo que si quiere construirlo para un dispositivo
dado, puede hacerlo con especificación. Puede compartirlo
y puede instalarse en los dispositivos.
Esto es lo que la línea común parece, para construir el archivo de conjunto
de 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 hacer la especificación
del dispositivo en este formato JSON. Si
quieres un APK único, debes 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. Puede obtener, bocado
por bocado, lo que su usuario obtener. Esto es similar a las pistas alfa y beta.
No hay demora entre el cargar y estar disponible en el dispositivo. Puede
crear una lista de correos electrónicos. Los probadores 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 ha construido y probado paquetes, hablemos de una nueva
vista. En la consola Play, empezamos a mostrar una estimación
cuando pensamos que una aplicación podría beneficiarse del App
Bundle. Calcularemos lo que podrías ahorrar si cambias. Una
vez que elija cambiar, usted administre su lanzamiento tal como lo
hizo con los APK. Simplemente cree una nueva versión y suelte el paquete
de aplicaciones en el mismo ubicación. Para ayudar en su migración,
puede cargar APK en su pista de producción. Cuando
haces esto, Play no va para reasignar el APK. Hicimos
esto para que puedas sentir seguro sintiendo el App Bundle
con una pequeña cantidad de los usuarios primero.
Una vez que lo hayas subido, revisa tu lanzamiento, lo lanzas.
Y eso es. no puedo Enfatice esto lo suficiente, no hay que
lidiar con múltiples APK. Tocar consola ha creado todos los APK para
los dispositivos compatibles con tú.
Ahora
que ha subido su 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 bundle explorer,
que le permite navegar por su paquetes cargados. En
la primera pantalla del paquete explorer, verá el ahorro de
tamaño. esto va a ser diferente, dispositivo por dispositivo, así
que calculamos esto usando un configuración popular. Si hace clic
en ver dispositivos, puede ver qué dispositivos hay en cada
grupo.
Alternativamente, puede buscar un dispositivo
compatible por nombre para descargue el conjunto de APK generados
que se entregan a ese dispositivo particular. Esto es útil
cuando tienes un error. informe para que pueda obtener los APK
exactos que Play le ha proporcionado. No nos hemos olvidado de todos los
que utilizan nuestra publicación. APKs, está disponible por la API y las herramientas
de automatización y CI son adopción del paquete.
Encontrará
toda la documentación como estas URL. [No audio]. Puede
reducir el tamaño de tu aplicación Algunas funciones pueden ser utilizadas
por el 10% de sus usuarios, para evitar tener el espacio en disco para una
característica que no usan, usted puede optar por retractarse. Las funciones
dinámicas se pueden utilizar o puede diferir su instalación
para un momento posterior cuando la aplicación va [no audio]. Evalúa
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 eso. Las
funciones dinámicas ayudan a Facebook con su estrategia de gama alta. Ellos
son capaces de entregar características avanzadas a solo
dispositivos compatibles y eliminar características alarmantes que no se usan
con frecuencia para evitar tomar espacio en ese dispositivo para siempre.
Facebook nos ha dicho que las características dinámicas funcionan bien
cuando están trabajando en un nuevo rasgo.
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. Estos 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 está
usando. Lo evita tomando 2 megabytes Otro es la comunicación
en tiempo real. Solamente usuarios con dispositivos que pueden
apoyarlos y realmente quieren para usarlos es necesario descargarlo.
¿Qué
aspecto podría tener esa experiencia? como para un usuario? Tomemos un
ejemplo simple. Imagina eso tienes una aplicación de recetas y
quieres que sea pequeña. Tiempo a todos sus usuarios les gusta buscar
recetas, solo una pequeña A una fracción de ellos le gusta agregar
recetas y te das cuenta de que esto ocupa un tamaño significativo en
su aplicación. Puedes elegir dividir estas características en su
propio módulo y servirlo solo cuando sea necesario. Podemos ver cómo
se ve para el usuario aquí. La aplicación se abre y luego el usuario va
a agregar 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 sus aplicaciones podrían ¿Son buenos candidatos para ser
desglosados? Si solo un pequeño fracción de sus usuarios, use esta función,
podría ser una buena candidato.
Y finalmente, considere
si los usuarios pueden esperar unos segundos antes de descargar y usar
esa característica. Si está interesado en modularizar
su aplicación, le anímate a mirar los artículos.
Ahora que hemos cubierto 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 características dinámicas. Escribir el nombre de su módulo y Android
Studio descargará un nuevo función para usted. Bajo el capó,
esto es lo que hace Studio. Se agrega un identificador de división.
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, declaras 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 pre-L. Este está configurando usando la etiqueta de fusión.
Aquí hay un ejemplo con nuestra aplicación
de recetas. tenemos dos dinamicas caracteristicas. Tiene igual verdadero y
el módulo es fusible igual a falso. Puedes ver que Play solo lo agregará
en el APK pre-L. En el módulo dinámico, puede ver que se está implementando
un nuevo complemento de Gradle. usó. 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 tienda, 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 están a cargo
del administrador de división. Tú construye una solicitud con todos los
módulos que deseas 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 usar
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 en WiFi y cargando
Por eso, le permitimos instale hasta 100 megas con nuestra confirmación
del usuario requerida.
Le permite administrar sus módulos
bajo demanda. Puedes desinstale los módulos que la
aplicación ya no necesite. Por lo tanto, al instalar un módulo bajo
demanda, la aplicación no necesita ser reiniciado. El código está disponible
de inmediato y sus recursos y los activos están disponibles una vez
que actualice el objeto de contenido. En Android L y M, debe reiniciarse
por completo. Incluimos un biblioteca dividida que tiene divisiones para
L y M hasta que la aplicación funciona en segundo plano y podremos instalarlo
correctamente. Si usted es familiarizado con él, configurará split
compat 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 split compatibilidad en la instalación.
Ahora, hablemos de versionado Cuando publique una fecha
para su 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.
Hablemos ahora 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 la funcionalidad de actualización
automática y muchos usuarios lo hacen tener las actualizaciones automáticas
activadas. En algunos mercados, no es poco común tenerlo encendido pero
su dispositivo no cumple con los requisitos Por ejemplo, es posible
que no se conecten a WiFi. estoy feliz de compartir que estamos lanzando una nueva
característica. Puedes llamar a esto API para determinar primero si hay una actualización
disponible y luego si por lo tanto, puede compartir un aviso
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 tomar de reiniciar la aplicación para
usted.
Algunos de ustedes han construido flujos
similares para ustedes mismos. Pero esto es un método estandarizado que
puedes usar con muy poco esfuerzo.
En lugar de ese inmediato actualización, también puede
armar una actualización flexible que no tiene que ser aplicado de
inmediato. el realmente genial Lo que tiene esta API es que personalizas
completamente la actualización flujo para que se sienta como parte
de su aplicación. Puedes elegir empujar a los usuarios, como lo está haciendo
Google Chrome en este ejemplo. los la descarga ocurre en segundo plano
para que el usuario pueda seguir utilizando 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 puede esperar hasta que la
aplicación pase a segundo plano. Google Chrome está probando esto ahora
y estamos invitando 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 aplicación flexible actualizar para trabajar. Primero, puede solicitar
una instancia de aplicación gestor de actualizaciones. Y luego solicite la
información de actualización de la aplicación. Este resultado va a contener el estado de
disponibilidad de la actualización. Si hay una actualización disponible y
se permite la actualización, 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ía este pendiente intención y ponerlo en marcha. Esto
iniciará la descarga y instalación. Puede
monitorear el estado de un actualice registrando un oyente para actualizaciones
de estado. Cuando el la descarga está completa, puede optar
por instalarla directamente o aplazar para instalarlo. El reinicio
ocurre cuando se completa se llama actualización. Entonces,
para recapitular 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 las mejores prácticas aquí en la
pantalla y también integrando por 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 a cambiar con el paquete de aplicaciones.
Y eso es.
Ahora tenemos cubrió 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 el horario de oficina.
Si quieres compartir sobre lo que que hemos hablado, la publicación de
este enlace es un gran lugar para comienzo. 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, silenciar
todos los dispositivos móviles. Gracias 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 usted acerca de 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 en toda regla ordenadores sobre ruedas. Tienen cámaras,
pantallas de todas las formas. y tamaños en todas partes.
Android Auto es un esfuerzo de Google y nuestros socios
automotrices para unirlos y brinde una experiencia segura para los conductores
en todas partes. Por supuesto, Es más fácil decirlo que hacerlo. Muchos
tipos de entrada diferentes, desde pantallas táctiles a almohadillas táctiles, muchas
formas y tamaños de pantalla diferentes y resoluciones. Hoy en día, puede ver
esa visión en acción en cualquier Los conductores de carment compatibles con
Android Auto tienen acceso a sus aplicaciones favoritas directamente desde la pantalla
de su automóvil y desarrolladores construir su aplicación una vez sin
preocuparse por las diferentes marcas y modelos Hoy hablaremos de dos
de los más importantes categorías de aplicaciones, mensajería y medios.
Primero
es mensajería. Ahí es donde
CarExtender entró en juego. CarExtender permitió una forma de que las aplicaciones
de mensajería proporcionaran detalles y una forma de responder a
las conversaciones de Android Auto. Pero detecta 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 solo 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 la mensajería
grupal. Para MessagingStyle, las aplicaciones no solo obtienen
una experiencia de usuario más rica y el beneficio del soporte automotriz.
Entonces, veamos cómo Android Auto
interactúa 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 puede activarse internamente con intents o externamente con intents
pendientes.
Notificar es hecho a través de una notificación de Android
y la información de mensajería es 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
que se agrega, que actúa como una 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 tocada, leerá en voz alta los mensajes. La marca se
lee pendiente. El usuario ha dado la opción de responder y, si se
toma, una transcripción de esa la respuesta se establece en esa entrada remota.
La intención pendiente de respuesta 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 echar un vistazo.
Tenga en cuenta que para mensajes aplicaciones que admiten SMS,
esto debe agregarse. Y ahora Android Auto está revisando 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 de persona.
Persona se usa para poner cosas como el nombre del usuario, su icono
y clave única. Entonces, creamos este usuario del dispositivo y creamos
MessagingStyle con él. Nosotros puede agregar nuestra información
de conversación. Entonces, soy de Seattle y me encanta esquiar,
así que lo configuro para esquiar grupo. Como voy a llevar a varios
amigos, esta es una conversación grupal, por lo que la aplicación
de mensajería debe configurarla como tal. Tenga en cuenta aquí que
el título de la conversación y si o no la conversación es un grupo se puede
configurar de forma independiente.
Esto es nuevo en Android P y se ha retroportado
en la compatibilidad. biblioteca. Finalmente,
podemos agregar 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 configurar, es hora de agregar las acciones.
Para la acción de respuesta, instanciamos un edificio de acción
y establecemos la semántica respuesta de acción a acción semántica. Eso también
debe decirle al sistema operativo que activar la intención pendiente de respuesta no mostrará
ninguna interfaz de usuario adicional. Este es especialmente importante
en Android Auto porque no quieren distraer a los usuarios. La acción
de respuesta se proporciona con esa entrada remota de la que
hablé antes.
En la marca como lado de lectura, se hace de la misma manera.
Se establece en semántica acción, marcar como leído y le decimos al sistema
operativo que pendiente de esa intención no mostrará IU adicional. La acción
marcar como leído no necesita un entrada remota. Así
que esas son las tres piezas, la Ahora se puede crear una notificación.
Como referencia, aquí están los tres elementos que creamos.
MessagingStyle,
que contiene nuestra conversación, responder y marcar como acción
de lectura. para construir un notificación, se proporciona un modelo
estándar y configuramos el estilo de mensajería. Podemos añadir nuestras
acciones. Aquí es donde el La aplicación de mensajería tiene algunas opciones.
La respuesta es un regular, visible acción y la marca como leído se agrega
como invisible.
Uno puede agregar tanto como visibles como invisibles. Esto
cambia la forma en que se muestra 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 para escuchar. Obtener el acceso
del conductor a su contenido debe estar al frente y al centro. Voy
a hablar de nuevas características. para mejorar la usabilidad de las aplicaciones
multimedia. queremos hacerlo resultados de búsqueda más agradables
visualmente y habilitadores. Vamos repasar la arquitectura que tiene una
app a la hora de comunicarse con el Android automático. Lo primero que
una aplicación de medios es un medio servicio de navegador Proporciona un
árbol de 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 jugables. Implementan el método ownload
children, que añade el árbol. Aquí en nuestra primera llamada,
volvería a casa, recientemente reproducidas, recomendadas y listas de reproducción.
Dado que esto se está ejecutando en un automóvil, recomendamos que las aplicaciones
de medios solo proporcionen dos niveles en el árbol para evitar distraer a los conductores.
Ahora, una vez que un usuario ha
elegido algo jugable de la á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 reproducir/pausar, reproducir
hacia adelante y saltar hacia atrás.
También existe la posibilidad de proporcionar
su propia costumbre acciones, tal vez algo así como un salto
de 30 segundos. Obviamente, nosotros queremos alejar al usuario de los toques
o de hacer cosas para que podamos traer al asistente. Podría decir
algo como, hola, Google, jugar mis atascos de esquí. Realizan
reconocimiento de voz y solicitan que reproduzca la consulta y empiece
a sonar música. Vamos a dar un paso más allá
hoy. te estamos dando la capacidad de las aplicaciones de medios para
implementar una función adicional onsearch, y una vez que la música ha
comenzado a reproducirse desde un Consulta del Asistente de Google, pueden proporcionar
resultados adicionales.
Eso proporcionó un viaje de esquí de este
año, así como el año pasado. Esto debería parecer 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 Auto Android. Las aplicaciones deben
devolver una lista vacía si obtienen una consulta que no admiten.
En segundo
lugar, para consultas eso no puede ser respondido hundirse
cruinosamente, hágales saber no devolver nada de inmediato. Las aplicaciones
pueden hacer un trabajo extra antes de enviar los resultados a
Android Auto. Finalmente, cuando los resultados están
listos, pueden enviar el resultado y el objeto de resultado y Android
Auto serán notificados y mostrar los resultados en pantalla. Todos
los fragmentos de código provienen de el reproductor de música universal, una aplicación
de medios de código abierto publicada en GitHub.
Puede ser clonado, compilado
y utilizado como un gran haga referencia a la creación de su propia aplicación
de medios. Entonces, nuestra aplicación de medios 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 para Android Auto podría agrupar esos elementos.
Afortunadamente, estamos introduciendo una forma de hacerlo. Aquí
hay una función de ejemplo donde su aplicación de medios podría usar desde
una representación interna de un elemento multimedia en la compatibilidad del elemento
multimedia.
Podemos anotar elementos con una categoría extra y Android
Auto agrupará cualquier artículos 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 lo hará añádelos por ti. También
estamos agregando algunos anotaciones adicionales en elementos multimedia
que serían realmente útil en nuestro viaje. Podría estar
dirigiéndome a las montañas. con mi familia, me podría preocupar
que se me ocurra una canción contenido explícito.
Podemos decir
que esto tiene contenido exclusivo. y Android Auto puede mostrar eso en la interfaz
de usuario. puede que no tenga gran ancho de banda, me encantaría
saber si han sido descargados 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 se han descargado y ya están en
el dispositivo. Excelente. Parece que el viaje de esquí
2018 está descargado, no tiene cualquier contenido explícito, excelente
opción para mi viaje al montañas. Hay
una función más que necesita una actualización, se llama
al servicio de navegador de medios cuando Android Auto se conecta primero a la aplicación
multimedia. Para poder búsqueda, deberá agregar un par
de extras para permitir que Android Auto sabe que admite esas funciones.
Como mencioné, estamos la introducción del estilo de consentimiento
y Android Auto serán 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, vamos a mostrar ahora como cuadrículas. La mayoría de
estos artículos tienen más ricos contenido que los usuarios pueden identificar
al ver mucho más fácil que lectura y mucho más seguro cuando
estás en el coche. Hay momentos en que una lista es mejor
que una cuadrícula. Para 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
y longitudes y estado y sería sería mucho mejor mostrarlos como
listas. En el ongeroute función, pueden decir,
prefiero que sean cuadrículas. 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 excelente y completa
aplicación de medios. Eso te dio la implementación de una aplicación
de medios que realmente reproduce música y es para Android Auto, así
como para Wear y Android TV. Te animo a que consultes el controlador
de medios de Android, otra fuente abierta en GitHub. Se
conectará a su aplicación sesión y le muestra información
de forma clara y semántica. formato. Si está utilizando
la lista blanca, probablemente Sería una buena idea agregar la lista
blanca. Para resumir, mostramos ejemplos de
código para MessagingStyle, acciones, adjuntando nuevos extras para
elementos multimedia, metadatos y declarando soporte para búsqueda y exploración
de contenido. Tan estupendo. 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 va a ser Android en pantallas grandes Solo esperando a que
explote arriba. Enfriar. Como todos sabemos, Android
ha evolucionado desde solo 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é está funcionando
tu móvil hoy. Empezando por el teléfono, es para lo que
todos desarrollamos principalmente. A un par de teclas sobre la plataforma,
vertical primero, táctil primero y pantalla completa primero. Muchas aplicaciones
bloquean la rotación. algunos usuarios use múltiples ventanas o estilos
y cosas así. Mayoría de sus usuarios lo están usando con pantallas
táctiles normales y en su totalidad pantalla.
Pasando a las tabletas. Ambas
orientaciones son ciudadanos de primera. Si bloquea un
retrato, los usuarios aún pueden use su aplicación en el paisaje vertical.
Las pantallas más grandes sí traer desafíos, en cuanto al diseño,
y la capacidad de hacer diferentes cosas y aprovechar más los bienes
inmuebles y permitir sus usuarios para hacer las cosas más rápido.
El medio diferente trae un enfoque diferente sobre para qué se van a
usar las aplicaciones, el contenido aplicaciones o aplicaciones de consumo de medios,
aplicaciones de productividad, cosas que realmente puede aprovechar la pantalla
más grande. Y luego pasar a las plataformas
de escritorio.
Tú sabes, tenemos Chromeless, tenemos
OEM. Además, Android ahora ha traído
la capacidad de tomar ventaja de tener pantallas externas.
Incluso si está corriendo en un teléfono, podría mostrarse
en un dispositivo externo monitor. Aquí es donde viene
la mayor diferencia donde es primero el paisaje, todos
estos entornos tienen algunos una especie de ventana cambia de tamaño y tiene
una nueva entrada de primera clase métodos como teclado y mouse
y trackpads que cambian con el dispositivo o se conectará.
Entonces, ¿en qué se enfoca cuando
estás pensando en cómo lleva tus apps a todas estas plataformas
y ten un buen usuario ¿experiencia? El número uno es el
diseño. De nuevo, si realmente has centrado en los teléfonos, la mayoría
de sus diseños son muy basado en retratos y basado
en pantallas más pequeñas. Ventana la gerencia es probablemente el
lugar más grande donde vemos problemas con las aplicaciones de los socios,
cómo cambiar el tamaño, consideración de múltiples ventanas o problemas
que nunca hemos tenido que centrarse en antes.
vamos a hablar de la herramientas disponibles de Google para
asegurarse de que puede desarrollar para estas plataformas y llevarlo
a su ciclo real.
Entonces, hablando de diseño, levanten
la mano si tienen diseños para pantallas grandes o lablets en absoluto?
Mucha más gente que yo esperado. Enfriar. Entonces, ya sabes,
lo más importante es solo pensar sobre las pantallas más grandes de nuevo.
Durante los últimos dos años, hemos visto que salen muchas más aplicaciones
que podrían bloquearse en modo retrato, lo que tiene sentido. Con un número
cada vez más creciente de plataformas que ejecutan su
APK, pero muestran un factor de forma o plataforma
diferente, es hora de comenzar pensando de nuevo 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 son geniales, diseño
súper estirado, toneladas de espacio que podría ser utilizado para
las descripciones. La clave más grande aquí, sin embargo, no hay divisores de
línea, lo que en un teléfono es bien porque mira en qué menú de opciones
estás haciendo clic. Cuando lo lleva a un diseño de paisaje
más grande, es difícil siga las líneas y vea qué elemento
está presionando las opciones menú para.
Un socio externo es Uno Pasaporte. Es su lista estándar
de elementos que profundizará dentro. Cuando te mueves a una pantalla
más grande, realmente toman ventaja de que los bienes raíces
van a ser casi como un diseño de tres paneles, lo que permite al
usuario obtener cualquier contenido necesitan en mucho menos clics y mucho
más rápido.
También, siendo capaz de mostrar más información
al mismo tiempo. Entonces, volver al mismo punto
es, de nuevo, construir diseños para ambas orientaciones
y hay un par de claves grandes para esto. Una vez más, no todas las
plataformas tienen el retrato primero. A muchos de los entornos de escritorio,
si está creando para retrato, vas a tener una experiencia de usuario
bastante mala cuando quiero 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 su aplicación sea cual sea el tamaño,
la orientación o la relación de pantalla que ellos realmente quieren. Entonces, realmente
desea permitir que el usuario decidir realmente cómo quieren usar
su aplicación.
Volver a las plataformas de escritorio
principalmente es diseñar para otros medios además del tacto.
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 táctil. Cosas como hacer clic con el botón derecho es diferente
a lo que estamos acostumbrados pulsación prolongada. Mientras que cuando hace clic
con el botón derecho en un escritorio, está normalmente esperando un menú contextual
emergente. Entonces, tomando la tiempo para pensar realmente en cómo funciona
su aplicación para los diferentes Consideraciones de UX.
El otro grande que notamos es acciones de desplazamiento. En entornos
web o de escritorio con el ratón, espera algún tipo de
respuesta cuando mueve el pase el mouse sobre un elemento de acción
para que sepa 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, extensivamente, Google Drive es un
buen ejemplo de esto, Android en Chrome OS, extrañaré las acciones
que realmente puedo hacer porque simplemente navegando en esta plataforma, estoy
esperando 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 características, es muy
fácil. Te aseguras de que eres ex planteando cualquier comportamiento que tenga
en una pulsación larga. De nuevo, también Con suerte, considerando cualquier tipo
de cambio de UX que necesite realizar. Y configurar un hover escuchando para
ver el puntero del usuario pasando el cursor sobre el elemento y fuera.
Una vez más, este es realmente el más grande que vemos que conducirá
a un mal funcionamiento o realmente le da la sensación nativa
de escritorio o incluso una especie de sensación nativa de pantalla grande.
En términos de flotar, 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 cosas de accesibilidad como esa. Sin
embargo, al final del día, sabes cómo usan la aplicación tus usuarios
y conoces el producto, así que, 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 necesita concentrarse en la entrada del mouse
o la entrada del teclado. Donde un la aplicación de productividad
va a aprovechar la pantalla bienes raíces y encontrar una manera para
que los usuarios hagan lo que quieran. Hablando de la gestión de ventanas. Esta
es el área más grande que vemos. retos Me encanta la rotación porque
veo tantas aplicaciones que bloquear al retrato, lo cual es
completamente comprensible pero realmente muestra dónde cae
la experiencia.
Si lo haces bloqueo de retrato en Chrome OS, así
es como se verá su aplicación. Obtendrá estas barras súper negras
en el costado y se desperdiciará pantalla de bienes raíces. Da un
no nativo [sin audio]. Ahora, ¿por qué nosotros — para huir
de manejar la configuración cambios porque siempre han sido bastante
difíciles de manejar con. Los cambios de configuración son
más importantes que nunca. El cambio de tamaño y la ventana múltiple trae una
gran cantidad de configuraciones nuevas cambiar paradigmas y desafíos. Chrome
OS es probablemente uno de los más compleja de las estrategias de
cambio de tamaño porque no la configuración del activador cambia
con bastante frecuencia. yo se algunos de las otras plataformas de escritorio
no causan tantos cambios de configuración. Además de
eso, con pantallas más grandes, se va a utilizar multi-ventana con mucha más frecuencia.
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 destrucción
completa 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 capaz de construir sus propios
componentes le permite tomar su lógica de negocios en su actividad,
cualquier cosa que esté haciendo para guardar el estado para que su actividad
destruya y reconstruya el proceso es realmente rápido.
Su aplicación no siempre estará en enfoque. Una vez más, esto no es nuevo.
Con Android N, trajimos multi-ventana. Sé que la mayoría de nosotros
trabajamos con un monitor grande tiene varias cosas a la vez
y debe asegurarse de que su contenido es visible y se reproduce.
Así que asegúrate de que todavía estás mostrando mensajes o su contenido continúa
reproduciéndose. Aprovecha las características. Pantallas
más grandes y externas Los monitores traen nuevas
posibilidades. Uno de los cosas que hemos visto que hacen algunas
de las aplicaciones, que realmente brindar una mejor experiencia, está permitiendo:
redactar correos electrónicos ventanas o nuevos documentos que se muestran
en diferentes tareas para que el 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 se está haciendo
mucho más que arrastrar y soltar.
Nuevamente, estas plataformas de escritorio específicamente,
los usuarios esperan arrastrar y dejar de ser una cosa. Entonces,
piensa si arrastrar y soltar tiene sentido en su aplicación
y cómo puede traerla a estas plataformas. Y entonces
no realmente ventana administración, pero diferentes características
que son un poco nuevas para estos ecosistemas son diferentes capacidades
de información y específicamente, como, un mayor uso del
lápiz óptico. la cosa mas grande que hemos visto que a los usuarios les ha
encantado es la capacidad de tener atajos de teclado y navegación con
el teclado, así que si hay cosas que usan a menudo, son capaces de
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 yo vino aquí y habló, deberías
hacer todas estas cosas sin embargo, no hay herramientas para hacer
esto posible. La mayoría de dispositivos de herramientas que hacemos —
los ejemplos de herramientas que tenemos son alrededor de 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 algo así como lo mejor de todo una plataforma para probar.
Estamos trabajando
para traer algunos integración alrededor de pantallas
más grandes en Chrome OS. Hilas las adiciones vendrán pronto. Es mi trabajo,
una vez que termine este evento, para terminar esto. Estamos viendo
más cosas que podemos traer a la idea Es genial tener dispositivos
en los que puedes probar, pero quiero poder dar comentarios más
rápidos y cosas que buscar mientras en realidad estás desarrollando
en el ide.
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 tiene dispositivos, puede descarga el emulador y comienza a ver
dónde cae tu aplicación aparte. Cosas que no funcionan.
Cosas que chocan. ya sabes, y cetera. Una
de las mayores quejas. para desarrolladores para Chrome OS y
las pruebas han tenido que usar ADB sobre WiFi y el ciclo de desarrollo
ha sido horrible. en el hp Chromebook y Pixelbook, puede
llevar los dispositivos al mismo ciclo de desarrollo que haces
con los teléfonos.
Esperamos traer más y más, más y más dispositivos
para esta función. Pero la forma más sencilla, en realidad, es
simplemente ejecutar Android Studio en Sistema operativo Chrome. Está disponible
en Pixelbook en vista previa y Esperamos llevarlo a más dispositivos
en un futuro delgado. esto esta en 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óvil.
Así que asegúrese de que su la aplicación también
lo es.
Gracias. De nuevo, por favor pregunte cualquier pregunta, cualquier sugerencia que
tenga para las herramientas, cualquier cosas con las que te has topado al tratar
de desarrollar para un mayor plataformas de pantalla, me encantaría
conocerlas para que podamos abordar esto. Gracias. [Aplausos] Está
bien. Entonces, solo quiero que todos sepan. Actualmente es la
hora de la merienda. Así que nosotros tener bocadillos [no audio].
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. . . . . . . .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . Todo lo que tienes que hacer es usar el
complemento correcto.
Tienes la base función y luego aplica el complemento
de la aplicación, que han usado durante años. Puede aplicar
la característica dinámica. Ahora, tenemos que declarar una dependencia
especial del módulo base a todas las características diferentes
y te explicaré más tarde por qué esto es necesario. Obviamente,
usted tiene una dependencia desde el módulo a la base, pero necesita
hacer la dependencia de la base para los futuros. Entonces,
como ejemplo aquí, tenemos el caudal. Tienes un módulo base
y tres módulos. Nada tampoco específico. Depende de la
base. Ahora, al agregar la declaración
DSL, estamos declarando que el módulo A, B y c son modelos
futuros.
Tenemos esto dependencia en ambos sentidos. Entonces,
cuando pasamos por la compilación flujo, lo primero que hacemos es que
construimos normalmente todo 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 comienza
a diferir es que somos publicar todos estos archivos de trabajo
en el módulo principal y eso es absolutamente módulo
porque necesitas tener un vista global de la aplicación.
No puedes
hacer un encogimiento en el módulo futuro porque lo harás No sé cómo y cuál es la clase.
Entonces, una vez que tenga
los publicados en la base, puede aliméntelo al reductor y creará
un texto equivalente archivos Hay un método uno a uno.
Pero, no es exactamente un 1:1. Digamos que tenía clases que
estaban en su módulo base que pensaste que sería compartido por diferentes
funciones pero que usaste utilizado por el módulo B, pero el
divisor puede mover eso en su lugar de mantenerlos dentro de la jarra principal
dexter del módulo principal. De lo contrario, puedes imaginar más
o menos que hay un 1:1. Tú 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
poder tener, como usted puede 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 sean listo para hacer la reducción y luego
podemos mover hacia atrás el procesamiento a cada uno de los mismos
módulos. Entonces, puede ver que agregar
modularidad a su aplicación podría ser una buena auto-práctica.
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 de nuevo a cada módulo de características, eventualmente
podemos crear todos los necesariamente APKs o artefactos. Todos
esos, de nuevo, están en paralela. El encogimiento generalmente
no es un problema porque: no es un problema porque generalmente
la gente no usa reductor 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 anterior, que es DX. Si está utilizando DX, debe comenzar
a entrar en pánico porque estamos va a quitarlo. Entonces, si está
usando DX porque tiene problemas con D8, debe continuar para averiguar
qué está mal. De lo contrario, te quedarás
atrapado en el pasado. R8 va para seguir el camino. Ya está
disponible para probar. Estamos muy contento con los resultados que estamos
obteniendo hasta ahora, por lo que es muy estable. Definitivamente deberías probarlo.
Eventualmente se convertirá estable y puedes adivinar qué va
a pasar con el código anterior reductor, 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 estas
dos bibliotecas son implementado.
Bueno. hablemos un poco sobre lo que sigue en 3.3. Entonces,
lo primero que quiero hablar sobre es tareas. El concepto de tarea
— tarea perezosa es — tú realmente debería entenderlo como una
tarea que solo obtendrá inicializado si es en ti excusa.
Tienes dos variantes. Si depura, no hay necesidad de
inicializar la tarea. Y qué solíamos hacer, desafortunadamente,
así que esto se hizo antes en este ejemplo particular donde usamos para crear
todas las tareas. Nosotros todavía tengo que hacer eso. Pero agregue el
tiempo de creación, también estamos configurándolos. entonces estamos configurando todos ellos. Con
task, 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, va a ver si
la tarea necesita ejecutarse o no ejecutando sus verificaciones actualizadas.
Tal vez ejecutado si es fuera de plazo. Entonces,
¿cómo hacer 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 ser llamado si la tarea está en el gráfico
de tareas de ejecución. Ahora nosotros solía prestar mucha atención a
toda nuestra configuración tareas, para hacer que este bloque
de configuración sea tan simple como posible porque siempre fueron
ejecutados.
Así que tratamos de manténgalo lo más delgado posible
sin acceso al disco, sin acceso a red, por ejemplo. Ahora,
probablemente sea un poco más está bien hacer más trabajo
en esa configuración si Realmente tienes que hacerlo, pero tienes
que 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 sucederá
una tras otra. Cuanto más lo haces, más tiempo llevará. El tiempo
de configuración pasa todo el tiempo. Es muy consciente.
Lo segundo es no mirar más tareas. Así que cuando tienes
personalización, muchas la gente está haciendo un proyecto, obtenga
la tarea por nombre. Cosas como esas. Esto realmente buscará la tarea
y la inicializará. Eso hará eso y todas las dependencias
también, todas las tareas y salida para que básicamente
tenga una buena oportunidad de inicializándolo. En lugar de
hacer eso, debe obtener un proveedor y obtenga un objeto perezoso
de la tarea en sí y use eso para registrar su dependencia.
Ahora,
lo que también puedes hacer, si desea tener acceso a la salida
de una tarea, es usar eso proveedor y asigne la salida usando
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 regular que
la tarea que se ejecuta dará usted lo más tarde. Puedes conseguir
un objeto, ese objeto no inicializar la tarea en sí.
Conseguir este proveedor no inicializa la tarea, no la obliga
a ejecutarse y es realmente perezoso. Contiene dependencia e información
que significa que usted no tienes que registrarte como una
dependencia de la tarea. Sostener el objeto le permitirá
no solo obtener el objeto, sino también registra tu dependencia.
Eventualmente, puedes haz un get y eso te dará el objeto
que puedes usar.
Entonces, aquí, cuando se está
configurando, toda la dependencia se configurará y así sucesivamente.
Estamos modernizando todas nuestras tareas
usando proveedores y cosas como que. Si usa mucho la personalización,
debe investigar estas API en 3.3. Y
ahora Chris hablará sobre otras mejoras que hemos hecho.
Sí. Otra optimización es clases Previamente, para cada
dependencia y cada tema, y junto con sus
clases reales.
Es solo genera un jar que contiene la clase
directamente. Y especialmente para aquellos con muchas bibliotecas
y muchas dependencias, este evitó mucha compilación. Para construcciones
multimodales grandes, vio un gran porcentaje de aceleraciones.
Así que el sistema de clases ha sido
reescrito. En lugar de confiar en los del 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 la biblioteca en 3.3.
Gradle ahora tiene soporte para el procesamiento de anotaciones.
Estamos trabajando para apoyar la procesos de anotación más
populares, incluyendo daga, Habitación, Rejilla.
Y para permitir ser un aislado procesador de anotaciones, acelerándolo
aún más.
También queremos para ayudarlo a comprender el impacto del
tiempo de compilación de la anotación procesos. Queremos informarle,
como, qué tiempo pasó en y cuanto costaron? Sobre
ese tema hay varios otras áreas que queremos darle una
mejor visión de su construcción, fácil y simplemente. Si está utilizando
procesos de anotación, es realmente crítico que tenga esa
idea porque a menudo es un cuello de botella para muchas compilaciones
que vemos. Cuando una tarea te hace problema, es genial conocer el complemento
de Gradle o el script y lo que provocó que se ejecutara. Y estamos
trabajando para encontrar que salga más fácilmente. También
queremos ayudarte a encontrar este tipo de problemas, incluso si
no está buscando activamente a ellos.
A largo plazo, queremos que Android Studio marque
si hay un problema y señale hacia el mayor escaneo de compilación.
Bueno. Entonces, a partir de estas mejores
ideas para completar las reescrituras. Espacio de nombres de recursos de Android. El
espacio de nombres de recursos es un Tubería completamente nueva para
compilar y vincular Android recursos. Estamos haciendo esto por dos
razones. En primer lugar, acelerar la construcción y hacerlo más fácil
de entender y queremos mejor admitir características dinámicas.
Mirando cómo funcionan las cosas ahora, hay dos espacios de nombres.
Eso
significa que si tienes dos bibliotecas, del mismo nombre y del
mismo tipo, tienen que elegir una y no siempre está claro qué
es lo correcto. Eso hace que dividir tu APK sea mucho
más difícil. donde esos los recursos provienen y hacia
dónde van es muy importante. Cada biblioteca se compila y vincula
por separado y luego vinculados en el APK final.
cuando estas usando recursos de XML y Java,
debe ser explícito acerca de dónde vinieron.
Si están
en la biblioteca que lo definió, el siguiente XML, necesita
usar el espacio de nombres. Esto también significa que ya no
se anulan entre sí solo 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 pueda tener todos los beneficios de espacio de nombres.
Bueno. Pasando a Izabela a contarles un poco más sobre los
detalles. Gracias. Ahora que sabemos qué es el
espacio de nombres, es posible que te encuentras haciendo tus preguntas
como, ¿dónde está eso? ¿De dónde proviene el recurso o cuál
es la sintaxis adecuada? o como hago incluso espacio de nombres mis dependencias?
La respuesta a todos estos preguntas es, lo arreglaremos para usted.
[Risas] Entonces,
sí, entonces la solución es espacio de nombres automático o espacio
de nombres automático seguro. Primero es la herramienta de reescritura oughtmotic
en el ideal.
Y el segundo son las transformaciones y tareas en
el complemento de Gradle que reescribe tus dependencias
remotas, debajo del capó, no acción requerida. Aquí
hay 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 son bibliotecas remotas clásicas con espacio
de nombres que serán reescrito automáticamente. Todos
los recursos, clases, la los manifiestos se reescribirán para usar el
espacio de nombres de recursos completo. Y finalmente, los nodos verdes son…
representan dependencias que ya tienen espacio de nombres
para que no se modifiquen en todos.
Veamos qué tipos de cambios. podemos ver después de que se lleve a cabo
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á 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 para apuntar y el
atributo usará este nuevo espacio de nombres, también. Ya que estamos
en el tema de los recursos, vamos a hablar de visibilidad. Probablemente muchos
de ustedes crearon un Android biblioteca con mucho esfuerzo
declarando qué recursos son pública y publicó esto con un .txt solo
para que los consumidores ignoralo.
Actualmente, esto es solo
una advertencia de Lint. este codigo compila y funciona bien en tiempo de
ejecución, ignorando por completo el visibilidad prevista del recurso.
seguro que muchos de vosotros en realidad también ignoró estas advertencias.
Queremos introducir visibilidad. Entonces,
estas violaciones ahora convertirse 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
particulares y por último, recursos privados solo de XML. No estarán
presentes en ninguna clase. en absoluto. En cambio, solo puede hacer
referencia a ellos desde otro XML archivos dentro de ese módulo. Esto dará
como resultado unas más pequeñas clases, tanto de compilación como de tiempo
de ejecución.
Y, también, recurso similar a la clase o Método en Kotlin.
Gracias. [Aplausos] Está
bien. Entonces, como puedas mira, estamos trabajando en muchas cosas
y muchas de las cuales esperamos ayudaría a aumentar la velocidad. Volviendo
a mi punto de vista conciencia y herramientas, quería compartir
algunas cosas que puede hacer hoy para comprender mejor su compilación
y mejorar su actuaciones Entonces, lo primero
es actualizar. Mi primer gráfico, mejoramos con cada lanzamiento,
por lo que si realmente — preocúpese por su velocidad de construcción,
lo mejor que puede hacer es actualizar a la última beta, estable,
Canary, lo que sientas cómodo con.
Hay algunas
herramientas que puede start aprovecha para comprender
mejor sus compilaciones. Una que realmente me gusta es una herramienta
gratuita de Gradle. Implosiona parte de sus datos en servidores
Gradle y proporciona paneles. Si está tratando de entender qué
está pasando con su compilación, por qué es lento, este es un recurso
muy, muy útil para usar. Si comparte algo de su construcción los datos con Gradle son algo con
lo que no te sientes cómodo, hay–perfil. Definitivamente no es
tan rico, pero proporciona algo de 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 casos de uso que
podamos, pero siempre hay diferentes configuraciones que existen.
Por favor, informe errores cuando te encuentras con problemas. Incluya
un escaneo con él. Eso realmente nos ayuda a profundizar en
el tema y entender lo que está pasando Por último,
pero no menos importante, si está escribir complementos, ya sea
para que los publiques o personalice un poco su archivo de compilación,
aquí hay una serie de consejos seguir. Entonces, primero, como Jerome
eludió, es establecer tareas, en realidad no hacer nada
más.
Recuerda, si necesitas calcular cosas para cheques actualizados,
siempre puede usar proveedor y proveedores para ejecutar siempre
esos controles si su tarea es parte del gráfico activo. Por
ejemplo, en la configuración, no debe hacer cosas como consultar
obtener, leer un archivo, buscar para un dispositivo conectado o calcular
cualquier cosa. Configuración es realmente solo un lugar para configurar
tareas. Y es un lugar para establecer todas las tareas. Porque build
realmente no sabe qué es pasar participará en eventos, así que intente
configurar todas sus tareas en el paso de configuración. Con respecto
a las tareas, asegúrese de que cada tarea declara todas las entradas
y salidas, incluso si es uno que no sea de archivo y asegúrese
de que sean incrementales y almacenable en caché
Si estuvieras trabajando con un paso complejo, intente dividirlo
en varias tareas. Esto ayuda con la incrementalidad porque algunas
tareas podrían estar al día. Si tiene varias tareas, podrían ejecutarse
en paralelo. Por lo que ayuda con la incrementalidad y el
paralelismo. Esta tercera mejor práctica suena obviamente,
pero todavía quiero ponlo ahí.
Asegúrese de que
no escriban ni eliminen cualquier otra salida de tarea.
Cuando escribas tareas, usa Java y Kotlin. Y ponerlos en un plugin/carpeta.
Y por último, pero no menos importante,
como ha escuchado de Jerome, aproveche una nueva API de trabajo;
no, no hablamos de esto. Sin embargo, hablé de cosas.
Eso realmente ayuda con problemas. Si no obtuviste imágenes
claras de todo lo que yo Recién dicho, no te preocupes. Estamos trabajando
en una redacción completa.
Cubriendo todo lo que hablamos
sobre la velocidad, en torno a los hallazgos que compartí,
las herramientas y las mejores prácticas y más, así que estad
atentos. En resumen, esta es la conclusión
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 lo estamos
tomando muy en serio, así que estamos duplicando nuestros esfuerzos
en mejores herramientas y atribución y continuar mejorando
el desempeño. Compartimos las nuevas características
en 3.2 y definitivamente los animo para actualizar a 3.2, si aún
no lo ha hecho. Y mencionamos algunas de las cosas
que estaban funcionando para 3.3 y más allá. 3.3 beta está
disponible. Entonces, te animo intentarlo. Tiene algunas de las cosas
que mencionamos, como lazy tareas y otros. Y por
último, hablé de algunos de las herramientas que puede utilizar — —
perfil.
Es todo por hoy. Quiero hacer un mal
chiste, pero a diferencia construir, terminamos antes de lo
esperado. vamos a estar fuera allí con — en las preguntas y respuestas de los
oradores o en las cabinas de estudio hoy y mañana, si tienes alguna
duda. 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, todo el mundo. 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, todos. Como un punto de información, esta
sesión comenzará en dos minutos. Y le pedimos, como cortesía
a los presentadores, que tómese un momento para silenciar sus 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 súper
emocionada de estar aquí y hoy vamos a hablar sobre ConstraintLayout
y cómo usar el editor visual para hacer
restricciones de manera efectiva en Estudio Android.
Soy Chris, diseñador de UX y Hablaré sobre algunas de las nuevas características
que hemos agregado. Y yo soy Sean McQuillan, desarrollador
defensor 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 para ver. En ConstraintLayout, antes de agregar estas
restricciones, lo 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.
Yo cambiaría esto para ser 50DP o agregue una restricción al
lado.
Si agrego otro al final, voy
a centrar esta vista en todo el ConstraintLayout y este
truco va a funcionar en todas partes en ConstraintLayout.
Así es como se centra una vista dentro o encima de otra vista.
Entonces, echemos un vistazo a una cosa
más que puedo hacer. Entonces, si yo mira el control deslizante que está
a la izquierda. Empieza a las 50 cuando he restringido la parte superior
e inferior y puedo cambiar que. Puedo cambiarlo hasta 25. En
lugar de centrar, 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 vista y echa un vistazo
a lo que está disponible en el redactor especial. Está sucediendo
este triple chev. Juan dijo es porque es contenido envuelto
y está tratando de extraer en lo más fuerte que pueda desde ambos
lados. Puedo cambiarlo a fijo ancho. Ese es 100DP. Así que las restricciones de coincidencia son una
nueva característica, una nueva forma de colocar fuera de vistas.
Saca todas las vistas
disponibles. Estoy limitado por la derecha y la
izquierda, así que es lo mismo cosa como padre completo. Así
es como tomarías todo pantalla. No querrías usar padres
completos en Diseño de restricción. Obtengo este
ícono realmente interesante aquí. yo Pensé que esto era un latido del corazón,
durante mucho tiempo. Yo pregunté Juan sobre esto. Eso es en realidad
un resorte y en algunos versiones de Android Studio, obtienes
dos resortes y otros, 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 limitarlo para que sea 20DP.
Va a mover la vista de la imagen
para que sea 20DP. estoy va 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 el ajuste del contenido hasta
las restricciones de coincidencia. Y esto tiempo, en lugar de restricciones
de coincidencia, va a tomar el ancho de esta vista de texto, sea cual
sea el tamaño de esta vista de texto, intentará hacer coincidir esa
restricción y este nuevo control aparece. Esta pequeña línea, crea
un pequeño triángulo. yo activar una relación de aspecto. Esta es una característica
realmente agradable, si usted desea mostrar una imagen con una relación
de aspecto. Imágenes, cuando nosotros obtenerlos de los diseñadores, 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 configurar 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 más de una vista compleja y
hable sobre cómo diseñar las cosas con más características 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 copies esto, hay muchos problemas. Están pasando un
par de cosas.
Las etiquetas son alineado a la derecha con algún tipo de
línea invisible. El texto de edición está alineado a la izquierda y el botón Iniciar
sesión y cuenta nueva 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 diseñar esos, usted ¿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. Que sería incorrecto. Si miramos las métricas
de las 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 sienta en la línea
ascendente y eso la línea discontinua es el descenso 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 obtener este control. Se ve así,
lo he ampliado. sustancialmente. Tengo mi
control favorito. Parpadea en 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 de base a la otros y crear una restricción que diga
que estas vistas de texto deberían tienen la misma línea de base. Y
haremos eso por todos los demás vistas de texto en la pantalla aquí para
configurar toda la línea de base alineaciones. Cuando
alinea el texto junto a texto, casi siempre desea 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 limitado por la Texto de edición izquierdo. 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é de 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 que sentido.
Ahora, supongo que voy a tener para agregar una restricción de contraseña
a correo electrónico. Entonces yo soy va a hacer eso y esto va a centrar
la contraseña entre correo electrónico y la parte inferior de
la pantalla. Retiremos el correo electrónico abajo con otra restricción y voy
a resolver este problema. Este introduce una cadena. Ahora,
por supuesto, configurando todo las restricciones son tediosas.
Puede ir
al botón derecho del ratón en centrar y elegir verticalmente. Cuando
tengo correo y contraseña seleccionado, va a configurar todas
las restricciones que yo acaba de hablar. Entonces, dentro de
una cadena, en realidad hay tres formas diferentes en las que se puede
diseñar: cuatro, técnicamente. Nos hemos esparcido, lo que significa
distribuir todo uniformemente. Propagación adentro, que
es básicamente lo mismo excepto los elementos primero y último se empujan
hacia un lado. Entonces nosotros tener paquete Vamos a usar una cadena
empacada para centrar estos vistas juntas. Hay una cosa más
que tenemos que hacer. Nosotros necesita poner esta línea invisible
en el medio de la pantalla.
Asi que para hacer eso, voy a ir a los ayudantes
y agregar una vertical guía. Puede pensar en ello como un
nuevo borde de la pantalla. yo tengo uno a la izquierda y ahora pongo
un borde de la pantalla en el medio de la pantalla que puedo usar como
ancla para las restricciones. yo tome las vistas de texto y cree restricciones
a partir de ellas. para amable de visualizar lo que está haciendo
esto debajo, si muevo el directriz, en realidad va a mover
todo el diseño ahora. Entonces, retrocedamos y luego
obtengamos otro diseño. porque resultó que el diseño
no funcionaba muy bien bien. Después de muchos estudios de usuarios,
hemos descubierto que la solución es alineando a la izquierda las etiquetas.
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
va a funcionar muy bien en Inglés. Cuando lo traduzco al
alemán, ya no es correcto. Así que 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, podría querer un diseño lineal.
estoy dentro ConstraintLayout, entonces, ¿cómo hago
eso en ConstraintLayout? Hay otro ayudante y vamos a usarlo
ahora. Si nosotros use agregar barrera vertical, esto
le permite agregar una barrera a la pantalla. Es como un grupo de vista.
Es un código de agrupación. Podemos abrir el componente y agregarlo.
Es una vista que es añadido a la pantalla.
Se coloca a un lado o al 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 a Alemán. Entonces, eso es realmente todo. Esas
son todas las características en ConstraintLayout 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 Enfriar.
Gracias, Sean. Entonces, con diseño de restricción, hemos introducido
muchos consentimientos. Nosotros Comenzó con restricciones,
márgenes y cadenas. hemos introdujeron pautas y barreras
y grupos y muchos Más ayudantes por venir y hay un diseño
de movimiento. una cosa que que hemos escuchado consistentemente es que
a medida que agregamos más conceptos, cada vez es más difícil
manejar todos estos con ConstraintLayout.
Y entonces,
lo que estoy aquí para decir usted, hoy, es que en realidad
hemos estado mejorando esto en el editor visual en Android Studio.
Las cuatro áreas son creación de restricciones, y nueva
vista y trucos para hacer zoom y panorámica y luego, por supuesto,
usando datos de muestra, que introducido en 3.2. Así que
creando 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 encantador Iniciar sesión forma desde abajo. Tenemos etiquetas,
tenemos insumos, algunos botones. Pero desde el punto
de vista de las restricciones, tener esta guía en el medio,
el botón Iniciar sesión restringida a la parte inferior y
derecha de la entrada. tenemos el entradas restringidas a la
directriz. porque son todos muy cerca uno del otro, cuando
los arrastras, es puede ser bastante desafiante hacerlo
bien. Incluso cuando hice esa diapositiva, oculté
la mitad de las restricciones porque estaba demasiado ocupado.
Sí, fue muy simplificado, Realmente. Hemos
agregado la capacidad de agregar restricciones directamente con el menú
contextual.
Si usted tiene componentes que están muy cerca unos
de otros, esto lo convierte en un mucho más preciso y directo para establecer
esas restricciones. Entonces, en este caso, y también está
disponible en 3.3 beta, para que puedas probarlo hoy. Y
así, en este caso, tenemos esta hermosa foto de gato. Simplemente
puede restringirlo 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, por
lo que no estoy seguro de si la gente ha tratado de crearlo, se
vuelve doloroso cuando estás yendo desde la parte inferior de uno hasta
la parte superior del otro.
Puedes mantenga los dos seleccionados, y luego,
cuando abra el contexto menú, hay este menú de restricción
y puede ver los dos elementos que desea utilizar están
ahí y luego puede fácilmente cascada a la restricción correcta
que desee. En este caso, solo mostramos el principio
y el final y eso es porque, en este caso, las restricciones
superior e inferior tienen ya se ha configurado, por lo que no los
mostramos. Entonces, aquí, queremos restringir el
ícono de ubicación a este guía vertical a la izquierda. Entonces, si
usas la función de arrastrar y soltar método, obtienes todos estos — La cosa verde intermitente favorita
de Sean. Si estás tratando de apunta a algunas de estas cosas más
pequeñas como el siguiente texto o números, se vuelve difícil
cuando intenta arrastrar y soltar. Nuevamente, esto hace mucho más
directo para que pueda seleccionar la guía y use el menú
contextual.
Si realmente no desea seleccionar
estas cosas, puede usar el árbol de componentes. Esto
se vuelve ú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 es en realidad
cuando lo arrastra y así en este caso, tenemos este nuevo gesto que,
pendiente, se llama arrastrar al centro A medida que arrastra, ahora
ve todos estos pequeños objetivos y así que en lugar de tratar de apuntar realmente
a esos verdes específicos puntos, simplemente puede arrastrar
hasta el medio de lo que desea 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 Correcto.
Y de hecho tenemos esto, como bueno, lo cual es útil cuando
tienes vistas superpuestas y así que este es bastante simple,
pero a veces tienes vistas desea ocultar y mostrar en tiempo de ejecución,
por lo que todo lo que tiene que hacer es arrastre a donde sea, al objetivo
y lo que haremos es en realidad averigüe qué pocos están
debajo del píxel y le mostrará un menú contextual en consecuencia.
Entonces, si pasamos a ver opciones, por lo que la superficie de diseño
siempre ha tenido opciones de vista para aproveche cuando esté trabajando
con sus diseños.
Los dos son mostrar todas las restricciones y renderizado
en vivo. Entonces, si vamos regrese a nuestro formulario de inicio de sesión,
vamos a reutilizar esto mucho. [Risas] Ya
sabes, las limitaciones son establecer aquí. Pero la cuestión
es que, cuando intentas… digamos que es nuevo en este diseño
y está tratando de editar restricciones en uno de estos
controles, hay mucho que hacer en. Y esto se simplifica en comparación
con el diseño normal. superficie. Y entonces lo que hemos 3.3 se agrega esta opción para mostrar
todas las restricciones pero se activa desactivado de forma predeterminada. Lo que
haremos es solo mostrar las restricciones. en el componente seleccionado
activamente. lo hace mas facil para trabajar con el componente con
el que está trabajando. Por supuesto, puede volver a activarlo
fácilmente si desea ver todas las restricciones al mismo
tiempo. Y entonces, esto es como mostrarles
un lado a lado.
Sobre el izquierdo, 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
y 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 se pone
un poco peludo a la vista. Y entonces, creemos que esta es una buena
opción, también, aquí El otro la opción de visualización que tenemos es renderizado
en vivo, lo hemos hecho en vivo renderizado durante bastante tiempo.
Déjame volver.
¿Puedo volver? Vaya. Y así, está activado de forma predeterminada,
pero dependiendo de las especificaciones de su máquina, puede ser lenta. Podrías
cometer un error. Con frecuencia veces cuando he tratado de usarlo,
he tratado de crear un restricción y el botón se moverá
después y eso me causa para cometer más errores.
Y si lo apagas, es mucho más rápido a medida que arrastra
y mueve las 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 usar el modo
blueprint. Aquí, no lo hacemos hacer cualquier representación en vivo. Esta
es la mejor manera de trabajar con ConstraintLayout porque puede concentrarse
en las restricciones Así que configurar estas opciones, están en
la esquina superior izquierda y si desea cambiar, eso también es
usar el ícono de capas azules. Zoom y panorámica. Entonces, en realidad
ha podido hacer zoom y pan en el editor de laboratorio
y es muy útil cuando estás lidiando con ConstraintLayout
cuando las cosas están muy pequeños o cerca uno del
otro o superpuestos.
Qué lo que hemos hecho, en 3.3, se cambian 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 entonces hacer zoom para ajustar, por lo que si
está ampliado y desea volver a ese diseño, puede usar comando
y control, más cero. Entonces, si está ampliado
y en realidad no quiere alejar, pero desea desplazarse,
en realidad puede hacerlo manteniendo presionada la barra espaciadora y usando
el mouse para hacer clic y arrastrar. Este es una especie de gesto familiar si
ha utilizado Photo Shop u otro herramientas de diseño
Y entonces, el último consejo es usar datos de muestra y con datos de muestra,
en ConstraintLayout, es más fácil obtener una vista previa de
cómo responderán sus diseños a diferentes tipos de contenido en tiempo
de ejecución, por lo que introdujimos ayudantes de datos de muestra para que sea
más fácil trabajar 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. Tenemos
avatares y fondos escénicos. Entonces, si usted… y si desea agregar
sus propias imágenes a la datos de muestra, puede hacerlo. Simplemente
crea una muestra de datos directamente en la raíz de su proyecto.
Datos de muestra, con su vistas de imagen restringidas, puede cambiar
rápidamente entre diferentes tipos de imágenes y establezca diferentes
proporciones para que pueda ver cómo responde su diseño sin tener que
ejecutar su aplicación Con texto vista, tenemos datos de muestra. Tenemos
ciudades. tenemos fechas, nombres completos. Si desea sus propios
datos de muestra, puede crear es la raíz de su proyecto y creo
que apoyamos el 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 corta. Sobre el correcto, esto es un montón de texto
colocado allí. Y así, tú sabes, sin tener que ejecutar nuestra aplicación,
puedes ver, solo con datos de muestra, cómo responde
su diseño Entonces, no necesito copiar lorm ipson de Internet nunca
más? [Risas] Creo
que como mencionaste, esto es ideal para probar en diferentes
idiomas.
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 características que salen en
ConstraintLayout 2.0. Quién tiene ¿Ya intentaste jugar con el editor de movimiento?
Entonces, veo a cinco personas. Así que, con suerte, podemos dar una
buena introducción aquí a la conceptos básicos y Chris va
a hablar sobre el diseño superficie.
Por
lo tanto, el diseño de movimiento le permite crear diseños dinámicos utilizando todas
las funciones de ConstraintLayout de lo que hablamos antes y cambiar
las restricciones sobre tiempo. Vemos la construcción
de un encabezado plegable que Chris Banes juntos. Entonces puedes ver esa
imagen del título en realidad se esconde detrás de la vista a medida que
se desplaza hacia arriba. es una bonita animación dramática. Antes
de llegar a algo así, hablemos de lo que podemos construir
con MotionLayout, puede usarse para crear encabezados contraíbles,
comentarios de estado o transiciones, tal vez el estado abierto
y cerrado de un sorteo y usted también puede aprovechar la mayoría de
las animaciones de esta presentación.
Para comprender el movimiento
y la animación, es muy importante dar un paso atrás y pensar en
lo que define una animación, no solo en Android, sino en una
película de Disney. se definen por un principio y un final. Empiezo
por aquí. Estoy aquí. Y entonces Estoy terminando aquí. Y en el
medio, con el tiempo, yo creó una animación, así que es un
movimiento muy complejo. Hablemos sobre uno sencillo. voy a poner
un punto azul en la pantalla y me gustaría construir una
animación. Para hacer eso, Tengo que definir un comienzo. Tengo
que definir un final. estoy voy a poner eso en la esquina inferior
derecha con restricciones y para construir una animación,
todo lo que hago es transición del uno al final. Eso
es lo que hará MotionLayout para ti. Descubrirá cómo hacer la
transición de ese punto azul de el principio, hasta el final. Para
construir un MotionLayout, usted tienes que empezar con
un MotionLayout en tu XML. Lo hicimos para que tuviera todas
las características de Diseño de restricción.
Apunta a una escena
de movimiento, que es una archivo XML separado y usted codifica la información
de inicio y finalización que define su animación. El inicio
y el final se definen en términos de conjuntos de restricciones. ¿Qué son
los conjuntos de restricciones? Usted puede ser familiarizado con esto ya. 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 dimensionamiento. A conjunto de restricciones es sólo
esta parte. Solo las restricciones y sólo 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 apliqué
a una animación, se vería así. Construyamos
un justo diseño fácil 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 cambia de tamaño. Así que
hay un montón de cosas que van en. Esto podría ser realmente 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, Solo voy a agregar — voy
a definir el inicio y el fin. El comienzo, voy a mover
el título fuera de la pantalla. y hazlo haciendo una restricción
al final del título al inicio de la vista,
al ConstraintLayout. ConstraintLayout está muy feliz de exponer
sus puntos de vista, si usted pídeselo. también
vamos a hacer lo mismo cosa en la parte inferior, donde vamos
a poner una restricción a empuje el texto de la descripción fuera
de la pantalla.
Entonces en realidad construir eso, vamos a seguir adelante
y hacer un MotionLayout. Esta es una subclase de
ConstraintLayout. Tiene un etiqueta de diseño. Aquí, voy a llamarlo
espaciado. Entonces tengo que definir mi diseño, que es solo
las vistas. no lo doy anchos y altos, no restrinjo
nada. estoy literalmente, solo voy a hacer una lista
de tres vistas de texto y una vista de imagen
Ahora voy a ir al archivo. Yo 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. Una vez
más, eso es lo que define a un animación. Una animación siempre
tiene un comienzo y siempre tiene un final Para definir inicio,
voy a hacer una restricción conjunto y un conjunto de restricciones es solo
una etiqueta.
Tiene un ide – ID. Pero,
diremos qué ID, soy va a establecer su alto, ancho
y relleno. limitaré – para sacarlo de la pantalla, voy
a restringir hasta el final de parent y haga lo mismo para el conjunto
de restricciones, end. estoy vamos a seguir adelante y hacer que la
vista del título restrinja el inicio al comienzo del padre. Y esto
trae ese título a la 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 devolverlo a Chris, quien 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 para
salir. queríamos asegurarnos que nos concentremos en poner algunas
piezas fundamentales en su lugar antes de que lo liberemos.
No queremos
ser demasiado impacientes y obtener bien, a diferencia de cosas como la ejecución
instantánea. [Risas] La biblioteca
de movimiento ha estado fuera por un momento. Queríamos concretar los
conceptos de animación correctos y roles requeridos. La biblioteca
también debe ser ejecutante Juan
y Nicolás ha sido trabajando duro en la biblioteca. Les
encantan tus comentarios y todo las demostraciones geniales que han estado
saliendo. Así que, por favor, mantenlo viniendo 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
hecho el rendimiento y mejoras en las interacciones
porque tiene que ser capaz de renderizar animaciones a 60 cuadros
por segundo y hacerlo más fácil trabajar con restricciones porque
hay que saber utilizar ConstraintLayout y pensamos que
si invertimos en la calidad ahora en la herramienta, en realidad
hará que el MotionLayout editor mejor Con eso, estoy aquí
para mostrarles muy temprano exploración del editor de movimiento.
Esto es maquetas, no La construcción.
Soy el diseñador
Todo esto está hecho en la 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 la imagen del espacio
y las vistas de texto animadas, usemos eso como el contexto de lo
que veremos en el movimiento editor. Entonces, ¿cómo se ve
eso realmente? Entonces, aquí, tenemos una nueva perspectiva en el árbol
de componentes, por ahora estamos llamando a la vista de transiciones. Para
el propósito de la charla, estoy vamos a hablar sobre esta nueva
vista porque creemos que es la parte KNT más significativa. Tendrás
el panel de propiedades y paleta. Todavía no hemos averiguado
los detalles sobre cómo se integra con la línea de tiempo
o la vista. Entonces, quédate sintonizado para eso.
Entonces, en este caso, tenemos la inicio de la transición y para que
pueda ver las vistas de texto son fuera del puerto de visualización, pero puede
ver que hay una ruta de movimiento que va de afuera hacia adentro.
En realidad,
no renderizamos el texto vistas fuera del puerto de vista
hoy, pero eso es definitivamente algo que necesitaremos para la
animación porque sabemos ese es un ejemplo de animación muy
típico para que las cosas vuelen. 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 algo así pretendíamos aquí. Entonces, si rebobinamos,
profundicemos en lo que esta vista 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 varias transiciones por MotionLayout y, por lo tanto, con
este menú desplegable, podrá cambiar entre las diferentes
transiciones y cargaremos el conjuntos de restricciones correspondientes y
cambie las líneas de tiempo para que pueda puede ver cómo cambian los componentes.
Cada transición tiene sus propias
propiedades, que es el comienzo y finaliza el conjunto de restricciones. Tiene
una duración expresada en milisegundos. Entonces,
si nos movemos hacia abajo, tenemos el línea de tiempo Y así tienes,
empezando por la izquierda, tienes la barra de reproducción, puede repetir
la animación tantas veces como usted quiere. Puede saltar rápidamente
al principio o al final. Si usted queremos acelerar o ralentizar la
animación, permitimos que, como bien. Solo para sintonizar la
animación perfectamente. Y tenemos este control de tiempo aquí
para que puedas dar un paso a través de milisegundos, por
milisegundos y luego por el línea de tiempo en sí, ya sabes,
mostramos de cero a 100, siendo 100 el fin. Puede 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 quiere enfocarse.
Y así
nos movemos hacia abajo y vemos todo los componentes que puede
animar en MotionLayout. Cada componente mostrará que tiene
una restricción inicial y final set, que son necesarios para animar
cualquier cosa. Y así si nosotros mire específicamente esta imagen de flash
espacial, tiene una clave atributo o fotograma clave que
cambiaremos a mitad de la animación. Si
alejamos el zoom, corresponden responde a los mismos. Aquí están mis
componentes que estoy animando y dónde comienzan y terminan
y cuáles son los rutas de movimiento.
Y entonces, ahí es donde nosotros están con el editor de movimiento.
Esperamos sacarlo pronto, pero no puedo prometer nada El próximo
año. [Risas] En algún
momento de 2019. Y eso es eso. [Aplausos]
Todos, la próxima sesión, en este teatro, comenzará a las
5:40. Gracias. 5:40. Gracias. Bienvenidos
de nuevo, todos. los El programa se pondrá en marcha
en unos dos minutos. Nuestro el programa se reanudará en dos minutos
y medio. medio minutos medio
minutos medio minutos medio
minutos medio minutos medio minutos medio
minutos medio minutos medio
minutos medio minutos [Sin
audio] Al final, hablaré sobre lo que
estamos trabajando.
Dos Hace años, el CEO de Google nos mudaremos
al mundo móvil primero. Significa aprendizaje automático y móvil.
Años y años, más y más las aplicaciones móviles están utilizando el aprendizaje
automático para producir fascinateg experiencia de usuario. Cada vez hay más lógica
de aprendizaje automático cambiar 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 los costos. También se ejecuta
en cualquier momento, 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 tiene que dejar el dispositivo. Permítanme
hacer una encuesta rápida aquí. Cómo muchos de ustedes viajaron desde
fuera de California para asistir esta cumbre de desarrollo? ¡Guau! Bienvenidos.
Bienvenido a Silicon Valley.
Yo Espero que tengas la oportunidad de visitar
el puente Golden Gate y disfrutar buena comida.
Hablando de comida, mi reloj biológico me dice que es hora
de cenar. Entonces, dónde debo comer? Bueno, sacaré mi teléfono,
preguntaré a Google Asistente. Hola, Google, tengo hambre.
Cualquier buen restaurante ¿por aquí? Recomiendan donde
ir a cenar por los alrededores el área y la ubicación en la que
estoy actualmente.
Cuando le digo un nuevo lugar, me gustaría tomar
muchas fotos. El dispositivo móvil ahora puede funcionar
cada vez más para la máquina tareas de aprendizaje La primavera pasada,
llevé a mi familia a la Toscana en Italia. Condujimos por esos hermosos pueblos
en lo alto de las colinas. Ahí hay muchos signos, pero lamentablemente
no hablo italiano. yo deseo que 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, usa el habla para
convertir texto en voz y decir dime 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 buena datos de alta calidad. El
dispositivo móvil tiene muy poder de cómputo limitado.
Los modelos que
se ejecutan en un servidor en la nube son a menudo demasiado grande o demasiado complejo.
Tienes que gastar mucho esfuerzo para optimizar el modelo para el
uso móvil. Después, finalmente, la aplicación está construida, debe preocuparse
por cómo la implemento, eso se convierte en otro dolor de cabeza. Tome
todos estos problemas, nosotros lanzó ML Kit, que ayuda a los desarrolladores
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 desea utilizar
el aprendizaje automático en móvil, no significa que debas
preocuparte por recolectar datos, creación de modelos, optimización,
alojamiento, implementación, descargando ML Kit se encargará
de todo esto por ti. Nosotros proporcionar modelos comunes que funcionan
de forma inmediata. Se optimizaron para velocidad, precisión y eficiencia para
el dispositivo móvil. Proporcionamos una API coherente
en Android y yo OS.
Para
máquinas de uso común tareas de aprendizaje, tenemos API base
que vienen con Google preentrenado modelos que funcionan fuera de la caja.
Hay cinco API que estamos secundario. La API de reconocimiento
de prueba 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 el soporte para tener caras en imagen
y video en vivo transmisión. Tenemos detección
de contornos que puede ayudarte identifique las diferentes partes de la cara
y luego aplique la máscara facial. El escaneo de código de barras se puede utilizar
para detectar unidimensional y códigos de barras bidimensionales. La API de etiquetado
de imágenes puede detectar objetos dentro de la foto. Para ondevice
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 adapta a sus necesidades y usted es
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 usa el modelo
personalizado, puede hacer dentro de su aplicación o alójelo
en la nube. Si eliges el última opción para alojar en la
nube, no significa que necesites para construir su propio servidor en la nube.
ML Kit encontrará una manera para usted. Gestionaremos el modelo de alojamiento,
despliegue, descarga, actualización y la experimentación
en curso. Desde que se lanzó ML Kit hace
seis meses en Google I/O, han realizado varias mejoras.
En primer lugar,
mejoramos en gran medida nuestra modelo de detención facial, que ahora
es 18 veces más rápido y un 13% 24% más preciso. También pulimos
nuestro reconocimiento de texto. API haciéndolas más optimizadas
y consistentes tanto en el dispositivo como
en la nube. Además, lanzamos Detección de contorno facial. Puede ver
que ahora puede usar la API para identificar los contornos de
la cara en la foto. Incluye todo el rostro, tanto cejas, ojos,
nariz y labios. Esto es donde las aplicaciones en tiempo real pueden poner
la máscara facial como unas gafas o una nariz graciosa 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 construir impresionantes aplicaciones móviles usando la
máquina aprendizaje. Un mal
enfoque de la imagen puede dañar la precisión. En segundo lugar, debe asegurarse
de que la imagen tenga suficiente Talla. Por ejemplo, para la detección
de rostros, debe tener al menos 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 idioma,
debe tener un tamaño de 16 por 16. Si utiliza nuestra API en la nube
para reconocer chino, japonés y Coreano, cada carácter debe tener al
menos 24 por 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 Talla.
Primero, puede crear su aplicación como
un paquete de aplicaciones de Android. Al hacerlo, permite que Google
Play genere automáticamente APK para densidad de pantalla
específica, arquitectura y los idiomas. Tu usuario solo tiene
que descargar la APK y hacer coincidir la configuración de su dispositivo
Otra forma de reducir API14 El tamaño de RR RR es si no es un
propósito principal, podría mover características de aprendizaje automático,
que requieren ML Kit en un dinámico modelo de característica. De esa manera,
evita que los usuarios descarguen modelo, que a veces puede ser grande.
Todos sabemos que el aprendizaje automático
implica mucho cálculo, entonces, la velocidad se vuelve realmente importante.
Estos son algunos consejos sobre cómo mejorar.
Puede reducir la resolución
de la imagen y el cuadro de video rate 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 debe usar el modo rápido de cara, 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 ambos.
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 termine
la detección antes renderizando 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 cambiar al modo de demostración. Entonces, para
el propósito de la demostración, estoy usando más lento, 3 años de edad Teléfono Nexus 5X. En el primer
video, les voy a mostrar, sin ningún consejo y no hacemos video
— cualquier dibujo para hacer seguro que el contorno y el rostro quedan
juntos asi que si solo llamas la API sin ninguna mejora de rendimiento,
puede ver, el los contornos no están llenos 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
termine la detección antes renderizar tanto el rostro como el
contorno. Como puedes ver ahora, los contornos están llenos en
la cara todo el tiempo. No hay más brecha. Enfriar. Entonces,
volvamos a cambiar a las diapositivas
[Aplausos] Si está utilizando nuestra API de modelo personalizado,
cómo incluir el modelo es algo que debes considerar. Hay
dos formas, puedes paquete dentro de su aplicación o
alójelo 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 ralentizar bajar la descarga de la aplicación. Además,
no puedes cambiar el modelo. sin una nueva versión de la aplicación.
Por otro lado, si alojas un modelo en la nube, te brindamos
todo el soporte de hospedaje.
Obtiene 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 por aire a
la aplicación sin ninguna aplicación nueva liberar. También
puede 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 descargan. Entonces,
una tercera opción es usar un enfoque híbrido. Puede agrupar el modelo
en la aplicación, así que hágalo utilizable de inmediato. Luego puede recibir
actualizaciones de modelos a través de aire de la nube. Si está utilizando
nuestra API base, es proporcionado en dos formas diferentes.
Para los mejores términos, SDK. los el modelo en realidad es proporcionado por el
servicio Google Play, por lo que es en todas las aplicaciones para que la aplicación
en sí misma no tenga que contener el modelo, lo que hará que su 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 enlazados 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 Kit de dependencias en su aplicación. Dentro
de ese archivo, dentro de este sección de dependencia, si desea utilizar
el soporte de API a través de el SDK delgado, debe agregar la dependencia
llamada Firebase. Y además, si desea usar SDK grueso,
aún debe mantener esta línea, porque todos los puntos de
entrada de la API provienen de esta dependencia del SDK. Pero también
necesita agregar más dependencias. Si desea utilizar el reconocimiento
de imágenes, la imagen detección, entonces necesita agregar
firebase ML vision porque es un SDK grueso. Del mismo
modo, para el etiquetado de imágenes, necesita agregar la dependencia del modelo
de etiqueta de imagen. A continuación, hablaré sobre algunas áreas
nuevas en las que actualmente estamos trabajando en. Algunas características
nuevas del kit ML están bajo desarrollo o en la fase inicial de prueba.
Empezamos con lo 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, cuantización
y transferencia aprender a reciclar 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 tus capturas. Eso puede identificar cualquier pez con
una foto. Su modelo es más de 80 megas. Al usar 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 inscribiéndote hoy en g.co/firebase/regístrate.
Espero
que hayas disfrutado la charla. hoy y puedo llevar a casa algunos consejos
y no puedo esperar a ver lo que construirás con ML Kit.
Si tienes preguntas, estaré fuera en el salón y también estaremos
en horario de oficina. Gracias tanto por escuchar. [Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
[Aplausos] [Aplausos]
Hola a todos. Bienvenido a Notificaciones modernas de Android.
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 a los
usuarios, respétalos, 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 a tu usuario atención. No molestes al usuario,
respétalo. algunos útiles consejos, así que respete la configuración
del usuario. Entonces, si tienen le comunicaron, en su aplicación,
que quieren un cierto configuración para sus notificaciones,
entonces debe respetar eso. No intente anularlo. No
intentes ignorarlo. Tú debe comprobar que las notificaciones
que está enviando son no bloqueado Que todavía quieren
escuchar estos notificaciones Y finalmente, si eres
capaz en tu aplicación, puedes debe hacer una copia de seguridad de cualquier configuración
que le hayan dicho notificaciones y asegúrese de que estén
sincronizadas durante la instalación y dispositivos
Debe utilizar bien estructurado aplicaciones, haciendo uso de los estilos, como
estilo de mensajería, bandeja de entrada estilo, estilo de imagen grande.
Debes
asegurarte de que tu las notificaciones son oportunas. Uso de mensajes
de alta prioridad para garantizar ellos reciben sus mensajes cuando usted
los tiende a recibir su notificaciones Y priorizar las
notificaciones y hacer se ven mejor. Así que
algunos no, no envíe estos notificaciones y olvídate de
ellas. Queremos que uses el características de la plataforma que están ahí
para ayudarlo. Por ejemplo, automático cancelar, asegurándose de que desaparezcan.
Tiempos de espera, ¿es así? relevante después de cuatro horas? Y
sincronizando a través del dispositivos. Si sabe que usan su aplicación
en varios dispositivos, deberías intentar sincronizar las
notificaciones que leen en uno. Por lo tanto, no envíe notificaciones
que no sean procesables. El punto de las notificaciones es que están ahí
para ser utilizadas. Por definición, el usuario quiere saber
algo, lo que significa que generalmente necesita hacer algo. Así
que no les envíes un notificación que dice, hey, sincronizamos
algunas cosas en el antecedentes. No
moleste al usuario, use alerta una vez y no te asegures de que
se vuelvan locos mientras están de pie en el escenario,
presentando notificaciones.
Asegúrate de que sea representativo
de lo que quieres. si eres un aplicación de chat, tal vez comportamiento de
notificación de grupo de niños. Entonces, respete al usuario, de lo contrario,
podría simplemente apague sus notificaciones y podrían
optar por desinstalar su aplicación, que sería mucho
peor. Hay características de la plataforma que
permiten deliberadamente las notificaciones están desactivadas.
Por ejemplo, las notificaciones son siendo publicado y los usuarios tal
vez sigan deslizándolo y ahora, en P, preguntamos al usuario, ¿realmente
te importa esto? ¿notificación? ¿De verdad quieres
ver este contenido? Este actúa en los canales si no está
describiendo sus canales correctamente, esto puede llevar a cierta
confusión y tal vez a algunos perdidos notificaciones Entonces,
echemos un vistazo más a canales de notificaciones. Proporcionan
un control granular. Los canales son la forma de empoderarlos.
Así que veamos cómo usalos, usalos a ellos. En primer lugar, ahora son obligatorios
en todas las aplicaciones, ya que tenemos — son requeridos en API
26 y eso debería ser En todas partes. Ayudan al usuario
a categorizar. asi te ayudan categoriza tus notificaciones que
ayudan al usuario a interactuar con ellos.
Y por
último, 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 creen lo es, ellos pueden decirte esto.
Entonces, veamos lo mejor practicas Nuevamente, debe permitir
que los usuarios administren sus notificaciones a través de la
creación del canal. Debería permitirles tal vez un enlace profundo a
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 nivel para un canal de notificación
parece obvio, pero es tan fácil pasar por alto.
Configuración
de usuario, debe respeta la configuración del usuario, pero haz
una copia de seguridad cuando puedas y no intente abusar de ellos eliminando
y volviendo a crear. Otros no son solo usar un canal.
esto es claro Olor a notificación, si quieres.
Si solo tienes un canal en su aplicación, probablemente
hay algo más que necesita estar mirando Si proporciona
descripciones deficientes para usuarios para que no entiendan
los usos de un canal, no podrá poder. Si usa 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 la 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 alrededor su nivel de importancia.
Esto no es
lo que los canales de notificación son para. Debe agruparlos en categorías
como el etiquetado 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 de chat
que llegan, pero luego expreso un interés en controlar un grupo de
chat familiar, debe crear un canal y permitir al usuario sumergirse
más profundo y tener mas control. Creando
perezosamente, eso es si ellos no recibe un mensaje a través de
su aplicación, no necesita crear el canal para eso. Y luego,
el usuario puede proporcionar retroalimentación para usted, para decir,
mire, esto es útil o esto no es útil y deberías escuchar eso. Entonces,
en Android P, nosotros difusiones añadidas para escuchar
bloqueos, bloqueos o cambiando el estado de sus
canales de notificación.
Tú debe entenderlos y debe reaccionar
ante ellos. Tú tal vez debería hacer una copia de seguridad
para que la próxima vez que cree un canal en un dispositivo diferente, tiene sentido.
También puede consultar estas API en tiempo
de ejecución para averiguar cómo el usuario interactúa con tus
canales. Entonces, ahora mire las novedades en las
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 suave de la aplicación. animación que está 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. Tienes que
asegurarte de que estás empezando su actividad directamente y su activo
comienza rápidamente. Dado que, para la mayoría de los usuarios,
la notificación les importa el la mayoría son los que los conectan
con las personas que les importan, así que mejoramos nuestro estilo de mensajería.
Experiencia de mensajería, por agregando una nueva clase de persona. Una
vez que usa API 28 y si está usando MessagingStyle en la
notificación, ahora hemos movido Avatar de las personas a la izquierda de
la notificación y puede 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 vienen
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 es compatible con la respuesta inteligente
en su aplicación, le 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 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 usar a la
persona. estamos configurando el el nombre, la URI, el icono de
esta persona y esto va a representan el centro del mensaje.
Y luego, nos vamos para pasar eso a este mensaje que
estamos creando aquí. Como puede ver, estamos pasando la instancia
de la persona, no como antes de donde estábamos pasando el nombre
de esa persona.
Nosotros también queremos incluir la imagen, entonces estamos
usando el método de datos establecidos para incluir esa imagen. Y luego,
después 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 breve
resumen de algunos de los dos y no hacer cuando estás usando
MessagingStyle. primero, por favor use MessagingStyle para los mensajes.
Y esto también se aplica si estás usando Android Auto o Android
Wear. Si tu eres notificaciones de mensajes
ascendentes, utilice Estilo de mensajería. En el pasado, hemos
visto a los desarrolladores cambiar entre MessagingStyles para esa
gran expansión de imagen presentación.
Pero ahora, con el método
de datos establecidos, no es necesario Haz eso. Puede 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 use para agregar el avatar. Si no lo configura,
usaremos la inicial de el nombre de la persona. Y finalmente, si su
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 un notificación. Con el fin de dar al
usuario un limpio y actualizado tarro de notificación, después de que
respondan a un mensaje notificación, este no es uno
de esos casos.
Te gustaría mantenga esa notificación allí para que
si el usuario quiere responder a esta conversación y responda después,
así que por favor no cancele eso y deje que el usuario deslice
el dedo cuando haya terminado con la conversación El
otro mal comportamiento que que hemos visto en el pasado es que algunos desarrolladores
están configurando esto en para lograr una presentación
visual. por favor no hagas que. Hay dos razones. Una
es porque se romperá Android 9 en la presentación
y el otro — y el otro razón es porque una persona
sin nombre no es un verdadero persona.
[La risa] Entonces, hasta ahora, hemos hablado
sobre cómo puede llegar al usuario — cómo puede ayudar a su usuario a conectarse
con las personas que le importan sobre y cómo puede hacer que su notificación
sea una mejor experiencia para el usuario, pero quiero hacer una pausa
aquí y ver 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, 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 para la versión
beta. Entonces, esto es lo que nos mostrará
el bienestar digital. Eso proporciona una descripción general del uso de
nuestra aplicación y proporciona un tablero que muestra el tiempo que dedicamos a cada
aplicación y el número de notificaciones que hemos recibido. Personalmente
me encanta usarlo para aprender dónde estoy pasando mi tiempo,
pero a veces vería algunos Las aplicaciones me envían
notificaciones inesperadamente. Una La pregunta que podría tener es ¿cómo
se cuentan las notificaciones? El objetivo es rastrear al usuario. interrumpir interrupciones. Cualquier actualización
que sea visible para el usuario se cuentan como uno. Si está
enviando una notificación a el canal de bloque, eso no se
cuenta aquí.
Entonces, en este caso, vi que esta aplicación
me está enviando muchos notificaciones, así que me dio curiosidad.
Entré en el tablero y yo abrió eso para ver el desglose
por hora. 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 la notificación es 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 despertar constantemente un dispositivo de
dosis profunda. Si quiero tener un buen 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. Puede encenderlo
volteando su dispositivo, lo cual es súper conveniente.
Pero,
¿y si esto es súper importante? notificación que el usuario realmente
quiere recibir? Asi que para aquellos, he aquí algunos consejos para
usted. Primero, establezca la derecha 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 su notificación pertenece a uno de ellos,
por favor etiquete su notificación como tal. Aquí,
enumeré algunas categorías.
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ándolos.
El otro consejo que tenemos es si
se trata de una notificación de otra persona, etiquete su notificación.
Como puedas vea aquí, en el digtell: el usuario puede
elegir a quién quiere obtener notificado de. Por lo tanto, agregue
a esa persona en su notificación. y agregar el asociado URI, si es posible. Omitirá No molestar.
Cuando el usuario gira encendido, realmente no quieren ser
molestados. Entonces, si eres enviando una notificación que
no se esperaba, que realmente molestarlos Por lo tanto, no abuse
de estas API.
Esto nos lleva de vuelta al código
que teníamos al principio. Siempre que envíe una notificación,
no moleste al usuario, respetarlos, empoderarlos,
deleitarlos y conectarlos a las personas que les importan.
Gracias. [Aplausos] [Aplausos]
[Aplausos] [Aplausos].