<CarlosDev/>

Actual

Android 7.1 Nougat: accesos directos y Pixel

API 25, octubre de 2016. Llegó primero en el Pixel. Las apps ganaron accesos directos en el launcher, iconos redondos y teclados con imágenes; los Nexus esperaron a 7.1.1.

Publicado
Actualizado
Lectura
15 min
Redacción
Estable
Serie
Parte 7 de 19 · Android, versión por versión
Banner de Android 7.1 Nougat, con el logo de la versión.
En este registro11 secciones

Android 7.1 es la actualización de Nougat que llegó primero al teléfono propio de Google, el Pixel, dos meses antes que a cualquier Nexus. A los usuarios les trajo Night Light y las actualizaciones sin interrupción. A los desarrolladores, API 25 les dio accesos directos en el icono del launcher, iconos redondos y una forma de que los teclados envíen imágenes.

De un vistazo

VersiónAndroid 7.1 (7.1.1 y 7.1.2 mantuvieron el mismo nivel de API)
Nivel de API25
NombreNougat, público (el mismo nombre que 7.0)
Build.VERSION_CODESN_MR1
Play acepta apps con API 2519 de octubre de 2016, con la Developer Preview 1
LanzamientoEn el Pixel, octubre de 2016. 7.1.1 llegó a los Nexus desde el 5 de diciembre
Dispositivos de lanzamientoPixel y Pixel XL, anunciados y en preventa el 4 de octubre de 2016
Plazo de target API en Google PlayNinguno. La regla de target API de Play empezó en 2018, con API 26

Google anunció el Pixel el 4 de octubre de 2016 con “Android 7.1 Nougat”. Las primeras imágenes de fábrica del Pixel, compilación NDE63H, son de octubre de 2016. El 11 de octubre Google anunció una developer preview para los Nexus “later this month” y la versión final “in early December”. La primera compilación de la preview, del 19 de octubre, ya traía la API 25 final y abrió Play a las apps con target API 25. Las dos developer previews y las dos betas de 7.1.2 son las cuatro partes que siguen a esta vista general.

7.1 es una versión menor sobre Android 7.0. Todo lo que trajo 7.0, desde la multiventana hasta el cifrado por archivo, está en esa nota.

Tres versiones, un nivel de API

VersiónFechaDispositivos
7.1Octubre 2016Solo Pixel y Pixel XL
7.1.1Diciembre 2016Pixel, Pixel XL, Nexus 5X, 6P, 6, 9, Nexus Player, Pixel C y General Mobile 4G (Android One). El código llegó a AOSP el mismo día
7.1.2Abril 2017Pixel, Pixel XL, Pixel C, Nexus 5X, 6P y Nexus Player. Google la describió como una actualización de mantenimiento: correcciones, optimizaciones y algunos cambios para operadores y usuarios

El Nexus 6 y el Nexus 9 nunca recibieron 7.1.2. Sus últimas imágenes de fábrica son compilaciones de 7.1.1 de octubre de 2017. Con 7.1.2 el Pixel C recibió el Pixel Launcher, los iconos redondos y una cuadrícula de apps recientes pensada para tablet, y todos los dispositivos una pantalla “Battery usage alerts”, según Ars Technica.

Qué trajo

  • Accesos directos (app shortcuts). Una pulsación larga en el icono del launcher muestra acciones que llevan directo a una parte de la app, cada una respaldada por un intent. Los estáticos van en res/xml/shortcuts.xml, referenciado desde la actividad del launcher con un <meta-data android:name="android.app.shortcuts">. Los dinámicos se publican en ejecución con ShortcutManager (Context.SHORTCUT_SERVICE). La página de Google para 7.1 permitía hasta cinco por app, y algunos launchers muestran menos.
  • Iconos redondos. Un atributo nuevo, android:roundIcon. Cuando el launcher pide un icono, el framework devuelve android:icon o android:roundIcon según la configuración del dispositivo. El launcher del Pixel usaba el redondo.
  • Teclados con imágenes. La Commit Content API permite que un teclado envíe un GIF, un sticker o una imagen directamente a un campo de texto. El flujo está en Permisos, porque depende de un permiso sobre una URI. También llegó en la support library 25.0.0 para versiones anteriores.
  • Night Light. Tiñe la pantalla de ámbar según un horario o al atardecer. Funciona con el Hardware Composer HAL 2.0 en lugar de un shader de GL, así que necesita soporte del driver. Ian Lake, de Google, explicó que por eso los Nexus no lo tendrían, según Android Police.
  • Intent del gestor de almacenamiento. StorageManager.ACTION_MANAGE_STORAGE abre la pantalla del sistema “Free up space”, para que una app sin espacio deje al usuario liberarlo.
  • Usuario demo. UserManager.isDemoUser() le dice a una app que corre en un equipo de exhibición en tienda. AOSP fecha el modo demo para tiendas a nivel de sistema en 7.1.1.
  • Daydream VR. El modo VR llegó con 7.0. 7.1 añadió ActivityManager.setVrThread(): un hilo por proceso al que el planificador da prioridad mientras la app está en modo VR. Google presentó su visor Daydream en el mismo evento del 4 de octubre.
  • Añadidos menores. Paridad de género en los emoji de profesiones (se comprueba con Paint.hasGlyph()), URL de contexto y título en los metadatos de fondos animados, llamadas multi-endpoint y tipos de origen de Visual Voicemail para operadores, y las densidades para Wear DENSITY_260, DENSITY_300 y DENSITY_340.

Lo que era del Pixel, no de Android

Ars Technica listó lo que Google se guardó para el Pixel: el Pixel Launcher con su cajón de apps que se abre deslizando hacia arriba, Google Assistant, la copia ilimitada en calidad original en Google Photos, la pestaña de soporte en Settings y los nuevos botones de navegación. Los Nexus con 7.1.1 recibieron la lista de la plataforma. El Nexus 5X y el 6P tampoco tuvieron el gesto de deslizar en el sensor de huellas para abrir las notificaciones. Android Police informó que su sensor no lo permitía, pero el registro de cambios de Google para 7.1.2 incluye “Fingerprint swipe on 5X/6P”, según Ars Technica.

Seguridad y privacidad

  • Sin lista nueva de refuerzos. La página “Security enhancements” de Google tiene una entrada para 7.0 y nada para 7.1. El trabajo de plataforma está en 7.0.
  • Actualizaciones sin interrupción. Los Pixel fueron los primeros teléfonos con actualizaciones A/B: dos ranuras de sistema, una se actualiza en segundo plano mientras el teléfono sigue en uso. Si la nueva no arranca, el dispositivo vuelve a la anterior. El CDD de 7.1 añadió que los dispositivos “SHOULD support A/B system updates”; el CDD de 7.0 no lo decía.
  • Actualizaciones de Google. Google dijo que los Pixel reciben actualizaciones de software y de seguridad “as soon as they’re available, directly from Google”. Ars Technica señaló que la promesa cubría dos años de actualizaciones mayores del sistema.
  • El gestor de almacenamiento puede desinstalar sin aviso. El CDD de 7.1 prohíbe que alguien distinto al instalador de una app la desinstale sin preguntar, con dos excepciones: el verificador de paquetes y el gestor de almacenamiento que atiende ACTION_MANAGE_STORAGE. Esa segunda excepción es nueva en 7.1.
  • Fin de los parches de seguridad. El boletín de seguridad de octubre de 2019 es el último que incluye 7.1.1 y 7.1.2 entre las versiones de AOSP actualizadas. Desde noviembre de 2019 la versión más antigua listada es 8.0.

Permisos

API 25 no añadió ni quitó ningún permiso. El diff de la API para el paquete android solo toca R.attr, donde viven los atributos de los accesos directos y roundIcon. Dos funciones se protegen de otra forma:

  • Quién lee los accesos directos. Los de otra app solo los ve el launcher actual, lo que comprueba LauncherApps.hasShortcutHostPermission(). Publicar los propios no requiere permiso.
  • Contenido del teclado. El teclado entrega una URI de contenido, no los bytes. Activa INPUT_CONTENT_GRANT_READ_URI_PERMISSION, que desde API 25 da a la app una lectura temporal de esa URI. En 7.0 y anteriores la bandera se ignora y el teclado tiene que conceder el acceso por su cuenta.
EditorInfo.contentMimeTypes (image/gif, image/png) commitContent(InputContentInfo, INPUT_CONTENT_GRANT_READ_URI_PERMISSION) onCommitContent → requestPermission() lee la URI de contenido releasePermission() al terminar App (EditText) Teclado

Google recomienda que el provider del teclado no se exporte (android:exported="false") y que conceda permisos sobre URIs (android:grantUriPermissions="true").

Qué cambió para tu app

Todas las apps en Android 7.1

CambioQué hacer
Los launchers pueden pedir android:roundIconIncluye android:icon y android:roundIcon. Image Asset Studio genera los dos
Una pulsación larga en tu icono puede mostrar accesos directosAñade estáticos en res/xml/shortcuts.xml, o dinámicos con ShortcutManager
Las llamadas de accesos dinámicos tienen límite en segundo planoActualízalos en primer plano. El límite se reinicia cuando la app pasa a primer plano
Los accesos dinámicos no entran en la copia de seguridadVuelve a publicarlos cuando la app se abra por primera vez en un dispositivo nuevo
Los teclados pueden enviar imágenesDeclara los tipos MIME con EditorInfoCompat.setContentMimeTypes() y maneja onCommitContent()
En API 25 los teclados conceden lectura por URIEn un IME, activa INPUT_CONTENT_GRANT_READ_URI_PERMISSION cuando SDK_INT >= N_MR1
Falta almacenamientoLanza ACTION_MANAGE_STORAGE en lugar de fallar

Apps con target API 25

Google no publicó cambios de comportamiento ligados a apuntar a API 25. Su página de 7.1 no tiene sección de cambios, y el post de la preview solo recomendaba apuntar a 25 para “test your app with compatibility behaviors disabled”. El trabajo es opcional: accesos directos, iconos redondos y contenido enriquecido.

Qué perduró

  • Los accesos directos siguen siendo el menú de la pulsación larga. Android 8.0 añadió los accesos fijados con requestPinShortcut(), y los fijados no tienen límite de cantidad. La mayoría de launchers hoy muestra cuatro a la vez.
  • Los iconos redondos fueron reemplazados en Android 8.0 por los iconos adaptativos, que cada dispositivo recorta con su propia forma.
  • Commit Content tiene sucesor: Google llama a OnReceiveContentListener, de Android 12, su siguiente versión. También recibe contenido del portapapeles y de arrastrar y soltar.
  • Las actualizaciones A/B crecieron: A/B por streaming en 8.0, y Virtual A/B reemplazó a la A/B clásica en Android 10.
  • Night Light sigue en AOSP, controlado por ColorDisplayManager.
  • El modo demo para tiendas se rehízo alrededor de usuarios demo en Android 8.1. AOSP dice ahora que ya no tiene soporte desde 8.1.

Para saber

  • El comentario de la constante en AOSP dice N MR1: Nougat++.
  • 7.1 conservó el Easter egg de 7.0, Android Neko, el de coleccionar gatos: PlatLogoActivity.java es el mismo archivo en las dos etiquetas de versión.
  • Google ya no garantizaba nuevas versiones al Nexus 6 y al 9 después de octubre de 2016, señaló Ars Technica. Los dos recibieron 7.1.1 de todos modos, y ahí se quedaron.
  • En 2016 Ars Technica comprobó que Qualcomm no daba soporte a Nougat en los Snapdragon 800 y 801. El Fairphone 2 usa un 801 y aun así recibió una actualización oficial a 7.1.2 en noviembre de 2018. Fairphone afirma que fue el único teléfono con 801 que dio ese salto.

Parte 1 de 4

2 min

Android 7.1 Developer Preview 1: API 25 final

19 de octubre de 2016. La primera build de 7.1 para Nexus llegó con la API 25 ya final, así que se podían publicar en Google Play apps con target API 25 ese mismo día.

Leer por separado: Android 7.1 Developer Preview 1: API 25 final

La Developer Preview 1 llevó Android 7.1 a los Nexus el 19 de octubre de 2016, dos semanas después de que el Pixel saliera con esa versión. Como 7.1 ya estaba en un teléfono a la venta, Google la calificó de “beta quality” y dijo que su objetivo era “to tease out any device-specific issues”.

Fecha19 de octubre de 2016
BuildNPF10C
DispositivosNexus 5X, Nexus 6P y Pixel C, por OTA a través de Android Beta
Estado de la APIFinal: “We’ve finalized the new APIs as API Level 25”
Google PlayAbierto a apps compiladas contra la API 25 y, si se quería, con target 25
SDKPlataforma API 25 e imágenes de emulador en el SDK Manager de Android Studio 2.2.2

A diferencia de las previews de Android 7.0, esta no empezó con APIs inestables. El SDK de la API 25 fue final desde la primera build, así que una app compilada contra él no necesitaba recompilarse para la versión final. Google recomendó poner targetSdkVersion en 25 para probar “with compatibility behaviors disabled”.

La preview traía las funciones para desarrolladores que ya tenía el Pixel: accesos directos, iconos redondos y teclados con imágenes. La imagen de emulador Google APIs para la API 25 incluía el Pixel Launcher, para revisar los iconos redondos. Las imágenes de los dispositivos incluían Messenger y Google Keyboard, que ya usaban la API de teclados con imágenes. Con ella salió la support library 25.0.0, que llevó los teclados con imágenes hasta la API 13 y sumó el widget BottomNavigationView.

En un Nexus 5X, 9to5Google encontró también cambios que el Pixel ya tenía para el usuario: un botón más en la fila superior de Quick Settings, con un acceso a Settings al lado, y una pantalla “Moves” con el gesto de doble giro para la cámara. Los iconos redondos no aparecían ahí, ni siquiera con el Pixel Launcher instalado a mano. El 3 de noviembre Google añadió la preview a los dispositivos virtuales de Firebase Test Lab, gratis hasta fin de 2016.

Parte 2 de 4

1 min

Android 7.1 Developer Preview 2: 7.1.1 RC

22 de noviembre de 2016. La última preview fue una release candidate de Android 7.1.1, sumó el Nexus 9 y trajo la support library 25.0.1. Las APIs no cambiaron.

Leer por separado: Android 7.1 Developer Preview 2: 7.1.1 RC

La Developer Preview 2, del 22 de noviembre de 2016, fue la última preview antes de Android 7.1.1. Google la llamó “a release candidate for Android 7.1.1”, con “near-final system behaviors and UI” y las últimas correcciones.

Fecha22 de noviembre de 2016
BuildNPF26F; NPF26H en el Pixel C
DispositivosNexus 5X, Nexus 6P, Nexus 9 y Pixel C
Estado de la APISin cambios: las funciones de la API 25 “already introduced in Developer Preview 1”
HerramientasBuild tools y platform tools nuevas, imágenes de emulador API 25, support library 25.0.1

El Nexus 9 fue el dispositivo nuevo. En octubre Google había dicho que la preview llegaría a “other supported devices” antes de terminar, y Android Police informó que el calendario de la preview de Google incluía el Nexus 6 y el Nexus Player en esta build. Ambos quedaron fuera, aunque recibieron la versión final de 7.1.1. El Pixel y el Pixel XL no estaban en el programa beta y esperaron a la versión final.

Las imágenes del Nexus 9 faltaban al principio y aparecieron más tarde ese día, según Android Police. Google publicó imágenes de fábrica de esta build pero no enlaces OTA, según 9to5Google; los dispositivos inscritos la recibieron igual por OTA. El plan de Google no cambió: 7.1.1 para todos los dispositivos compatibles a principios de diciembre, con el código subido a AOSP al mismo tiempo.

Parte 3 de 4

1 min

Android 7.1.2 Beta 1: una beta de mantenimiento

30 de enero de 2017. Una beta pública de la versión de mantenimiento 7.1.2 para Pixel, Pixel XL, Nexus 5X, Nexus Player y Pixel C. Sin APIs nuevas, y sin el Nexus 6 ni el 9.

Leer por separado: Android 7.1.2 Beta 1: una beta de mantenimiento

El 30 de enero de 2017 Google abrió una beta pública de Android 7.1.2 a través del Android Beta Program. Google describió 7.1.2 como “an incremental maintenance release focused on refinements”: correcciones, optimizaciones y “a small number of enhancements for carriers and users”. Siguió en la API 25, sin APIs nuevas para desarrolladores.

Fecha30 de enero de 2017
BuildNPG05D; NPG05E en el Pixel y el Pixel XL
DispositivosPixel, Pixel XL, Nexus 5X, Nexus Player y Pixel C
EstadoAprobada por el Compatibility Test Suite (CTS), así que apps como Android Pay funcionaban

El Nexus 6P no estaba en esta build. Google dijo que preparaba “an update for Nexus 6P that we expect to release soon”. El Nexus 6 y el Nexus 9 no figuraban ni en la beta ni en la versión final, y 9to5Google señaló que era la primera versión que dejaba fuera al Nexus 6.

Las notas de versión de Google listaban problemas conocidos: Quick Settings podía desaparecer en el Pixel C, el Pixel Launcher podía cerrarse al buscar con un teclado físico conectado, y había bloqueos de la interfaz e inestabilidad del Wi-Fi. 9to5Google informó después que esta build llevó al Nexus 5X el gesto del Pixel de deslizar sobre el sensor de huellas para abrir las notificaciones. Google prometió la versión final “in just a couple of months”.

Parte 4 de 4

1 min

Android 7.1.2 Beta 2: llega el Nexus 6P

Marzo de 2017. La segunda beta de 7.1.2, build NPG47I, llegó también al Nexus 6P, con el parche de seguridad de marzo y el gesto en el sensor de huellas. Google no la anunció.

Leer por separado: Android 7.1.2 Beta 2: llega el Nexus 6P

La segunda beta de Android 7.1.2 llegó sin un post de Google. Su build, NPG47I, aparece en la página de descarga de la beta pública de 7.1.2 de Google para Nexus 5X, Nexus 6P, Pixel C, Nexus Player, Pixel y Pixel XL. La fecha viene de la prensa: 9to5Google informó del despliegue el 20 de marzo de 2017.

Fecha20 de marzo de 2017, según 9to5Google; Google no dio fecha
BuildNPG47I en todos los dispositivos
DispositivosPixel, Pixel XL, Nexus 5X, Nexus 6P, Nexus Player y Pixel C
Parche de seguridadMarzo de 2017, según 9to5Google

Esta vez el Nexus 6P estuvo en la primera tanda. Había recibido la primera beta apenas unas tres semanas antes, señaló 9to5Google. La Beta 2 le dio el gesto del Pixel en el sensor de huellas, en Settings > “Moves”. 9to5Google también vio una línea “Powered by Android” en la pantalla de arranque del Pixel. En el Pixel C mostró el Pixel Launcher, los botones de navegación blancos del Pixel y una nueva cuadrícula de apps recientes, todavía sin terminar: no se podían descartar apps deslizándolas.

Para los desarrolladores no cambió nada. La versión final de 7.1.2 llegó a principios de abril de 2017, y está en la vista general de arriba.

Clasificado en

Citas

50

Referencias externas