Publicado por Dave Burke, Vicepresidente de ingeniería, publicado en Blog de Android para programadores.
La semana pasada, en el congreso Mobile World Congress, vimos que el ecosistema de Android, formado por desarrolladores, fabricantes de dispositivos y proveedores de silicio, continúa proporcionando experiencias fantásticas a usuarios de todo el mundo.
Nos anticipamos y compartimos la primera versión preliminar para desarrolladores de
Android P, la nueva versión de Android. Se trata de una compilación básica preliminar pensada solo para desarrolladores; ustedes son los revisores y evaluadores más confiables ;-). Los comentarios tempranos de nuestra comunidad de desarrolladores son fundamentales para ayudarnos a mejorar la plataforma y satisfacer sus necesidades. Nos gustaría que comiencen a probar las nuevas funciones y API de P, y como siempre, confiamos en sus ideas y comentarios adelantados; por eso, ¡no dejen de
darnos su opinión!
La primera versión preliminar de Android P para desarrolladores es solo el comienzo; tendremos mucho más para compartir en
Google I/O en mayo ¡Estén atentos!
Aquí les mostramos algunas de las funciones geniales de esta primera versión preliminar de Android P que queremos que prueben y evalúen
con su opinión.
Posicionamiento en interiores con RTT de WiFi
El posicionamiento preciso en interiores ha sido, por mucho tiempo, un desafío que abre nuevas oportunidades para servicios basados en la ubicación. Android P suma una plataforma compatible con el protocolo de WiFi IEEE 802.11mc, también conocido como tiempo de ida y vuelta (RTT) de WiFi, para que puedan aprovechar el posicionamiento en interiores en sus apps.
En los dispositivos Android P con hardware correspondiente, permiso de ubicación y ubicación habilitada, sus apps podrán usar
RTT API para medir la distancia a los puntos de acceso (PA) WiFi cercanos. No es necesario que el dispositivo se conecte a los PA para usar RTT, y mantener la privacidad; solo el teléfono puede determinar la distancia, los PA no pueden hacerlo.
Al conocer la distancia a 3 o más PA, pueden calcular la posición del dispositivo con una precisión de 1 a 2 metros. Con esa precisión, pueden crear nuevas experiencias, como la navegación en instalaciones, servicios específicos basados en la ubicación, como el control de voz inequívoco (p.ej., “Encender esta luz”) e información basada en la ubicación (p. ej., “¿Hay ofertas especiales para este producto?”).
Compatibilidad con recorte de pantalla
Ahora, las apps pueden aprovechar al máximo las pantallas de los dispositivos más nuevos con contenido en pantalla completa. Agregamos el recorte de pantalla en la plataforma, junto con API que pueden usar para gestionar la visualización de su contenido.
La compatibilidad con recorte funciona sin inconvenientes para las apps y el sistema administra la altura de la barra de estado para separar su contenido del recorte. Si tienen contenido inmersivo crítico, también pueden usar las
nuevas API para comprobar la forma del recorte y solicitar que se aplique un diseño de pantalla completa a su alrededor. Pueden verificar si el dispositivo actual tiene un recorte llamando a
getDisplayCutout(), y luego determinar la ubicación y la forma del área de recorte usando
DisplayCutout. Un nuevo atributo de diseño de ventanas,
layoutInDisplayCutoutMode, les permite indicar al sistema cómo y cuándo mostrar su contenido en relación con el área de recorte. Pueden encontrar más información
aquí.
Para que les resulte más fácil compilar y probar la compatibilidad con el recorte en su app, agregamos una opción para desarrolladores que simula un recorte en cualquier dispositivo. Les recomendamos probar sus apps existentes con el recorte de pantalla habilitado para garantizar que su contenido se muestre correctamente.
Las apps con contenido inmersivo pueden mostrar contenido en pantalla completa en dispositivos con recorte de pantalla.
Notificaciones de mensajería mejoradas
En Android P, priorizamos la mejora de la visibilidad y la función de las notificaciones. Prueben el nuevo estilo de notificación
MessagingStyle, que destaca quién envía mensajes y cómo se puede responder. Pueden mostrar conversaciones, adjuntar fotos y calcos, e incluso sugerir respuestas inteligentes. Encontrarán información detallada
aquí.
En las notificaciones MessagingStyle ahora pueden mostrar conversaciones y respuestas inteligentes [izquierda], e incluso adjuntar imágenes y calcos [derecha].
Multi-camera API
Ahora pueden acceder a transmisiones simultáneamente desde
dos o más cámaras físicas en dispositivos con Android P. En dispositivos con dos cámaras frontales o posteriores, pueden crear funciones innovadoras que no serían posibles con una sola cámara, como el zoom uniforme, el bokeh y la visión estéreo. La API también les permite llamar a una transmisión de cámara lógica o fusionada que automáticamente alterna entre dos o más cámaras. Esperamos ver sus creaciones nuevas y fabulosas no bien los dispositivos Android P compatibles con varias cámaras lleguen al mercado durante este año.
Entre otras mejoras en la cámara, se incluyen nuevos
parámetros de sesión, que ayudan a reducir demoras durante la captura inicial, y el uso compartido en Surface, que permite a los clientes de la cámara manejar varios casos de uso sin tener que detener e iniciar la transmisión de la cámara. También agregamos API para brindar
compatibilidad con flash basada en la pantalla y acceso a
marcas de tiempo OIS para lograr estabilidad en la imagen y efectos especiales en el nivel de la app.
ImageDecoder para mapas de bits y elementos de diseño
Android P ofrece una alternativa más sencilla para decodificar imágenes en mapas de bits o elementos de diseño; se trata de
ImageDecoder, que reemplaza a
BitmapFactory. ImageDecoder les permite crear un mapa de bits o elemento de diseño a partir de un búfer de bytes, un archivo o un URI. Ofrece varias ventajas en comparación con BitmapFactory, incluida la compatibilidad con ajuste de escala exacto, decodificación en un solo paso en memoria de hardware, compatibilidad con posprocesamiento en la decodificación y decodificación de imágenes animadas.
Pueden decodificar y aplicar un ajuste a escala a un tamaño exacto realizando solo una llamada a
setResize() con las dimensiones exactas. También pueden llamar a
getSampledSize() para obtener las dimensiones de la imagen en una frecuencia de muestreo específica, y luego ajustar a escala esas dimensiones. Si desean aplicar posprocesamiento a una imagen (por ejemplo, aplicar esquinas redondeadas a máscaras circulares o efectos más complicados), pueden pasar a ImageDecoder cualquier
android.graphics.PostProcessor. También pueden crear elementos de diseño directamente con
ImageDecoder.decodeDrawable(). Si la imagen codificada es un GIF o WebP animado, el elemento de diseño será una instancia del nuevo
AnimatedImageDrawable.
Video HDR VP9, compresión de imagen HEIF y API de medios
Android P incorpora compatibilidad integrada para HDR VP9 Perfil 2 para que ahora puedan ofrecer películas en HDR a sus usuarios en YouTube, Play Movies y otros recursos en dispositivos que admitan HDR.
Nos entusiasma agregar codificación de imágenes
HEIF (heic) a la plataforma. HEIF es un formato popular para fotos que mejora la compresión para el guardado en un medio de almacenamiento y datos de red. Con dispositivos Android P compatibles con la plataforma, es fácil enviar y utilizar imágenes HEIF desde sus servidores backend. Asegúrense de que sus apps sean compatibles con este formato de datos para compartir y mostrar contenido, y luego prueben HEIF como formato de almacenamiento de imágenes en sus apps. Pueden realizar una conversión de jpeg a heic usando
ImageDecoder o
BitmapFactory para obtener un mapa de bits a partir de jpeg, y usar
HeifWriter en la nueva biblioteca de compatibilidad alfa para escribir imágenes HEIF estáticas desde el búfer de bytes YUV, Surface o un mapa de bits.
También nos encontramos en el proceso de mejorar y refactorizar las API de medios para que resulten más fáciles de desarrollar e integrar; les proporcionaremos más información posteriormente durante el año.
Sensibilidad al costo de datos en JobScheduler
JobScheduler es el servicio central de Android pensado para ayudarlos a administrar tareas programadas o trabajos en
Descanso,
App Standby y cambios de los
Límites de segundo plano. En Android P, JobScheduler controla mejor las tareas relacionadas con la red para el usuario aplicando coordinación con señales de estado de red que los proveedores proporcionan por separado.
Ahora las tareas pueden declarar su tamaño de datos estimado, realizar búsquedas anticipadas de señal y especificar requisitos de red detallados; los proveedores pueden notificar congestión o falta de medición en las redes. JobScheduler luego administra el trabajo de acuerdo con el estado de la red. Por ejemplo, cuando una red está congestionada, JobScheduler podría diferir las solicitudes de red de magnitud grande. Cuando la red es no medida, puede ejecutar tareas de búsqueda anticipada para mejorar la experiencia del usuario, como la búsqueda anticipada de encabezados.
Cuando agreguen trabajos, prueben
setEstimatedNetworkBytes(),
setIsPrefetch() y
setRequiredNetwork() para permitir que JobScheduler controle las tareas correctamente. Cuando se ejecute su trabajo, asegúrense de usar el objeto de red que muestre
JobParameters.getNetwork(); de lo contrario, implícitamente usarán la red predeterminada del dispositivo que podría no cumplir con sus requisitos y generar uso de datos no intencionado.
Neural Networks API 1.1
En Android 8.1 presentamos
Neural Networks API para acelerar el aprendizaje automático en dispositivos con Android. En Android P, ampliamos y mejoramos esta API agregando compatibilidad con nueve operaciones nuevas: Pad, BatchToSpaceND, SpaceToBatchND, Transpose, Strided Slice, Mean, Div, Sub y Squeeze. Si tienen un dispositivo Pixel 2, la versión DP1 ahora incluye un controlador Qualcomm Hexagon HVX con aceleración para modelos cuantificados.
Mejoras en Autofill
En Android P, continuamos mejorando Autofill Framework en respuesta a los comentarios de usuarios y desarrolladores. Además de correcciones de errores claves, en esta versión se incluyen nuevas API que permiten a los administradores de contraseñas mejorar la experiencia del usuario con Autofill; por ejemplo, se mejoran la
filtración del conjunto de datos, la
limpieza de los datos ingresados y el
modo de compatibilidad. El modo de compatibilidad en particular tiene un alto impacto en los usuarios finales, ya que permite a los administradores de contraseñas adoptar un enfoque basado en la accesibilidad en apps que aún no son totalmente compatibles con Autofill, sin afectar el rendimiento ni la seguridad. Podrán consultar toda la información sobre las novedades
aquí.
Abrir Mobile API para pagos NFC y transacciones seguras
Android P suma la implementación de
GlobalPlatform Open Mobile API en Android. En los dispositivos compatibles, las apps pueden usar la
OMAPI API para acceder a elementos seguros (SE) y habilitar pagos con tarjeta inteligente y otros servicios seguros. Una capa de abstracción de hardware (HAL) proporciona la API subyacente para enumerar diferentes elementos seguros (eSE, UICC, etc.) disponibles.
En Android P continuamos nuestra inversión a largo plazo con el objetivo de hacer que Android se la mejor plataforma para los desarrolladores.
Seguridad para las apps
En Android P avanzamos a una IU más uniforme para la autenticación mediante huellas dactilares en apps y dispositivos. Android ahora proporciona un diálogo de sistema estándar para solicitar al usuario que toque el sensor de huellas digitales, y administra el texto y la ubicación según corresponda para el dispositivo. Las apps pueden activar el diálogo de huellas digitales del sistema usando una nueva
FingerprintDialog API. Les recomendamos realizar un cambio al nuevo diálogo de sistema cuanto antes.
Como parte de un esfuerzo mayor para trasladar todo el tráfico de red de cleartext (HTTP sin encriptar) a TLS, también estamos cambiando los ajustes predeterminados de la
Configuración de seguridad de la red para bloquear todo el tráfico de cleartext. Si están usando una configuración de seguridad de red, deberán establecer conexiones a través de TLS, a menos que indiquen explícitamente que desean usar cleartext para dominios específicos.
Privacidad para los usuarios
Para optimizar la privacidad, Android P restringe el acceso al micrófono, la cámara y todos los sensores de
SensorManager de apps inactivas. Mientras la UID de tu app está inactiva, el micrófono notifica audio vacío y los sensores dejan de notificar eventos. Las cámaras que usan sus apps se desconectan y se produce un error si la app intenta usarlas. En la mayoría de los casos, estas restricciones no deberían generar problemas nuevos para las apps existentes, pero les recomendamos eliminar esas solicitudes de sus apps.
También habilitaremos la encriptación de las copias de seguridad de Android con un secreto del cliente. Esta función aún está en desarrollo y se presentará en una versión preliminar futura de Android P.
En el largo plazo, trabajaremos para proporcionar compatibilidad con la aleatorización por red de direcciones MAC asociadas con la plataforma. En los dispositivos compatibles que tengan Android P, pueden habilitar esto de forma experimental para probarlo como una nueva opción para desarrolladores.
Android P también permite al usuario controlar el acceso al identificador build.serial de la plataforma disponiéndolo detrás del permiso
READ_PHONE_STATE. El acceso directo a este identificador
es obsoleto desde Android 8.0. Para acceder al identificador build.serial, deben usar el método
Build.getSerial()
.
Rendimiento de ART
Estamos trabajando para proporcionar mejoras de rendimiento y eficiencia para todas las apps a través del tiempo de ejecución ART. Ampliamos el uso de perfiles de ejecución por parte de ART para optimizar las apps y reducir el consumo de memoria del código de app compilado. ART ahora usa información de perfil para reescribir archivos DEX en el dispositivo, con reducciones de hasta el 11% en diferentes apps populares. Esperamos que esas reducciones se correlacionen estrechamente con reducciones en el consumo de memoria del sistema por parte de los archivos DEX y en los tiempos de inicio para sus apps.
Optimización de Kotlin
Kotlin es un
lenguaje de primera clase en Android. ¡Si aún no lo probaron, deberían hacerlo! Nos hemos comprometido firmemente a mantener Kotlin en Android a largo plazo y continuar ampliando la compatibilidad, que incluye optimizar el rendimiento del código Kotlin. En P verán los primeros resultados de este trabajo; mejoramos varias optimizaciones del compilador, especialmente las que apuntan a bucles, para lograr un mejor rendimiento. También seguimos trabajando junto con JetBrains para optimizar el código que genera Kotlin. Pueden obtener todas estas novedosas mejoras de rendimiento de Kotlin con solo mantener actualizado el complemento Kotlin de Android Studio.
Más eficacia
En Android P continuamos refinando
Doze,
App Standby y
Background Limits para optimizar aún más la duración de la batería. Asegúrense de probar sus apps con estas funciones y enviarnos sus comentarios.
Apuntando a un Android moderno
Android P tomó forma en base a nuestras iniciativas de largo plazo orientadas a modernizar las bases de Android y las apps que se ejecutan en la plataforma. Como anunciamos
recientemente, Google Play requerirá que todas las actualizaciones de apps apunten a Android Oreo (
targetSdkVersion 26 o posterior) antes de noviembre de 2018 y que sean compatibles con hardware de 64 bits más cerca de 2019.
En línea con estos cambios, Android P advertirá a los usuarios con un diálogo cuando instalen una app que apunte a una plataforma anterior a Android 4.2 (targetSdkVersion inferior a 17), y las versiones futuras de la plataforma continuarán aumentando ese requisito mínimo. Recomendamos a todos los desarrolladores de Android que empiecen a planificar la migración para apuntar ahora a la API 26, y que comiencen las tareas de migración lo más pronto posible. Esta es una
lista de verificación de recursos para obtener ayuda y asistencia. Esperamos ver que sus apps aprovechen al máximo este Android moderno.
Mejora de la compatibilidad de las apps a través de API públicas
Un tema clave para usuarios y desarrolladores es la compatibilidad de las apps; asegúrense de que las apps estén listas para las nuevas versiones de la plataforma a medida que se lancen, sin correr el riesgo de que ocurran bloqueos para los usuarios e implementaciones de emergencia para los desarrolladores. Hay buenas probabilidades de que las apps que usan Android API públicas del SDK o NDK sean compatibles. Sin embargo, las apps que usan interfaces y bibliotecas privadas para Android no lo son.
Por lo tanto, con Android P estamos iniciando un
proceso gradual para restringir el acceso a interfaces seleccionadas que no pertenecen al SDK y les pedimos a los desarrolladores, incluidos los equipos de apps dentro de Google, que usen los equivalentes públicos como alternativa. Cuando no haya un equivalente público para tu caso de uso,
avísanos. Queremos asegurarnos de que este proceso sea lo más sencillo posible para los desarrolladores, por lo que aplicaremos sus comentarios a fin de garantizar que la implementación inicial solo afecte a las API que los desarrolladores puedan migrar fácilmente a alternativas públicas. Podrán obtener más información sobre las
restricciones aquí.
Primero,
hagan que sus app sean compatibles para permitir que sus usuarios realicen una transición sin inconvenientes a Android P. Simplemente, descarguen una
imagen de sistema para dispositivos o una imagen de sistema del emulador, instalen sus apps actuales y pruébenlas. La app deberá ejecutarse y verse muy bien, y además de controlar correctamente los
cambios de comportamiento. Una vez que apliquen las actualizaciones necesarias, les recomendamos realizar la publicación en Google Play de inmediato sin cambiar la plataforma a la que apunta la app.
Recuerden que no necesitan un dispositivo compatible con Pixel para realizar pruebas o desarrollar en Android P. Para la mayoría de los usos, recomendamos
configurar un dispositivo Android Virtual Device en Android Emulator como entorno de prueba. Si no han probado el emulador últimamente, les resultará increíblemente rápido; se inicia en menos de 6 segundos, es fácil de usar e incluso pueden modelar pantallas de última generación; entre otras, se encuentran las largas y las de recorte de cámara.
Luego,
cambien la plataforma a la que apunten sus apps por “P” y ejecútenla con la experiencia de Android P completa. En sus apps, fijen targetSdkVersion en “P” y compileSdkVersion en “android-P”, realicen la compilación y luego una prueba. Asegúrense de leer los cambios de comportamiento para apps que apunten a P a fin de identificar las áreas que querrán probar y podrían necesitar ajustes.
Cuando estén listos,
exploren Android P e infórmense sobre las diversas
funciones y API nuevas que pueden aprovechar en sus apps. Para que explorar las nuevas API sea todavía más fácil, lean el
informe de diferencias de las API y la
Referencia de API para Android P. Visiten el
sitio de la versión preliminar para desarrolladores de P para obtener información detallada sobre el
cronograma de versiones preliminares y
recursos de ayuda. Miren también
este video, en el que se destacan las novedades de Android P para desarrolladores.
Para comenzar a realizar compilaciones con Android P, descarguen el SDK de la versión preliminar de P para desarrolladores y las herramientas en Android Studio 3.1 o usen la última versión Canary de
Android Studio 3.2. También lanzaremos una
versión alfa de la biblioteca de compatibilidad 28.0.0 para que la prueben.
La versión preliminar de Android P para desarrolladores incluye un SDK actualizado con imágenes del sistema para probar en el emulador Android Emulator oficial y en dispositivos Pixel, Pixel XL Pixel 2 y Pixel 2 XL.
Planeamos actualizar las imágenes del sistema y el SDK de la versión preliminar con frecuencia mientras esté vigente la versión preliminar. Este lanzamiento inicial es solo para desarrolladores y no está previsto para uso diario o por parte del consumidor. Por lo tanto, se encuentra disponible
únicamente para descarga e instalación manual.
Puedes acceder a descargas e instrucciones aquí.
A medida que nos aproximemos al producto final, invitaremos también a los consumidores a probarlo y en ese momento abriremos las inscripciones mediante Android Beta. No se pierdan la información detallada y por ahora recuerden que Android Beta actualmente no está disponible para Android P.
Como siempre, sus comentarios son muy importantes; por eso,
transmítannos sus opiniones. Cuanto antes las recibamos, mayor será la cantidad que podremos aplicar. Cuando encuentren problemas,
notifíquenlos aquí. Tenemos listas de prioridades independientes para presentar
problemas de la plataforma,
problemas de compatibilidad de las apps y
problemas con SDK externos.