Notas de versão do Android 10

Esta página resume os principais recursos da versão Android 10 e fornece links para informações adicionais. Esses resumos de recursos são organizados de acordo com a localização da documentação do recurso neste site.

Construir

java_sdk_library

O Android 10 apresenta java_sdk_library , uma nova regra de compilação para corrigir problemas de compatibilidade para bibliotecas Java compartilhadas. Os fabricantes de dispositivos podem usar esse mecanismo para suas próprias bibliotecas Java compartilhadas para manter a compatibilidade com versões anteriores de suas APIs.

Arquitetura

Componentes modulares do sistema

O Android 10 modulariza alguns componentes do sistema Android e permite que eles sejam atualizados fora do ciclo normal de lançamento do Android. Alguns módulos incluem:

Camada de abstração de hardware (HAL)

O Android 10 adiciona suporte para que HALs sejam desligados automaticamente quando não tiverem clientes.

Núcleo

ABI

O Android 10 inclui suporte para novos utilitários de monitoramento de ABI para ajudar a comparar, rastrear e atenuar alterações de ABI do kernel que afetam a compatibilidade com os módulos do kernel.

O Android 10 também apresenta um verificador de uso de ABI baseado em símbolos. O verificador pode detectar binários pré-construídos desatualizados no momento da construção, para que os desenvolvedores de bibliotecas compartilhadas possam saber quais binários pré-construídos podem ser quebrados por sua alteração e quais binários pré-construídos devem ser reconstruídos.

Daemon Android Live-Lock

O Android 10 inclui o Android Live-Lock Daemon (llkd) , que foi projetado para detectar e mitigar deadlocks do kernel.

vDSO32 em ARM64

O Android 10 suporta o uso de vDSO32 em kernels de 64 bits , o que proporciona um aumento de 0,4% na vida útil da bateria e outras melhorias de desempenho.

entradas fstab para partições montadas anteriormente

O Android 10 exige que os dispositivos especifiquem entradas fstab para partições montadas anteriormente usando um arquivo fstab no ramdisk do primeiro estágio.

HIDL

Descarregar BroadcastQueue

O Android 10 inclui um novo descarregamento BroadcastQueue para as filas existentes em segundo plano e primeiro plano . A fila de transferência tem a mesma prioridade e comportamento de tempo limite que a fila em segundo plano. Para evitar o bloqueio da fila em segundo plano, onde podem ocorrer transmissões mais interessantes ou visíveis ao usuário, a fila de descarregamento lida com a transmissão BOOT_COMPLETED , que muitos aplicativos ouvem e pode levar muito tempo para ser concluída. A fila de descarregamento atualmente lida apenas com a transmissão BOOT_COMPLETED , mas pode potencialmente lidar com outras transmissões longas.

Serviço SystemSuspend

O Android 10 substitui o thread em libsuspend responsável por iniciar a suspensão do sistema pelo serviço HIDL SystemSuspend . Esta implementação oferece funcionalidade equivalente às versões anteriores, ao mesmo tempo que aproveita os benefícios da infraestrutura Android HIDL.

união_segura em HIDL

O Android 10 introduz safe_union , um tipo de união explicitamente marcado, em HIDL.

Configuração

ConfigStoreHAL

O Android 10 descontinua o HAL do ConfigStore devido ao alto consumo de memória e ao uso difícil, e substitui o HAL pelas propriedades do sistema .

API de esquema de arquivo de configuração

A plataforma Android contém um grande número de arquivos XML para armazenar dados de configuração. Muitos dos arquivos XML estão na partição vendor , mas são lidos na partição system . Nesse caso, o esquema do arquivo XML serve como interface entre as duas partições e, portanto, o esquema deve ser especificado explicitamente e evoluir de maneira compatível com versões anteriores. Antes do Android 10, a plataforma não fornecia mecanismos para exigir a especificação e o uso do esquema XML ou para evitar alterações incompatíveis no esquema. O Android 10 fornece esse mecanismo, chamado Config File Schema API .

Propriedades do sistema como APIs

As propriedades do sistema acessadas através de partições são esquematizadas em arquivos de descrição sysprop e APIs para acessar propriedades são geradas como funções concretas para C++ e classes para Java.

Objeto de interface do fornecedor (VINTF)

VINTF

As alterações no VINTF no Android 10 incluem:

  • Descontinuando tags de versão AVB
  • Adicionando informações do kernel em pacotes OTA
  • Construindo manifestos ODM oficialmente
  • Adicionando uma matriz de compatibilidade de produto
  • Associando uma entrada de manifesto a um módulo HAL no sistema de compilação

Carregador de inicialização

Ramdisk

No Android 10, o sistema de arquivos raiz não está mais incluído em ramdisk.img e, em vez disso, é mesclado em system.img .

Construir partições ODM

O Android 10 inclui suporte para construção de partições odm usando o sistema de compilação Android. Você pode usar uma partição /odm separada para personalizações, o que permite usar uma única imagem de fornecedor para vários SKUs de hardware. Isso permite que os fabricantes de design original (ODMs) personalizem pacotes de suporte de placa (BSPs) de fornecedores de sistema no chip (SoC) para seus dispositivos específicos (suas placas). Eles podem implementar módulos de kernel para componentes específicos da placa, daemons específicos da placa ou seus próprios recursos em camadas de abstração de hardware (HALs). Eles também podem substituir ou personalizar componentes do SoC.

Controle de versão do cabeçalho da imagem de inicialização

O Android 10 atualiza o cabeçalho da imagem de inicialização para a versão 2, que inclui uma seção para armazenar a imagem do blob da árvore do dispositivo (DTB). Os testes VTS do Android 10 verificam se todos os dispositivos iniciados com Android 10 usam o cabeçalho da imagem de inicialização versão 2 e incluem uma imagem DTB válida como parte das imagens de inicialização/recuperação.

Imagens de recuperação para dispositivos não A/B

No Android 9 e versões posteriores, a imagem de recuperação de um dispositivo deve conter informações da imagem de sobreposição . Os fabricantes de dispositivos podem usar DeviceTree ou Advanced Configuration and Power Interface (ACPI) para descrever todos os dispositivos não detectáveis. O Android 10 e versões posteriores incluem suporte para arquiteturas que usam ACPI em vez de blob DeviceTree para sobreposição (DTBO).

AIDL estável

O Android 10 adiciona suporte para Android Interface Definition Language (AIDL) estável, uma nova maneira de acompanhar a interface de programa de aplicativo (API)/interface binária de aplicativo (ABI) fornecida pelas interfaces AIDL.

Mova o fastboot para o espaço do usuário

O Android 10 adiciona suporte para partições redimensionáveis, realocando a implementação do fastboot do bootloader para o espaço do usuário.

Mostrar

Reprodução de vídeo HDR

O Android 10 oferece suporte à reprodução de HDR10, VP9 e HDR10+ .

Classificação de texto

A classificação de texto usa técnicas de aprendizado de máquina para ajudar os desenvolvedores a classificar o texto. O Android 10 introduz dois métodos na API TextClassifier: suggestConversationActions e detectLanguage . O método suggestConversationActions gera respostas e ações sugeridas de uma determinada conversa e o método detectLanguage detecta o idioma do texto.

Suporte para renderização de fonte Zawgyi

Zawgyi é a fonte mais popular em Mianmar. O Android 9 e versões anteriores não suportavam a renderização do Zawgyi porque não são compatíveis com Unicode . O Android 10 resolve isso incluindo uma fonte Unicode capaz de renderizar Unicode birmanês e Zawgyi juntos. Nenhum trabalho de implementação é necessário para oferecer suporte à renderização de fonte Zawgyi em dispositivos lançados com Android 10. Se seus dispositivos tiverem uma implementação personalizada para oferecer suporte a Zawgyi, você poderá:

  • Reverta essas alterações e use o método compatível com a plataforma.
  • Mantenha a fonte Zawgyi comum em seu sistema e use o código de localidade my-qaag em seu fonts.xml . Para obter mais informações, consulte as notas de versão do Unicode CLDR no Zawgyi (Qaag) .

Limitações para ocultar ícones de aplicativos

O Android 10 limita a capacidade dos aplicativos de ocultar seus ícones de inicialização. Se um aplicativo não tiver uma atividade de inicialização habilitada, o sistema exibirá uma atividade sintetizada no inicializador; essa atividade sintetizada representa a página de detalhes do aplicativo nas configurações do sistema.

Para obter mais informações sobre a lógica usada para mostrar ícones de aplicativos, incluindo os tipos de aplicativos cujos ícones de aplicativos não são mostrados, consulte a documentação de getActivityList() na referência da API.

Configurações

Para melhorar a acessibilidade, o Android 10 inclui configurações de tempo limite personalizáveis ​​pelo usuário. As alterações na API e nas configurações vêm com o Android 10. Se você personalizar suas configurações, certifique-se de que esse recurso seja compatível. Se você tiver elementos de IU com limite de tempo limite em seu dispositivo, use a API de tempo limite neles. Para obter mais informações, consulte as diretrizes de acessibilidade para desenvolvedores Android .

Compatibilidade

Documento de definição de compatibilidade do Android (CDD)

O documento de definição de compatibilidade do Android 10 repete versões anteriores com atualizações para novos recursos e alterações nos requisitos de funcionalidades lançadas anteriormente.

Testes

Conjunto de testes de compatibilidade (CTS)

O Android CTS tem uma página separada de notas de lançamento que lista muitas mudanças importantes para o Android 10.

Downloads de CTS

Os pacotes CTS com suporte para Android 10 estão disponíveis na página de downloads do CTS . O código-fonte dos testes incluídos pode ser sincronizado com a tag android-cts-10_r1 na árvore de código aberto.

Calço CTS APEX

O Android 10 introduz um pacote chamado CtsShimApex , que deve ser pré-instalado em um dispositivo para escrever testes CTS para gerenciamento APEX.

Modo de teste de chicote

O modo de teste CTS ajuda os desenvolvedores a automatizar os testes para um dispositivo ou uma frota de dispositivos.

Modo de aplicativos instantâneos

A partir do Android 10, o CTS é executado no modo Instant Apps , o que significa instalar o APK de teste como um Instant App e executar os testes.

Além do modo CTS para Instant Apps, o Android 10 inclui o CTS Verifier para Instant Apps

Teste de áudio profissional CTS Verifier

O Android 10 adiciona um teste CTS Verifier para conformidade com Pro Audio .

Testes MIDI do verificador CTS

No Android 10, o teste CTS Verifier MIDI testa a funcionalidade MIDI com interfaces USB MIDI, interfaces Bluetooth MIDI e um caminho de dispositivo MIDI virtual.

Interpretação do teste CTS

O Android 10 atualiza o mecanismo de interpretação dos resultados do CTS .

Conjunto de testes de fornecedores (VTS)

Teste VTS com depuração de ramdisk

No Android 10, a imagem genérica do sistema (GSI) usada para executar testes de conformidade CTS-on-GSI/VTS muda de userdebug para tipo de compilação do usuário, porque o GSI tem assinatura de versão. No entanto, o comando adb root que concede permissões root ao host para o dispositivo Android em teste não está disponível em uma compilação de usuário. Isso é um problema porque o VTS requer adb root para ser executado.

O ramdisk de depuração é introduzido para tornar possível adb root , se o dispositivo estiver desbloqueado. Isso simplifica o fluxo de teste reutilizando o mesmo build do usuário system.img (GSI ou system.img do OEM).

Validação do compositor de hardware

O Android 10 adiciona uma nova classe de teste VTS para validação do Hardware Composer por meio da interface readback em IComposerClient.hal . Se os fornecedores não implementarem readback , os testes serão aprovados automaticamente.

Depuração

Carregar bibliotecas compartilhadas com diferentes carregadores de classes

No Android 9 e versões anteriores, os aplicativos carregavam suas bibliotecas compartilhadas Java vinculadas no carregador de classes do aplicativo. No Android 10, a estrutura usa um carregador de classes diferente do carregador de classes do aplicativo para carregar bibliotecas compartilhadas Java vinculadas por uses-library ou uses-static-library .

Em geral, os aplicativos não devem depender do uso de um carregador de classes específico, portanto, essa alteração não deve interromper o comportamento do aplicativo. No entanto, se um aplicativo depende do uso de um único carregador de classes, esse comportamento é interrompido. Além disso, a visibilidade privada do pacote de classes no mesmo pacote ainda é suportada, mas não é suportada em bibliotecas compartilhadas.

Os fabricantes de dispositivos podem encontrar problemas de compatibilidade de aplicativos ao testar seus dispositivos com Android 10.

Recursos de segurança

Para obter uma lista mais completa de melhorias relacionadas apenas à segurança e privacidade, consulte a página de melhorias de segurança e privacidade do Android 10 .

Autenticação facial

A autenticação facial permite que os usuários desbloqueiem seus dispositivos simplesmente olhando para a frente do dispositivo. O Android 10 adiciona suporte para uma nova pilha de autenticação facial que pode processar quadros de câmera com segurança, preservando a segurança e a privacidade durante a autenticação facial em hardware compatível. O Android 10 também oferece uma maneira fácil de implementações compatíveis com segurança permitirem a integração de aplicativos para transações como serviços bancários on-line ou outros serviços.

Acesso estendido

Os agentes de confiança, o mecanismo subjacente usado por mecanismos de autenticação terciários, como o Smart Lock, só podem estender o desbloqueio no Android 10. Os agentes de confiança não podem mais desbloquear um dispositivo bloqueado e só podem manter um dispositivo desbloqueado por no máximo quatro horas.

Criptografia

OEMCrypto

O Android 10 usa a API OEMCrypto versão 15.

Teste

LimitesSanitizador

O Android 10 implanta BoundsSanitizer (BoundSan) em Bluetooth e codecs. BoundSan usa o desinfetante de limites do UBSan. Essa mitigação é habilitada em nível por módulo. Ajuda a manter componentes críticos do Android seguros e não deve ser desativado. BoundSan está habilitado nos seguintes codecs:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec
  • libaac
  • libxaac

Sanitização de estouro de número inteiro

O Android 10 permite a Sanitização de Overflow Inteiro (IntSan) em codecs de software. Certifique-se de que o desempenho de reprodução seja aceitável para quaisquer codecs que não sejam suportados no hardware do dispositivo. O IntSan está habilitado nos seguintes codecs:

  • libFLAC
  • libavcdec
  • libavcenc
  • libhevcdec
  • libmpeg2
  • libopus
  • libvpx
  • libspeexresampler
  • libvorbisidec

Memória somente de execução

Por padrão, as seções de código executável para binários do sistema AArch64 são marcadas como somente execução (não legível) como uma mitigação de proteção contra ataques de reutilização de código just-in-time. O código que mistura dados e código e o código que inspeciona propositalmente essas seções (sem primeiro remapear os segmentos de memória como legíveis) não funcionam mais. Os aplicativos com um SDK de destino do Android 10 (nível de API 29 ou superior) serão afetados se o aplicativo tentar ler seções de código de bibliotecas de sistema habilitadas para memória somente de execução (XOM) na memória sem primeiro marcar a seção como legível.

Scudo

Scudo é um alocador de memória dinâmico em modo de usuário projetado para ser mais resiliente contra vulnerabilidades relacionadas ao heap. Ele fornece as primitivas de alocação e desalocação C padrão, bem como as primitivas C++.

ShadowCallStack

ShadowCallStack (SCS) é um modo de instrumentação LLVM que protege contra sobregravações de endereço de retorno (como estouros de buffer de pilha), salvando o endereço de retorno de uma função em uma instância ShadowCallStack alocada separadamente no prólogo de função de funções não-folha e carregando o endereço de retorno da instância ShadowCallStack em o epílogo da função.

Áudio

Áudio HAL

O Android 10 inclui os seguintes novos recursos para áudio HAL .

  • AudioSource
  • AudioFormat
  • AudioChannelMask

Requisitos adicionais são adicionados para HAL de áudio e implementação de subsistema.

Efeitos de pré-processamento

O Android fornece efeitos de pré-processamento , como cancelamento de eco acústico, controle automático de ganho e supressão de ruído. O Android 10 inclui novos requisitos para captura com VOICE_COMMUNICATION .

Gerente de política de áudio

O Android 10 inclui uma refatoração significativa do gerenciador de políticas de áudio para fornecer mais flexibilidade para dar suporte a casos de uso automotivos complexos.

Áudio de alta resolução

O Android 10 inclui as seguintes melhorias para áudio de alta resolução .

  • Suporte flutuante
  • Suporte de frequência de 192 KHz
  • Suporte de oito canais
  • Inclusão de informações de tempo

Captura simultânea

O Android 10 melhora a experiência do usuário de captura simultânea , que exige que mais de uma captura de áudio ativa aconteça simultaneamente.

Captura de reprodução de áudio

O Android 10 contém uma nova API chamada AudioPlaybackCapture , que dá aos aplicativos a capacidade de copiar o áudio reproduzido por outros aplicativos. Este recurso é semelhante à captura de tela, mas para áudio. O principal caso de uso é permitir que aplicativos de streaming capturem o áudio reproduzido pelos jogos.

A API de captura não afeta a latência do aplicativo cujo áudio está sendo capturado.

MIDI

O Android 10 facilita a portabilidade de aplicativos de áudio profissionais usando MIDI para a plataforma Android usando a API AMidi NDK .

Câmera

Para obter um resumo das alterações na API da câmera, no HAL da câmera e no módulo da câmera introduzidas no Android 10, consulte Atualizações da câmera do Android 10 .

Melhorias na privacidade da estrutura da câmera

O Android 10 introduz melhorias de privacidade na estrutura da câmera. Para evitar a exposição de informações de câmera estática potencialmente confidenciais em CameraCharacteristics sem o consentimento do usuário, os aplicativos devem obter a permissão CAMERA para recuperar metadados estáticos com uma tag sensível à privacidade usando o método getCameraCharacteristics .

Para obter uma lista das chaves características da câmera que requerem a permissão CAMERA , chame o método getKeysNeedingPermission .

Consulta de reconfiguração de sessão

O Android 10 adiciona um recurso de consulta de reconfiguração de sessão , que permite melhorar o desempenho por meio de mais controle sobre a lógica interna de reconfiguração dos parâmetros da sessão.

APIs de gerenciamento de buffer HAL3 da câmera

O Android 10 apresenta APIs opcionais de gerenciamento de buffer HAL3 de câmera que permitem implementar lógica de gerenciamento de buffer para obter diferentes compensações de memória e capturar latência em implementações HAL de câmera.

Interruptor de câmera física dinâmica HAL da câmera

O Android 10 introduz uma tag de metadados dinâmicos, ANDROID_LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID , que indica a câmera física subjacente ativa de um dispositivo de câmera lógica. Para obter mais informações, consulte Suporte para múltiplas câmeras .

Suporte para ocultar câmeras físicas

No Android 10, a câmera HAL pode reduzir o número de câmeras físicas que podem ser abertas diretamente por um aplicativo. Para obter mais detalhes, consulte Suporte para múltiplas câmeras .

API Camera2 VNDK

No Android 10, os módulos do fornecedor podem acessar e controlar dispositivos de câmera por meio de duas novas interfaces HIDL padrão, android.frameworks.cameraservice.service@2.0 e android.frameworks.cameraservice.device@2.0 . Para tornar o uso das interfaces HIDL mais conveniente, o Android 10 também apresenta uma biblioteca disponível para fornecedores, libcamera2_vendor . Esta biblioteca é semelhante à biblioteca Camera NDK , com algumas pequenas modificações.

Configurações de fluxo

O Android 10 adiciona recursos que permitem aos fornecedores de câmeras anunciar streams de câmeras recomendados para clientes de câmeras e oferecer suporte a uma API para consultar combinações de streams .

Requisitos de combinação de fluxo de câmera

Os dispositivos que executam o Android 10 não precisam mais oferecer suporte a combinações de stream com streams de subcâmeras físicas. No entanto, os dispositivos que executam o Android 10 com a versão 3.5 do dispositivo HAL de câmera devem ser compatíveis com isStreamCombinationSupported() para permitir que os aplicativos consultem se uma combinação de stream contendo streams físicos é compatível.

Para obter mais informações, consulte Suporte para múltiplas câmeras .

Imagem HEIF

O Android 10 oferece suporte nativo de câmera para imagens em formato de arquivo de imagem de alta eficiência (HEIF) , que oferecem qualidade de imagem aprimorada e tamanhos menores em relação às imagens JPEG. Os dispositivos devem ter um codificador HEIC ou HEVC para suportar imagens HEIF.

Câmeras monocromáticas

O Android 10 oferece suporte adicional para o formato de stream Y8, metadados estáticos de matriz de filtro de cores monocromático e infravermelho próximo (NIR) e funções DngCreator para câmeras monocromáticas .

Conectividade

Chamadas e mensagens

Números de emergência e chamadas de emergência

O Android 10 oferece suporte aprimorado para chamadas de emergência . Em caso de emergência, os dispositivos com suporte para IRadio HAL v1.4 podem iniciar uma chamada de emergência usando números de emergência recuperados de uma fonte, como um cartão SIM, o sinal de rede ou o banco de dados do Android. Os números podem ser categorizados com base em categorias de serviços de emergência, como polícia, bombeiros e ambulância.

APIs de chamadas em grupo

As APIs de chamada de grupo são uma extensão das APIs eMBMS adicionadas no Android 9. As novas APIs definem um padrão para aplicativos ingressarem e transmitirem chamadas de grupo de transmissão celular, interagindo com pacotes de middleware eMBMS. As chamadas em grupo requerem suporte do fornecedor do chipset, do fornecedor do middleware e da operadora de celular para funcionar corretamente. A documentação do desenvolvedor está localizada em developer.google.com .

Capacidades remotas de SIM

O Android 10 introduz recursos remotos de SIM que permitem que aplicativos de mensagens em um dispositivo host Android enviem mensagens SMS por meio de telefones usando mecanismos como Bluetooth. Para obter mais informações, consulte a documentação de referência do método getSubscriptionType e da constante SUBSCRIPTION_TYPE_REMOTE_SIM .

Vários eSIMs

No Android 10, a classe EuiccManager oferece suporte a dispositivos com vários SIMs incorporados (eSIMs) ou eUICCs.

Atualizações do eSIM

Para dispositivos com Android 10 compatíveis com eSIMs, uma matriz de ID de slot eUICC não removível deve ser definida. Os dispositivos também devem suportar IRadio HAL v1.4 e IRadioConfig HAL v1.2. Para obter mais informações, consulte Implementação de requisitos de eSIM e HAL .

5G não autônomo (NSA)

"Android 10 adiciona suporte para 5G não autônomo (NSA) ." 5G NSA é uma solução para redes 5G onde a rede é suportada por uma infraestrutura 4G existente. No Android 10, os dispositivos podem exibir um ícone 5G na barra de status quando um dispositivo se conecta a uma rede 5G.

Sugestão de conta de telefone

O Android 10 apresenta o serviço de sugestão de conta de telefone , que permite que sugestões de contas de telefone sejam mostradas aos usuários ao fazer uma chamada.

Operadora

Migrar configurações de rede móvel

O Android 10 reprojetou o código da IU das configurações da rede móvel e o moveu da pilha Telefonia para a pilha Configurações. Para oferecer suporte ao código migrado, altere os seguintes valores de configuração de configurações de rede móvel de recursos Android para recursos CarrierConfig :

config_world_mode -> CarrierConfigManager#KEY_WORLD_MODE_ENABLED_BOOL

config_support_tdscdma -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_BOOL

config_support_tdscdma_roaming_on_networks -> CarrierConfigManager#KEY_SUPPORT_TDSCDMA_ROAMING_NETWORKS_STRING_ARRAY

config_enabled_lte -> CarrierConfigManager#KEY_LTE_ENABLED_BOOL

Identificadores de dispositivo

Identificadores de dispositivos persistentes (IMEI/MEID, IMSI e serial de compilação) são protegidos por uma permissão privilegiada com acesso também concedido aos aplicativos do proprietário do dispositivo e do perfil. Como os números de série IMSI e SIM são fornecidos pela operadora, o acesso a esses identificadores é concedido a pacotes com privilégios de operadora.

Wi-fi

Seleção de rede

O Android avalia continuamente a qualidade da rede conectada e avalia a qualidade das redes disponíveis. O Android 10 atualizou algoritmos e procedimentos para selecionar e alternar entre redes Wi-Fi .

Verificação de descarregamento de rede preferencial de Wi-Fi

O Android 10 introduz um método de API opcional chamado setDeviceMobilityState() no WifiManager que aumenta o intervalo entre verificações de descarregamento de rede preferencial (PNO) quando o dispositivo está parado para reduzir o uso de energia.

Wi-Fi da operadora

No Android 10, os dispositivos com o recurso Wi-Fi da operadora se conectam automaticamente às redes Wi-Fi da operadora configuradas (redes com certificados de chave pública).

Conexão fácil Wi-Fi

No Android 10, os dispositivos podem usar o Wi-Fi Easy Connect , que usa o protocolo de provisionamento de dispositivos (DPP) introduzido pela Wi-Fi Alliance (WFA), para provisionar e configurar dispositivos Wi-Fi.

Modo Wi-Fi de baixa latência

O Android 10 introduz um modo Wi-Fi de baixa latência , que configura o chip Wi-Fi para reduzir a latência.

Servidor DHCP atualizado

Como parte da formação de um guarda-chuva de serviço "Servidor IP", dnsmasq está sendo excluído. O Android 10 substitui o uso funcional do servidor DHCPv4 por um componente separado, escrito principalmente em Java para melhor integração com o plano de controle da estrutura Java. Isso melhora a segurança e a capacidade de atualização do servidor DHCP. Para obter mais detalhes, consulte packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java .

Nenhuma ação é necessária para implementar essa mudança: todos os dispositivos lançados e atualizados para o Android 10 usam DhcpServer por padrão. Se você tiver personalizações no servidor DHCP, poderá reverter para o comportamento do Android 9 definindo a configuração global tether_enable_legacy_dhcp_server=1 . O novo DhcpServer está incluído no módulo de componentes de rede, portanto, qualquer personalização da funcionalidade do servidor DHCP deve ser atualizada.

WPA3 e Wi-Fi aprimorado aberto

O Android 10 adiciona suporte para os padrões de segurança Wi-Fi Protected Access 3 (WPA3) e Wi-Fi Enhanced Open para fornecer melhor privacidade e robustez contra ataques conhecidos.

Wi-Fi direto

O Wi-Fi Direct , também conhecido como Wi-Fi P2P, permite que dispositivos compatíveis descubram e se conectem uns aos outros diretamente usando o protocolo Wi-Fi Direct, sem acesso à Internet ou à rede celular.

Melhorias na randomização MAC

A partir do Android 10, a randomização MAC é habilitada por padrão para modo cliente, SoftAp e Wi-Fi Direct. Os dispositivos devem fornecer uma opção para ativar ou desativar a randomização MAC para cada SSID na UI do sistema.

Passagem R2

O Android 10 apresenta suporte para recursos do Passpoint R2 . O Passpoint R2 implementa inscrição on-line (OSU), um método padrão para provisionar novos perfis do Passpoint. O Android 10 oferece suporte ao provisionamento de perfis EAP-TTLS usando SOAP-XML.

NFC

NFC seguro

Secure NFC permite que a emulação de cartão NFC fora do host seja habilitada somente quando a tela do dispositivo estiver desbloqueada. A implementação desse recurso oferece aos usuários a opção de ativar o Secure NFC para melhorar a segurança.

Android Beam obsoleto

No Android 10, o Android Beam não é mais necessário e as interfaces e métodos a seguir foram descontinuados.

Interfaces:

Métodos:

Para usar o Android Beam, informe a constante de recurso android.sofware.nfc.beam .

Gráficos

ASuperfícieControl

O Android 10 adiciona ASurfaceControl , uma nova maneira do SurfaceFlinger aceitar buffers.

Implementação gráfica

Camadas OpenGL ES

O Android 10 apresenta um sistema de camadas para GLES.

EGL 1.5

O Android 10 implementa a interface EGL 1.5 . Para obter informações sobre novos recursos no EGL 1.5, consulte Khronos Releases EGL 1.5 Specification .

Vulcano

O Android 10 inclui suporte para gráficos Vulkan 1.1. A plataforma também suporta VK_KHR_swapchain v70, então o aplicativo Vulkan é capaz de criar um VkImage apoiado pela memória swapchain.

Taxa de atualização de desempenho

O Android 10 adiciona suporte para taxa de atualização de desempenho. Este recurso está desativado por padrão.

Interação

Automotivo

Áudio automotivo

No Android 10, o contexto Audio HAL é mapeado para AudioAttributes.usage para identificar sons. O Android suporta uma instância AUDIO_DEVICE_OUT_BUS por contexto. IAudioControl HAL fornece extensões específicas do veículo para o Audio HAL .

Navegação gestual

O Android 10 apresenta uma opção para um sistema de navegação totalmente gestual. Para obter informações sobre como preparar aplicativos para usar esse recurso, consulte a página Navegação gestual no site do desenvolvedor Android.

Redes neurais

O Android 10 apresenta atualizações para a API de redes neurais e para o HAL de redes neurais. Para um resumo das mudanças, consulte Redes Neurais .

Documentação nova e atualizada de redes neurais para Android 10:

Sensores

Sensores HAL 2.0

O Sensors HAL 2.0 oferece suporte ao uso de filas de mensagens rápidas (FMQs) para enviar eventos de sensor do HAL para o Android Sensors Framework.

Sensores desligados

O Android 10 inclui uma configuração de desenvolvedor para desligar todos os sensores de um dispositivo. Esse recurso ajuda os desenvolvedores a testar a funcionalidade de seus aplicativos em situações em que esses sensores ficam indisponíveis e também oferece aos usuários uma maneira de controlar os sensores em seus dispositivos.

Se seus dispositivos usarem a implementação padrão de SensorService , CameraService e AudioPolicyService , nenhuma personalização adicional será necessária no design de referência. Se você tiver outros sensores, consulte Personalização para obter mais detalhes sobre o suporte a esse recurso.

meios de comunicação

Componentes de mídia atualizáveis

O Android 10 fornece componentes de mídia atualizáveis ​​que permitem a atualização de componentes modulares do sistema relacionados à mídia por meio da infraestrutura da Google Play Store ou por meio de um mecanismo over-the-air (OTA) fornecido pelo parceiro.

DRM de mídia

O Android 10 melhora a utilidade e a usabilidade das APIs MediaDrm Java e NDK.

Decodificação

O Android 10 suporta decodificação AV1 SW.

Permissões

O Android 10 oferece configurações de permissão adicionais para transparência e privacidade do usuário.

Provedor de contatos e informações de afinidades

A partir do Android 10, os dados relacionados à afinidade de contatos, gerenciados pelo componente Provedor de contatos , são acessados ​​de maneira diferente do Android 9 e versões anteriores. Essas mudanças em relação à acessibilidade dos dados melhoram a privacidade do usuário em todos os dispositivos Android 10 que usam o componente Provedor de Contatos. O banco de dados subjacente não contém mais dados de afinidades de contato. Portanto, os aplicativos não podem gravar ou ler nele.

Espera-se que as mudanças no Android 10 tenham um grande impacto nas APIs. Se seus aplicativos dependem dos recursos obsoletos mencionados em Provedor de contatos e Informações de afinidades, convém atualizar seus aplicativos para compensar quaisquer alterações. Além disso, se você usar uma versão bifurcada do Provedor de Contatos, deverá atualizar seu Provedor de Contatos.

Permissões de localização tristate

As permissões de localização Tristate no Android 10 oferecem aos usuários mais controle sobre como os aplicativos acessam a localização de seus dispositivos.

Lembrete de acesso à localização em segundo plano

O Android 10 apresenta um lembrete de localização de acesso em segundo plano , que aumenta a transparência sobre quanto acesso os aplicativos têm à localização de um dispositivo e ajuda os usuários a manter o controle sobre esse acesso.

Restringir locais oportunistas

Quando um aplicativo solicita a localização de um dispositivo, o aplicativo pode aguardar a resposta da solicitação ou, usando ouvintes de localização ativos, obter uma atualização de localização oportunista. A partir do Android 10, para obter atualizações de localização oportunistas , os desenvolvedores devem especificar que precisam de atualizações de localização passivas da classe FusedLocationProviderClient .

Lançamento de aplicativos em segundo plano

No Android 10, aplicativos sem privilégios e sem janela visível não podem ser iniciados automaticamente em primeiro plano. Essa alteração suprime pop-ups de anúncios e aquisições maliciosas. Nenhuma ação é necessária para ativar isso.

Sandbox de aplicativos

No Android 10, os aplicativos têm uma visão bruta limitada do sistema de arquivos, sem acesso direto a caminhos como /sdcard/DCIM . No entanto, os aplicativos mantêm acesso bruto total aos caminhos específicos do pacote, conforme retornado por quaisquer métodos aplicáveis, como Context.getExternalFilesDir() . Os aplicativos ainda têm acesso bruto total aos caminhos específicos do pacote.

Use as diretrizes de sandbox do aplicativo para compartilhamento de arquivos para fornecer granularidade de compartilhamento de dados apropriada.

Restringir o acesso à área de transferência do aplicativo

No Android 10, o acesso à área de transferência foi alterado para que o conteúdo da área de transferência não possa ser visualizado chamando ClipboardManager.getPrimaryClip ou adicionando um ouvinte onPrimaryClipChangedListener para notificação quando a área de transferência for alterada. Isso aumenta a privacidade do usuário e impede que aplicativos maliciosos modifiquem a área de transferência.

No Android 10, o acesso de leitura só é permitido ao aplicativo atual com foco de entrada ou ao teclado atual. A chamada do ouvinte ClipboardManager.onPrimaryClipChanged() agora é acionada apenas para aplicativos que atendem a essas restrições. ClipboardManager.getPrimaryClip e ClipboardManager.getPrimaryClipDescription retornarão null se o aplicativo solicitante não for o editor de método de entrada (IME) padrão ou não tiver foco de entrada.

As permissões de tempo de execução incluem reconhecimento de atividade

Os usuários agora veem uma caixa de diálogo de reconhecimento de atividade quando um aplicativo acessa a localização do dispositivo em segundo plano. As permissões de tempo de execução com restrição rígida devem estar devidamente na lista de permissões no Android 10.

Permissão MANAGE_DEVICE_ADMINS

O Android 10 altera a permissão MANAGE_DEVICE_ADMINS de assinatura ou privilegiada para somente assinatura. Isso significa que apenas aplicativos assinados pela plataforma podem definir outros aplicativos como administradores do dispositivo.

Compartilhando melhorias de API

O Android 10 oferece vários novos recursos da API da plataforma Android relacionados ao compartilhamento . Se você modificou o código da planilha de compartilhamento em sua implementação, verifique se ela oferece suporte a esses novos recursos. Se você não modificou o código da planilha de compartilhamento em sua implementação, não precisará fazer nada para dar suporte a esses novos recursos.

Tempo de execução do Android (ART)

Configuração assinada

O recurso Signed Config permite incorporar configurações de restrições de interface não SDK em APKs. Isso permite remover interfaces específicas não SDK da lista negra, para que o AndroidX possa usá-las com segurança. Com esta mudança, o AndroidX pode adicionar suporte para novos recursos em versões mais antigas do Android.

Desempenho

Camada de abstração Cgroup

O Android 10 inclui uma camada de abstração cgroup e perfis de tarefas, que os desenvolvedores podem usar para descrever um conjunto de restrições a serem aplicadas a um thread ou processo.

Daemon assassino com pouca memória (lmkd)

O Android 10 oferece suporte a um novo modo lmkd que usa monitores de informações de travamento de pressão do kernel (PSI) para detecção de pressão de memória.

Poder

Gerenciamento de energia da plataforma

No Android 10, o modo Soneca pode ser ativado em dispositivos sempre ligados, bem como em dispositivos alimentados por bateria.

Economizador de bateria de rotina

O Android 10 apresenta uma nova opção de programação de economia de bateria chamada com base na rotina . O economizador de bateria de rotina permite que um aplicativo escolhido pelo OEM forneça sinais ao sistema para um agendamento mais inteligente de economia de bateria. Esta opção requer configuração e sua implementação é opcional.

Estatísticas de potência HAL

No Android 10, IPowerStats.hal substitui as APIs de coleção de estatísticas de energia em IPower.hal . Enquanto o Power Hal ainda suporta as APIs, elas serão migradas exclusivamente para as estatísticas do Power Hal no futuro.

O Power Stats HAL inclui novas APIs para apoiar a coleta de dados da medição de energia no dispositivo, para dispositivos suportados. As APIs de coleta de estatísticas de potência existentes também são atualizadas para melhorar a flexibilidade. As APIs de sugestão de energia permanecem no poder Hal e não estão mudando.

Mitigação térmica

A estrutura térmica no Android 10 resumos interfaces de dispositivos para o sensor de temperatura do subsistema térmico, incluindo CPU, GPU, bateria, pele e dispositivo de resfriamento. A estrutura apresenta uma interface de pesquisa para consultar o status térmico para iniciar a limitação e uma interface de retorno de chamada para enviar uma mensagem ao usuário quando um limite é excedido.

O Android 10 fornece os novos tipos de dados através da interface IThermalService usando esses três novos métodos:

Os aplicativos adicionam e removem os ouvintes e o status da temperatura de acesso na classe PowerManager . Somente um serviço de sistema confiável, como uma API Android ou API do fabricante de dispositivos, pode acessar informações sobre eventos causais associados. Os fabricantes de dispositivos ou fabricantes de SOC devem implementar thermal HAL 2.0 para permitir a funcionalidade completa da nova estrutura térmica.

Para um exemplo de implementação de mitigação térmica, consulte a implementação de referência .

Atualizações

Formato do arquivo Apex

O Android Pony Express (APEX) é um novo formato de contêiner usado no fluxo de instalação para componentes do sistema modular.

Partições dinâmicas

Partições dinâmicas introduzem um sistema de partição do UsuáriosPace no Android, permitindo que as partições sejam criadas, redimensionadas ou destruídas durante as atualizações da OTA. Os fabricantes de dispositivos não precisam se preocupar com os tamanhos individuais de partições, como system , vendor e product . Em vez disso, uma grande super partição é alocada e as subpartições podem ser dimensionadas dinamicamente dentro dela.

Atualizações do sistema dinâmico

O Dynamic System Atualizações (DSU) permite fazer uma imagem do sistema Android que os usuários podem baixar da Internet e experimentar sem o risco de corromper a imagem atual do sistema.

Backup e restauração multiuser

O Android 10 suporta funcionalidade de backup e restauração para todos os usuários em um dispositivo. Anteriormente, o backup e a restauração estavam disponíveis apenas para o usuário do sistema. O backup e a restauração dos usuários não -sistemas é desligado por padrão, pois possui apenas cobertura parcial para configurações, papel de parede e componentes do sistema.

Sobreposições

Os usuários que trabalham com userdebug ou eng Builds esperam poder remontar com eficiência a partição do sistema como leitura e adicionar ou modificar qualquer número de arquivos sem refletir a imagem do sistema. Você pode usar Overlayfs , que configura automaticamente o armazenamento de backup para um sistema de arquivos gravável como uma referência superior e monta sobre a parte inferior. Essas ações acontecem no adb disable-verity e adb remount Solicys. Para mais detalhes, consulte o Overlayfs Readme no AOSP.

Suporte de biblioteca compartilhada no modo de recuperação

No Android 10, as bibliotecas compartilhadas estão disponíveis na Partição de Recuperação, que elimina a necessidade de todos os executáveis ​​do modo de recuperação serem estáticos. As bibliotecas compartilhadas estão localizadas no diretório /system/lib (ou /system/lib64 para dispositivos de 64 bits) na partição.

Para adicionar uma nova biblioteca compartilhada à Partição de Recuperação, adicione o recovery_available: true Or recovery: true to Android.bp da biblioteca compartilhada. O primeiro instala a biblioteca no sistema e nas partições de recuperação, enquanto o último a instala apenas na partição de recuperação.

O suporte à biblioteca compartilhada não pode ser criado com o sistema de construção baseado em Android. Para converter um executável estático existente para o modo de recuperação em um dinâmico, remova LOCAL_FORCE_STATIC_EXECUTABLE := true em Android.mk ou static_executable: true (in Android.bp ).

Ponto de verificação de dados do usuário (UDC)

O Android 10 apresenta o recurso UDC (User Data Checkpoint) , que permite que o Android volte ao seu estado anterior quando uma atualização do Android Over-the-Air (OTA) falha.