Cambios importantes en Android 11
1.1 Compatibilidad
1.1.1 Almacenamiento de particiones
Descripción: El mecanismo de almacenamiento particionado permite que la aplicación tenga un área de almacenamiento dedicada propia en el espacio de almacenamiento externo. Esta área es privada, por lo que esta área es muy adecuada para almacenar los datos privados de los usuarios. Por supuesto, las aplicaciones no pueden acceder a las áreas de almacenamiento dedicadas de otras aplicaciones. Pero si una aplicación necesita hacer que archivos específicos en su propia área de almacenamiento dedicada sean accesibles para otras aplicaciones, puede marcar estos archivos como compartibles configurando el método de intercambio de archivos. El almacenamiento de particiones desempeñará un papel muy bueno en la gestión de archivos, la protección de aplicaciones y la protección de datos de privacidad del usuario.
Esfera de influencia:
1) Aplicaciones cuya targetSdkVersion es 30.
2) targetSdkVersion es 29 y requestLegacyExternalStorage no se establece en true para deshabilitar las aplicaciones de almacenamiento de particiones.
Sugerencias de adaptación:
Si su aplicación aún usa el mecanismo de almacenamiento anterior, ahora debe migrar los datos a un directorio compatible con el almacenamiento particionado.
Dónde acceder al archivo |
Permisos requeridos |
Método de acceso |
Directorio privado de la aplicación |
Acceso sin permiso |
getExternalFilesDir () |
Directorios privados para otras aplicaciones |
Ninguno, pero el archivo de destino debe estar marcado como compartible por su aplicación usando FileProvider |
Obtenido a través de ParcelFileDescriptor y FileDescriptor |
Directorio de archivos multimedia (archivo de audio, foto, video) |
READ_EXTERNAL_STORAGE (solo es necesario para acceder a archivos de otras aplicaciones) |
MediaStore API |
Descargar catálogo (archivos de documentos, etc.) |
Acceso sin permiso |
Marco de acceso de almacenamiento SAF |
Introducción detallada del almacenamiento de particiones: https://developer.android.google.cn/preview/privacy/storage
1.1.2 Autorización única
Descripción: la versión de vista previa para desarrolladores de Android 11 divide los permisos de una manera más granular e introduce el concepto de "autorización única". El usuario puede realizar una única autorización para permitir que la aplicación obtenga acceso temporal a la ubicación, cámara o micrófono del usuario, como se muestra en la figura siguiente. Una vez obtenida esta autorización, la aplicación puede acceder a los datos correspondientes dentro de los siguientes plazos:
1) Cuando la actividad de la aplicación es visible.
2) Un breve período de tiempo después de que la aplicación pasa a segundo plano.
3) Se inicia un servicio en primer plano cuando la actividad es visible, y luego la aplicación se transfiere al fondo, luego la aplicación puede continuar accediendo a los datos relacionados hasta que se detiene el servicio en primer plano.
Alcance de influencia: todas las aplicaciones que se ejecutan en Android 11.
Consejo de adaptación: si su aplicación ha seguido las mejores prácticas relacionadas con los permisos (https://developer.android.google.com/privacy/best-practices), puede admitir la autorización única sin cambiar la aplicación.
Figura: La ventana de solicitud de permiso en la aplicación proporciona opciones de permiso por única vez
1.1.3 Cómo obtener la autoridad de acceso a la información de ubicación de fondo
Nota: Cuando una aplicación solicita permisos de acceso a la información de ubicación en segundo plano, la ventana emergente que permite a los usuarios otorgar permisos ya no ofrecerá la opción de "Permitir siempre". Esta opción solo existe en la página de concesión de permisos de la aplicación en la configuración, lo que puede reducirla hasta cierto punto. Se produce la situación de "puerta trasera" de la aplicación, como se muestra en la siguiente figura, y la solicitud del permiso de ubicación en segundo plano requiere que la aplicación tenga el permiso de ubicación en primer plano.
Área afectada: todas las aplicaciones que se ejecutan en la versión de vista previa para desarrolladores de Android 11
Sugerencia de adaptación: si su aplicación determina que necesita obtener el permiso de acceso a la información de ubicación en segundo plano, ahora debe dividirse en dos pasos, porque ya no es posible solicitar directamente el permiso de acceso a la información de ubicación en segundo plano sin el permiso de acceso a la información de ubicación en primer plano.
1) Primero solicite el permiso de acceso a la información de ubicación de la recepción
2) Luego solicite el permiso de acceso a la información de ubicación en segundo plano, que es el llamado "siempre permitido", y el usuario será guiado a la configuración para otorgar
Figura: Al solicitar el permiso de acceso a la información de ubicación en segundo plano, la ventana emergente de solicitud de permiso en la aplicación ya no contiene "Permitir siempre"
Figura: La concesión de permisos de acceso a la información de ubicación en segundo plano solo se puede realizar en la configuración
1.1.4 Visibilidad del paquete
Descripción: la versión de vista previa para desarrolladores de Android 11 cambia la forma en que las aplicaciones consultan otras aplicaciones instaladas en el mismo dispositivo y cómo interactúan con ellas.
Rango afectado: aplicaciones cuyo targetSdkVersion es 30
Sugerencia de adaptación: la aplicación debe agregar el elemento <queries> al archivo de manifiesto de la aplicación para que el sistema sepa qué otras aplicaciones instaladas se le deben mostrar. Si su aplicación realiza interacciones comunes con otras aplicaciones, no es necesario que cambie la aplicación. Para obtener más información sobre la visibilidad de los paquetes de vista previa para desarrolladores de Android 11, consulte
https://developer.android.google.cn/preview/privacy/package-visibility。
1.1.5 Nuevos tipos de servicios en primer plano
Descripción: Android 11 cambia la forma en que el servicio de primer plano accede a los datos relacionados con la cámara y el micrófono para proteger aún más la privacidad del usuario.
Rango afectado: aplicaciones cuyo targetSdkVersion es 30
Sugerencia de adaptación: debe agregar nuevos tipos de cámara y micrófono en el atributo foregroundServiceType de la declaración de servicio en primer plano, de lo contrario no se obtendrán los datos de la cámara y el micrófono.
1.1.6 El uso del cuadro de mensaje de vista personalizada está restringido
Nota: El sistema bloqueará el cuadro de mensaje de vista personalizada publicado desde el fondo. Este tipo de cuadro de mensaje usa setView () para definir un diseño para sí mismo, como se muestra en la figura. Por consideraciones de seguridad y experiencia del usuario, el sistema bloquea los cuadros de mensajes de vista personalizada iniciados desde el fondo. Pero el cuadro de mensaje de vista personalizada publicado desde el primer plano aún puede tener efecto normalmente, y el cuadro de mensaje de texto creado con Toast.makeText () no se ve afectado, y puede tener efecto normalmente cuando se publica en primer plano y en segundo plano.
Rango afectado: aplicaciones cuyo targetSdkVersion es 30
Sugerencia de adaptación: se recomienda utilizar el control de solicitud de información (Snackbar) en su lugar.
Figura: Ejemplo de un cuadro de mensaje de vista personalizada publicado desde el fondo en Android Q
1.1.7 Actualización de la lista de interfaces que no pertenecen al SDK
Nota: Android 11 tiene una gran cantidad de actualizaciones en la lista de interfaces que no pertenecen al SDK. Para actualizar la lista de interfaces, consulte https://developer.android.google.cn/preview/non-sdk-11. Estos cambios pueden traer diferentes grados de problemas de compatibilidad a algunas aplicaciones que dependen de interfaces que no son SDK, especialmente aplicaciones que dependen de la interfaz de lista de grises de Android Q, porque algunas de estas interfaces se han incluido en la lista negra de Android 11. .
Alcance de influencia: todas las aplicaciones que se ejecutan en Android 11.
Sugerencia de adaptación: si su aplicación se basa en la interfaz restringida de Android 11, debe comenzar a planificar la actualización del SDK y migrar a una alternativa al SDK.
1.2 Nueva experiencia y métodos interactivos
Cada vez que se actualiza el sistema Android, casi traerá algunos cambios nuevos en la experiencia interactiva, y esta vez Android 11 no es una excepción.
P.ej:
1.2.1 Burbuja de chat
El método de conversación de las burbujas de chat se lanzó oficialmente y ya no es una función experimental. Esta función permite minimizar la ventana de conversación a una o más burbujas flotantes, y las burbujas se pueden expandir en páginas en modo ventana pequeña;
Figura: Notificación de mensaje en forma de burbuja
Figura: La burbuja se expande en una pequeña ventana de sesión
1.2.2 Animación de transición del teclado del nuevo método de entrada
Con la ayuda de dos nuevas interfaces API: Insets Animation Listener y WindowInsets Animation Controller, Android 11 trae una nueva transición al teclado del método de entrada con el que tenemos que lidiar todos los días. Animación, estas APIs te permiten ajustar más fácilmente el contenido de la aplicación, manteniéndose sincronizado con la aparición y desaparición del IME y otros elementos como la barra de estado y navegación. Esta es una muestra proporcionada por Google https://github.com/android/user-interface-samples/tree/master/WindowInsetsAnimation. En comparación con la animación que aparece directamente desde la parte inferior en la versión principal actual, la animación del teclado del nuevo método de entrada puede cambiar cuadro por cuadro siguiendo el movimiento real de nuestros dedos, presentando efectos de deslizamiento de entrada y salida más suaves y naturales, y así sucesivamente.
1.3 Nuevo soporte a nivel de hardware
1.3.1 Android 11 admitirá mejor varias pantallas de teléfonos móviles para mejorar la experiencia del usuario
● Pantalla de cascada: el área de "cascada" de la pantalla de cascada hará que el contenido del borde muestre distorsión y toque accidental. En Android 11, los desarrolladores ya pueden controlar la interacción del área de "cascada". El método DisplayCutout.getSafeInset ... () existente ahora devolverá un área de borde segura que puede evitar el área de la cascada y los golpes.
● Pantalla de alta actualización: Android 11 ha agregado una nueva API-Surface.setFrameRate () para permitir que las aplicaciones establezcan su frecuencia de actualización preferida, a fin de aprovechar la pantalla de alta actualización y obtener una mejor experiencia de usuario, al mismo tiempo que ayuda al sistema a funcionar. La conmutación inteligente durante la aplicación resuelve el problema de consumo de energía que puede ser causado por una alta frecuencia de actualización del nivel del sistema.
1.3.2 Android 11 admite el uso simultáneo de varias cámaras
Los desarrolladores pueden usar la nueva API para consultar la compatibilidad con el uso de varias cámaras al mismo tiempo (incluidas la cámara frontal y la cámara trasera). Si necesita comprobar el estado de compatibilidad en el dispositivo que ejecuta la aplicación, puede utilizar los dos métodos siguientes. El método getConcurrentCameraIds () puede devolver la combinación de ID de cámara, y isConcurrentSessionConfigurationSupported () puede consultar si el dispositivo de cámara puede admitir simultáneamente la configuración de sesión correspondiente.
1.4 Soporte 5G mejorado
Android 11 ofrece "medición dinámica" y "estimación de ancho de banda" para 5G, para utilizar mejor las características de alto ancho de banda y baja latencia de 5G. Flexible para diferentes escenarios y diferentes condiciones de red, calidad de medios de transmisión adaptativa.
1.5 Otras funciones
1.5.1 Instalación incremental de APK de ADB
Puede llevar mucho tiempo instalar un APK grande en el dispositivo. La instalación incremental de APK de ADB puede instalar suficientes APK para iniciar la aplicación mientras transmite los datos restantes en segundo plano, lo que acelera el proceso. Si el dispositivo admite esta función y ha instalado las últimas herramientas de la plataforma SDK, el comando adb install utilizará automáticamente esta función. O ejecute este comando adb install –incremental para usar esta función. Antes de ejecutar la instalación incremental de APK de ADB, primero debe firmar el APK y crear un archivo de esquema de firma de APK v4. Y el archivo de firma v4 debe colocarse junto al APK para que esta función funcione correctamente.
1.5.2 Motivo de salida del proceso de solicitud
Android 11 introdujo el método ActivityManager.getHistoricalProcessSalirReasons () para informar el motivo de la finalización de cualquier proceso recientemente. Las aplicaciones pueden usar este método para recopilar información de diagnóstico de fallas, como la terminación del proceso debido a ANR, problemas de memoria u otras razones. Además, también puede utilizar el nuevo método setProcessStateSummary () para almacenar información de estado personalizada para un análisis posterior.
1.5.3 Cargador de recursos dinámico
Android 11 presenta dos nuevas clases de API, ResourcesLoader y ResourcesProvider, para admitir los métodos de búsqueda y carga de recursos en expansión dinámica. Uno de los principales casos de uso es permitir que las aplicaciones accedan a recursos en directorios específicos fuera del APK.
Link de referencia
La actualización del mecanismo de almacenamiento en Android 11: https://developer.android.google.cn/preview/privacy/storage
Siga las mejores prácticas con respecto a los permisos: https://developer.android.google.com/privacy/best-practices
Visibilidad del paquete en Android 11: https://developer.android.google.cn/preview/privacy/package-visibility
Actualización del cuadro de mensaje en Android 11: g.co/dev/toast
Lista de interfaces que no pertenecen al SDK actualizada: https://developer.android.google.cn/preview/non-sdk-11
Ejemplo de animación de transición de teclado de nuevo método de entrada: https://github.com/android/user-interface-samples/tree/master/WindowInsetsAnimation
Cambios de privacidad significativos en Android 11: https://developer.android.google.cn/preview/privacy
Descripción general de las nuevas funciones y API de Android 11: https://developer.android.google.cn/preview/features