Notas da versão do Android 10

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

Versão

java_sdk_library

O Android 10 apresenta a java_sdk_library, uma nova regra de build para corrigir problemas de compatibilidade com bibliotecas Java compartilhadas. Os fabricantes de dispositivos podem usar esse mecanismo para as próprias bibliotecas Java compartilhadas a fim de manter a compatibilidade com versões anteriores das APIs deles.

Arquitetura

Componentes modulares do sistema

O Android 10 modula alguns componentes do sistema Android e permite que eles sejam atualizados fora do ciclo normal de versão do Android. Estes são alguns dos módulos:

Camada de abstração de hardware (HAL)

O Android 10 adiciona suporte à desativação automática de HALs quando elas não têm clientes.

Kernel

ABI

O Android 10 inclui suporte a novos utilitários de monitoramento de ABI (link em inglês) para ajudar a comparar, rastrear e mitigar mudanças de ABI do kernel que afetam a compatibilidade com os módulos do kernel.

O Android 10 também introduz um verificador de usos de ABI baseado em símbolos. O verificador pode detectar binários pré-criados desatualizados durante a compilação para que os desenvolvedores de bibliotecas compartilhadas possam saber quais binários pré-criados podem ser corrompidos pelas mudanças que eles fazem e quais precisam ser criados novamente.

Daemon do Android Live-Lock

O Android 10 inclui o Daemon do Android Live-Lock (llkd, na sigla em inglês), desenvolvido para captar e atenuar os impasses do kernel.

vDSO32 no ARM64

O Android 10 é compatível com o uso do vDSO32 em kernels de 64 bits, que gera um aumento de 0,4% na duração da bateria e outras melhorias de desempenho.

Entradas fstab para partições montadas anteriormente

O Android 10 requer que os dispositivos especifiquem entradas fstab para partições montadas anteriormente usando um arquivo fstab no ramdisk da primeira etapa.

HIDL

BroadcastQueue de descarga

O Android 10 inclui uma novo BroadcastQueue de descarga para as filas de segundo plano e primeiro plano já existentes. A fila de descarga tem o mesmo comportamento de prioridade e tempo limite que a fila de segundo plano. Para impedir o bloqueio da fila de segundo plano, onde podem ocorrer transmissões mais interessantes ou visíveis ao usuário, a fila de descarga processa a transmissão BOOT_COMPLETED, que muitos apps ouvem e que pode levar muito tempo para ser concluída. Atualmente, a fila de descarga processa apenas a transmissão BOOT_COMPLETED, mas pode vir a processar outras transmissões longas.

Serviço SystemSuspend

O Android 10 substitui a linha de execução em libsuspend, responsável por iniciar a suspensão do sistema com o serviço SystemSuspend HIDL. Essa implementação oferece funcionalidade equivalente à de versões anteriores e aproveita os benefícios da infraestrutura HIDL do Android.

safe_union no HIDL

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

Configuração

HAL ConfigStore

O Android 10 descontinua a HAL ConfigStore devido ao alto consumo de memória e à dificuldade de uso, substituindo a HAL por propriedades do sistema.

API Config File Schema

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 atua como interface entre as duas partições e, portanto, o esquema precisa ser especificado explicitamente e evoluir de uma 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 nem para impedir alterações incompatíveis no esquema. O Android 10 fornece esse mecanismo, chamado API Config File Schema.

Propriedades do sistema como APIs

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

Objeto da interface do fornecedor (VINTF, na sigla em inglês)

VINTF

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

  • suspensão do uso das tags de versão do AVB;
  • inclusão de informações do kernel em pacotes OTA;
  • compilação oficial de manifestos de ODM;
  • inclusão de uma matriz de compatibilidade entre produtos;
  • associação de 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 no ramdisk.img. Em vez disso, ele vem mesclado no system.img.

Como criar partições ODM

O Android 10 inclui suporte à criação de partições odm usando o sistema de compilação do Android. Você pode usar uma partição /odm separada para personalizações, o que permite usar uma única imagem de fornecedor para várias SKUs de hardware. Isso permite que os fabricantes de projeto original (ODMs, na sigla em inglês) personalizem pacotes de suporte de placa (BSPs) do fornecedor do system on chip (SoC) para dispositivos específicos deles (as placas). Eles podem implementar módulos de kernel para componentes específicos da placa, daemons específicos da placa ou os próprios recursos nas camadas de abstração de hardware (HALs, na sigla em inglês). Eles também podem substituir ou personalizar componentes do SoC.

Controle de versões para cabeçalho de 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 de blob da árvore de dispositivos (DTB, na sigla em inglês). Os testes VTS do Android 10 verificam se todos os dispositivos iniciados com o Android 10 usam a versão 2 do cabeçalho da imagem de inicialização 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 mais recentes, a imagem de recuperação de um dispositivo precisa conter informações da imagem de sobreposição. Os fabricantes de dispositivos podem usar DeviceTree ou ACPI (Advanced Configuration and Power Interface) para descrever todos os dispositivos que não podem ser descobertos. O Android 10 e versões mais recentes incluem suporte a arquiteturas que usam ACPI em vez do blob DeviceTree para sobreposição (DTBO, na sigla em inglês).

AIDL estável

O Android 10 adiciona compatibilidade com Linguagem de definição de interface do Android (AIDL) estável, uma nova maneira de acompanhar a interface de programação do aplicativo (API, na sigla em inglês)/interface binária do aplicativo (ABI, na sigla em inglês) fornecida pelas interfaces de AIDL.

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

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

Tela

Reprodução de vídeo HDR

O Android 10 é compatível com reprodução 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 um texto. O Android 10 apresenta dois métodos para a API TextClassifier: suggestConversationActions e detectLanguage. O método suggestConversationActions gera respostas e ações sugeridas de determinada conversa, e o método detectLanguage detecta o idioma do texto.

Suporte à renderização da fonte Zawgyi

Zawgyi é a fonte mais popular em Mianmar. O Android 9 e versões anteriores não renderizavam a Zawgyi porque ela não é compatível com Unicode (link em inglês). 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 renderizar a fonte Zawgyi em dispositivos lançados com o Android 10. Se seus dispositivos têm uma implementação personalizada para compatibilidade com Zawgyi, você pode:

  • reverter essas alterações e usar o método compatível com a plataforma;
  • manter a fonte Zawgyi comum no seu sistema e usar o código de localidade my-qaag no seu fonts.xml. Para mais informações, consulte as Notas da versão do Unicode CLDR sobre Zawgyi (Qaag) (link em inglês).

Limites para ocultar ícones de apps

O Android 10 limita a capacidade de apps ocultarem seus ícones na tela de início. Caso um app não tenha uma atividade de tela de início ativada, o sistema exibirá uma atividade sintetizada na tela de início. Essa atividade sintetizada representa a página de detalhes do app nas configurações do sistema.

Para ver mais informações sobre a lógica usada para exibir os ícones dos apps, incluindo os tipos de apps cujos ícones não são exibidos, consulte a documentação de getActivityList() na Referência da API (link em inglês).

Configurações

Para melhorar a acessibilidade, o Android 10 inclui configurações de tempo limite personalizáveis pelo usuário. As alterações de API e configurações são fornecidas com o Android 10. Se você personalizar suas configurações, verifique se esse recurso é compatível. Se você tiver elementos de IU que atingem o tempo limite no seu dispositivo, use a API de tempos limite neles. Para ver mais informações, consulte as diretrizes de acessibilidade para desenvolvedores Android.

Compatibilidade

Documento de definição de compatibilidade do Android (CDD, na sigla em inglês)

O Documento de definição de compatibilidade do Android 10 itera as versões anteriores com atualizações de novos recursos e mudanças nos requisitos da funcionalidade lançada anteriormente.

Testes

Conjunto de teste de compatibilidade (CTS)

O Android CTS tem uma página de notas de versão separada que lista várias alterações importantes no Android 10.

Downloads do CTS

Os pacotes de CTS compatíveis com o Android 10 estão disponíveis na página 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.

APEX paliativo do CTS

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

Modo de arcabouço de testes

O modo de arcabouço de testes do CTS ajuda os desenvolvedores a automatizar os testes de um dispositivo ou uma frota de dispositivos.

Modo Instant Apps

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 o Instant Apps, o Android 10 inclui o CTS Verifier para Instant Apps

Teste Pro Audio do CTS Verifier

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

Testes MIDI do CTS Verifier

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

Interpretação de testes CTS

O Android 10 atualiza o mecanismo para interpretar resultados de CTS.

Teste de fornecedor (VTS)

Teste VTS com ramdisk de depuração

No Android 10, a imagem genérica do sistema (GSI, na sigla em inglês) usada para executar o teste de conformidade CTS-on-GSI/VTS muda do tipo de depuração do usuário para criação do usuário, porque a GSI tem versão assinada. No entanto, o comando adb root que concede permissões de raiz de host ao dispositivo Android em teste não está disponível em uma compilação do usuário. Esse problema ocorre porque o VTS requer a execução de adb root.

O ramdisk de depuração é introduzido para permitir o adb root, caso o dispositivo esteja desbloqueado. Isso simplifica o fluxo de testes reutilizando a mesma compilação de usuário system.img (GSI ou system.img do OEM).

Validação do Hardware Composer

O Android 10 adiciona uma nova classe de teste VTS para validação do Hardware Composer, usando a interface readback em IComposerClient.hal. Se os fornecedores não implementam readback, os testes são aprovados automaticamente.

Depuração

Carregar bibliotecas compartilhadas com diferentes carregadores de classes

No Android 9 e versões anteriores, os apps carregavam as bibliotecas Java compartilhadas vinculadas no carregador de classes do app. No Android 10, o framework usa um carregador de classes diferente do carregador de classes do app para carregar bibliotecas Java compartilhadas vinculadas por meio de uses-library ou uses-static-library.

Em geral, os apps não podem depender do uso de um carregador de classes específico. Portanto, essa mudança não pode prejudicar o comportamento do app. No entanto, se um app usar um carregador de classes único, esse comportamento será corrompido. Além disso, a visibilidade privada do pacote para classes no mesmo pacote ainda tem suporte, mas não em bibliotecas compartilhadas.

Os fabricantes de dispositivos podem encontrar problemas de compatibilidade de apps ao testar dispositivos com o Android 10.

Recursos de segurança

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

Autenticação facial

A autenticação facial permite que os usuários desbloqueiem os respectivos dispositivos simplesmente olhando para a parte frontal deles. O Android 10 oferece suporte a uma nova pilha de autenticação facial que pode processar de forma segura os frames da câmera, preservando a segurança e privacidade durante a autenticação facial no hardware com suporte. O Android 10 também fornece uma maneira fácil para que implementações seguras permitam a integração de apps para transações, como para internet banking ou outros serviços

Acesso estendido

O mecanismo de "Agentes de confiança" (usado por mecanismos de autenticação terciários, como o Smart Lock) só pode 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 versão 15 da API OEMCrypto.

Teste

BoundsSanitizer

O Android 10 implementa o BoundsSanitizer (BoundSan) no Bluetooth e nos codecs. O BoundSan usa o limpador de limites do UBSan. Essa atenuação é ativada por módulo. Ela ajuda a proteger os componentes críticos do Android e não pode ser desativada. O BoundSan está ativado nos seguintes codecs:

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

Limpeza de estouro de números inteiros

O Android 10 permite a Limpeza de estouro de números inteiros (IntSan, na sigla em inglês) em codecs de software. O desempenho da reprodução precisa ser aceitável para qualquer codec que não tenha suporte do hardware do dispositivo. O IntSan está ativado 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 dos binários do sistema AArch64 são marcadas como somente execução (ilegíveis) para reduzir ainda mais os ataques de reutilização de just-in-time. O código que combina dados e código e o código que inspeciona intencionalmente essas seções (sem primeiro remapear os segmentos de memória como legíveis) não funcionam mais. Os apps que têm um SDK de destino do Android 10 (API de nível 29 ou superior) serão afetados se o app tentar ler seções de código de bibliotecas do sistema habilitadas para memória somente de execução (XOM, na sigla em inglês) sem primeiro marcar a seção como legível.

Scudo

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

ShadowCallStack

ShadowCallStack (SCS) é um modo de instrumentação LLVM (link em inglês) que protege contra substituições de endereço de retorno (por exemplo, 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ções não folha e carregando o endereço de retorno da instância ShadowCallStack no epílogo da função.

Áudio

HAL de áudio

O Android 10 inclui estas novas funcionalidades para HAL de áudio:

  • AudioSource
  • AudioFormat
  • AudioChannelMask

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

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.

Gerenciador de políticas de áudio

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

Áudio de alto desempenho

O Android 10 inclui estas melhorias para áudio de alto desempenho:

  • Compatibilidade com flutuação
  • Compatibilidade com frequência de 192 KHz
  • Compatibilidade com oito canais
  • Inclusão de informações de tempo

Captura simultânea

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

AudioPlaybackCapture

O Android 10 contém uma nova API, chamada AudioPlaybackCapture, que oferece aos apps a capacidade de copiar o áudio que está sendo tocado por outros apps. Esse recurso é semelhante à captura de tela, mas para áudio. O principal caso de uso é permitir que apps de streaming capturem o áudio que está sendo reproduzido por jogos.

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

MIDI

O Android 10 facilita a portabilidade de apps de áudio profissionais que usam MIDI para a plataforma Android com a API AMidi NDK.

Câmera

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

Melhorias na privacidade do framework da câmera

O Android 10 apresenta melhorias de privacidade no framework da câmera. Para evitar a exposição de informações estáticas da câmera possivelmente sensíveis no CameraCharacteristics sem o consentimento do usuário, os apps precisam ter a permissão CAMERA para recuperar metadados estáticos com uma tag sensível à privacidade usando o método getCameraCharacteristics.

Para ver uma lista das chaves características da câmera que exigem 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 um desempenho aprimorado por meio de mais controle sobre a lógica de reconfiguração de parâmetros da sessão interna.

APIs para gerenciamento de buffer de HAL3 da câmera

O Android 10 introduz APIs opcionais para gerenciamento de buffer de HAL3 da câmera que permitem implementar a lógica de gerenciamento de buffer para ter diferentes memórias e capturar trocas de latência nas implementações de HAL da câmera.

Chave física dinâmica de 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ógico. Para ver mais informações, consulte Compatibilidade com várias câmeras.

Compatibilidade com ocultação de câmeras físicas

No Android 10, a HAL da câmera pode reduzir o número de câmeras físicas que podem ser abertas diretamente por um app. Para conferir mais detalhes, consulte Compatibilidade com várias câmeras.

API Camera2 VNDK

No Android 10, os módulos do fornecedor podem acessar e controlar dispositivos de câmera usando 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 ao fornecedor, a libcamera2_vendor. Essa biblioteca é semelhante à Camera NDK, com algumas pequenas modificações.

Configurações de streaming

O Android 10 adiciona recursos que permitem que os fornecedores de câmeras anunciem streamings de câmeras recomendados para clientes e ofereçam suporte a uma API para consultar combinações de streaming.

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

Os dispositivos que executam o Android 10 não precisam mais oferecer compatibilidade para combinações de streaming com streaming de subcâmera físico. No entanto, os dispositivos que executam o Android 10 com o dispositivo HAL de câmera versão 3.5 precisam oferecer suporte a isStreamCombinationSupported() para permitir que os apps consultem se uma combinação de streaming que contém streamings físicos tem suporte ou não.

Para ver mais informações, consulte Compatibilidade com várias câmeras.

Tecnologia HEIF

O Android 10 oferece suporte nativo à câmera com imagens com formato de arquivo de imagem de alta eficiência (HEIF), que oferecem melhor qualidade e tamanhos menores que os arquivos JPEG. Os dispositivos precisam ter um codificador HEIC ou HEVC para oferecer suporte a imagens HEIF.

Câmeras monocromáticas

O Android 10 oferece mais suporte ao formato de streaming Y8 e a metadados estáticos da matriz de filtros de cores monocromáticas e infravermelhas próximas (NIR, na sigla em inglês), além de funções DngCreator para câmeras monocromáticas.

Conectividade

Chamadas e mensagens

Números e chamadas de emergência

O Android 10 fornece compatibilidade aprimorada com chamadas de emergência. Em caso de emergência, os dispositivos compatíveis com IRadio HAL v1.4 podem iniciar uma chamada usando números de emergência recuperados de uma fonte como um chip, o sinal de rede ou o banco de dados do Android. Os números podem ser classificados com base em categorias de serviço de emergência, por exemplo, polícia, bombeiros e ambulância.

APIs de chamada em grupo

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

Recursos remotos do chip

O Android 10 apresenta recursos remotos do chip que permitem que apps de mensagens em um dispositivo host Android enviem mensagens SMS por smartphones usando mecanismos como Bluetooth. Para ver mais informações, consulte a documentação de referência para o método getSubscriptionType e a constante SUBSCRIPTION_TYPE_REMOTE_SIM.

Vários eSIMs

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

Atualizações de eSIM

Para dispositivos com o Android 10 que oferecem suporte a eSIMs, é necessário definir uma matriz de ID de slot eUICC não removível. Os dispositivos também precisam oferecer suporte ao IRadio HAL v1.4 e IRadioConfig HAL v1.2. Para ver mais informações, consulte Como implementar o eSIM e Requisitos da HAL.

5G não autônomo (NSA, na sigla em inglês)

O Android 10 adiciona suporte ao 5G NSA. Essa é uma solução para redes 5G em que a rede tem suporte de uma infraestrutura 4G já existente. No Android 10, os dispositivos podem exibir um ícone 5G na barra de status quando um dispositivo se conectar a uma rede 5G.

Sugestão de conta telefônica

O Android 10 introduz o serviço de sugestão de conta telefônica, que permite que essas sugestões sejam exibidas aos usuários quando eles fizerem uma chamada.

Operadora

Migrar configurações de rede móvel

O Android 10 reprojetou o código da IU das configurações de rede móvel e o moveu da pilha de telefonia para a pilha de configurações. Para oferecer suporte ao código migrado, mude os seguintes valores da configuração da rede móvel de recursos do 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 dispositivo persistentes (IMEI/MEID, IMSI e número de série da versão) são protegidos por uma permissão privilegiada com acesso também concedido a apps do proprietário do dispositivo e do perfil. Como o IMSI e o número de série do chip 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 das redes disponíveis. O Android 10 tem algoritmos e procedimentos atualizados para selecionar redes Wi-Fi e alternar entre elas.

Buscar por rede Wi-Fi preferencial de descarga

O Android 10 apresenta um método de API opcional em WifiManager, chamado setDeviceMobilityState(). Esse método aumenta o intervalo entre as buscas por redes preferenciais de descarga (PNO, na sigla em inglês) quando o dispositivo está inativo para reduzir o uso de energia.

Wi-Fi da operadora

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

Wi-Fi Easy Connect

No Android 10, os dispositivos podem usar Wi-Fi Easy Connect, que utiliza o protocolo de provisionamento de dispositivo (DPP, na sigla em inglês) introduzido pela Wi-Fi Alliance (WFA), para provisionar e configurar dispositivos Wi-Fi.

Modo de baixa latência de Wi-Fi

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

Servidor DHCP atualizado

Como parte da formação de uma estrutura genérica de serviço "Servidor IP", o 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 se integrar ao plano de controle do framework Java. Isso melhora a segurança e a capacidade de atualização do servidor DHCP. Para ver mais detalhes, consulte packages/modules/NetworkStack/src/android/net/dhcp/DhcpServer.java.

Nenhuma ação é necessária para implementar essa alteração: todos os dispositivos que estão sendo liberados e atualizados para o Android 10 usam o DhcpServer por padrão. Se você tiver personalizações no servidor DHCP, poderá voltar para o comportamento do Android 9 definindo a configuração global tether_enable_legacy_dhcp_server=1. Como o novo DhcpServer está incluído no módulo de componentes de rede, toda personalização para a funcionalidade do servidor DHCP precisa ser feita em upstream.

WPA3 e Wi-Fi Enhanced Open

O Android 10 adiciona suporte a padrões de segurança Wi-Fi Protected Access 3 (WPA3, na sigla em inglês) e Wi-Fi Enhanced Open para ter melhor privacidade e robustez contra ataques conhecidos.

Wi-Fi Direct

O Wi-Fi Direct, também conhecido como Wi-Fi P2P, permite que os dispositivos com suporte se descubram e se conectem diretamente usando o protocolo Wi-Fi Direct sem acesso à Internet ou uma rede celular.

Melhorias de escolha aleatória de MAC

No Android 10, a escolha aleatória de MAC é ativada por padrão para o modo cliente, SoftAp e Wi-Fi Direct. Os dispositivos precisam fornecer uma opção para ativar ou desativar a escolha aleatória de MAC para cada SSID na IU do sistema.

Passpoint R2

O Android 10 oferece suporte aos recursos do Passpoint R2. O Passpoint R2 implementa a inscrição on-line (OSU, na sigla em inglês), um método padrão para provisionar novos perfis do Passpoint. O Android 10 é compatível com o provisionamento de perfis EAP-TTLS usando SOAP-XML.

NFC

Proteger NFC

O recurso NFC segura permite que a emulação de cartões NFC fora do host seja ativada apenas quando a tela do dispositivo está desbloqueada. A implementação desse recurso oferece aos usuários a opção de ativar o NFC segura para melhorar a segurança.

O Android Beam está obsoleto

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

Interfaces:

Métodos:

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

Gráficos

ASurfaceControl

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

Implementação gráfica

Camadas do OpenGL ES

O Android 10 introduz um sistema de camadas para o GLES.

EGL 1.5

O Android 10 implementa a interface EGL 1.5 (link em inglês). Para ver informações sobre novos recursos no EGL 1.5, consulte a especificação de versões Khronos EGL 1.5 (link em inglês).

Vulkan

O Android 10 inclui suporte a gráficos Vulkan 1.1. A plataforma também tem suporte a VK_KHR_swapchain v70 para que o app Vulkan possa criar uma VkImage apoiada pela memória de cadeia de troca.

Taxa de atualização de desempenho

O Android 10 adiciona suporte a uma taxa de atualização de desempenho. Esse recurso é desativado por padrão.

Interação

Automotive

Áudio automotivo

No Android 10, o contexto de HAL de áudio é mapeado para AudioAttributes.usage a fim de identificar sons. O Android é compatível com uma instância de AUDIO_DEVICE_OUT_BUS por contexto. A HAL IAudioControl fornece extensões específicas do veículo para a HAL de áudio.

Navegação por gestos

O Android 10 apresenta uma opção para navegação totalmente por gestos no sistema. Para ver informações sobre como preparar apps para usar esse recurso, consulte a página Navegação por gestos no site para desenvolvedores Android.

Redes neurais

O Android 10 introduz atualizações para a API Neural Networks e a HAL de redes neurais. Para ver um resumo das alterações, consulte Redes neurais.

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

Sensores

HAL 2.0 de sensores

A HAL 2.0 de sensores oferece suporte ao uso de filas rápidas de mensagens (FMQs, na sigla em inglês) para enviar eventos do sensor da HAL para o Android Sensors Framework.

Sensores desativados

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

Caso seus dispositivos usem a implementação padrão de SensorService, CameraService e AudioPolicyService, nenhuma outra personalização é necessária para o design de referência. Se você tem outros sensores, consulte Personalização para ver mais detalhes sobre a compatibilidade com esse recurso.

Mídia

Componentes de mídia atualizáveis

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

DRM de mídia

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

Decodificação

O Android 10 oferece suporte à decodificação AV1 SW.

Permissões

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

Informações sobre afinidades e sobre o Provedor de contatos

A partir do Android 10, os dados relacionados à afinidade de contatos, gerenciados pelo componente Provedor de contatos, são acessados de maneira diferente de como era feito no Android 9 e versões anteriores. Essas alterações 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 apps não podem gravar ou ler a partir deles.

Espera-se que as alterações no Android 10 tenham um grande impacto nas APIs. Se seus apps dependem dos recursos obsoletos mencionados em "Informações sobre afinidades e sobre o Provedor de contatos", você pode atualizar os apps para compensar alterações. Além disso, se você usa uma versão ramificada do "Provedor de contatos", é necessário atualizá-lo.

Permissões de localização tri-state

As permissões de localização tri-state no Android 10 dão aos usuários maior controle sobre a forma como os apps acessam a localização do dispositivo.

Lembrete de acesso ao local em segundo plano

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

Restringir locais oportunistas

Quando um app solicita a localização de um dispositivo, ele pode aguardar a resposta da solicitação ou, usando listeners de localização ativos, receber uma atualização de localização oportunista. A partir do Android 10, para receber atualizações de localização oportunistas, os desenvolvedores têm que especificar que precisam de atualizações de localização passivas da classe FusedLocationProviderClient.

Abrir apps em segundo plano

No Android 10, apps não privilegiados sem uma janela visível não podem ser iniciados automaticamente em primeiro plano. Essa alteração suprime pop-ups de anúncios e preenchimentos totais maliciosos. Nenhuma ação é necessária para ativar esse recurso.

Sandbox de apps

No Android 10, os apps têm uma visualização bruta limitada do sistema de arquivos, sem acesso direto a caminhos como /sdcard/DCIM. No entanto, os apps mantêm acesso bruto completo aos caminhos específicos do pacote, quando retornados por métodos aplicáveis, como Context.getExternalFilesDir(). Os apps ainda têm acesso bruto completo aos caminhos específicos do pacote.

Use as diretrizes para compartilhamentos de arquivos no sandbox de apps para oferecer granularidade adequada de compartilhamento de dados.

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

No Android 10, o acesso à área de transferência mudou para que o conteúdo dela não possa ser observado chamando ClipboardManager.getPrimaryClip ou adicionando um listener onPrimaryClipChangedListener para notificação quando a área de transferência é modificada. Isso aumenta a privacidade do usuário e impede que apps com malvertising modifiquem a área de transferência.

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

Permissões de ambiente de execução incluem o reconhecimento de atividade

Os usuários agora veem uma caixa de diálogo de reconhecimento de atividade quando um app acessa a localização do dispositivo em segundo plano. As permissões de ambiente de execução com fortes restrições precisam estar corretamente incluídas 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 apps assinados por plataforma podem definir outros apps como administradores de um dispositivo.

Melhorias de compartilhamento de API

O Android 10 oferece vários novos recursos da API Android Platform relacionados a compartilhamento. Se você modificou o código Share Sheet na sua implementação, verifique se ela é compatível com esses novos recursos. Se você não modificou o código Share Sheet na sua implementação, não precisa fazer nada para oferecer compatibilidade com esses novos recursos.

Android Runtime (ART)

Configuração assinada

O recurso Configuração assinada permite incorporar a configuração de restrições de interface que não sejam SDK em APKs. Isso permite remover interfaces não SDK específicas da lista de proibições para que o AndroidX possa usá-las com segurança. Com essa alteração, o AndroidX pode adicionar compatibilidade com 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 uma linha de execução ou a um processo.

Low Memory Killer Daemon (lmkd)

O Android 10 oferece suporte a um novo modo lmkd que usa monitores de informação de pouca pressão (PSI, na sigla em inglês) do kernel para detecção de pressão da memória.

Energia

Gerenciamento de energia da plataforma

No Android 10, o modo Soneca pode ser habilitado em dispositivos sempre ativados e em dispositivos que funcionam à bateria.

Economia de bateria de rotina

O Android 10 introduz uma nova opção de programação para economia de bateria chamada baseada em rotina. A economia de bateria de rotina permite que um app escolhido pelo OEM dê sinais ao sistema para programar uma economia de bateria mais inteligente. Essa opção requer uma configuração, e a implementação dela é opcional.

HAL de estatísticas de energia

No Android 10, IPowerStats.hal substitui as APIs de coleta de estatísticas de energia no IPower.hal. Embora a HAL de energia ainda ofereça suporte às APIs, no futuro elas vão ser migradas exclusivamente para a HAL de estatísticas de energia.

A HAL de estatísticas de energia inclui novas APIs para oferecer compatibilidade com a coleta de dados da medição de energia no dispositivo, para dispositivos compatíveis. As APIs de coleta de estatísticas de energia já existentes também são atualizadas para melhorar a flexibilidade. As APIs de dicas de energia permanecem na HAL de energia e não serão alteradas.

Mitigação térmica

O framework térmico no Android 10 abstrai as interfaces do dispositivo para o sensor de temperatura do subsistema térmico, incluindo CPU, GPU, bateria, skin e dispositivo de resfriamento. O framework introduz uma interface de pesquisa para consultar o status térmico a fim de iniciar a limitação e uma interface de callback para enviar uma mensagem ao usuário quando um limite é excedido.

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

Os apps adicionam e removem listeners e acessam o status da temperatura na classe PowerManager. Somente um serviço de sistema confiável, como uma API Android ou API do fabricante do dispositivo, pode acessar informações sobre eventos causais associados. Os fabricantes de dispositivos ou fabricantes de SoC precisam implementar thermal HAL 2.0 para permitir a funcionalidade completa do novo framework térmico.

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

Atualizações

Formato de arquivo APEX

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

Partições dinâmicas

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

Atualizações dinâmicas do sistema

O recurso Atualizações dinâmicas do sistema (DSU, na sigla em inglês) permite criar uma imagem do sistema Android que os usuários podem transferir por download e testar sem o risco de corromper a imagem atual do sistema.

Backup e restauração de vários usuários

O Android 10 é compatível com a 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 para usuários que não são do sistema ficam desativados por padrão, porque têm apenas cobertura parcial para configurações, plano de fundo e componentes do sistema.

Overlayfs

Os usuários que trabalham com builds userdebug ou eng esperam poder reativar com eficiência a partição do sistema como leitura/gravação e, em seguida, adicionar ou modificar qualquer número de arquivos sem atualizar 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 é ativado sobre a inferior. Essas ações acontecem nas solicitações adb disable-verity e adb remount. Para ver mais detalhes, consulte o README de Overlayfs (link em inglês) no AOSP.

Compatibilidade com bibliotecas compartilhadas no modo de recuperação

No Android 10, as bibliotecas compartilhadas estão disponíveis na partição de recuperação, 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 recovery_available: true ou recovery: true ao Android.bp da biblioteca compartilhada. O primeiro instala a biblioteca nas partições do sistema e de recuperação, enquanto o último a instala apenas na partição de recuperação.

O suporte a bibliotecas compartilhadas não pode ser criado com um sistema de compilação baseado em Make do Android. Para converter um executável estático já existente do modo de recuperação em dinâmico, remova LOCAL_FORCE_STATIC_EXECUTABLE := true em Android.mk ou static_executable: true (em Android.bp).

Checkpoint de dados do usuário

O Android 10 apresenta o recurso de Checkpoint de dados do usuário (UDC, na sigla em inglês), que permite que o Android seja revertido ao estado anterior quando uma atualização over the air (OTA) falhar.