As permissões do Android oferecem controles que aumentam a conscientização do usuário e limitam o acesso de um app a dados sensíveis. A configuração de permissões no Android 8.0 e
versões anteriores inclui a lista de permissões, sem a qual os apps privilegiados são desativados, mesmo
que estejam no caminho priv-app
. No Android 9 e versões mais recentes, um dispositivo
que tenta usar apps que não estão na lista de permissões não é inicializado.
O Android 10 introduziu o conceito de uma função, um nome exclusivo no sistema associado a determinados requisitos e privilégios. Atribua papéis aos apps para conceder permissões para uma finalidade específica e configure papéis padrão usando recursos de configuração da plataforma.
As proteções aprimoradas contra apps potencialmente nocivos (PHAs) melhoram:
- Transparência sobre o comportamento de apps potencialmente nocivos.
- Controle do usuário sobre o comportamento do app.
- Discrição dos desenvolvedores de apps ao usar dados particulares protegidos por permissões.
Instalação e permissão de pacotes
No Android 9 e versões anteriores, as funcionalidades de instalação de pacotes e controle de permissões
estavam contidas no pacote PackageInstaller
(//packages/apps/PackageInstaller
). No Android 10 e versões mais recentes, a funcionalidade de controle de permissões
está em um pacote separado, PermissionController
(//packages/apps/PermissionController
). A Figura 1
ilustra onde os dois pacotes estão localizados no Android 10.

Figura 1. Funcionalidades de instalação de pacotes e controle de permissões no Android 10
Listas de permissão e acesso
No Android 6.0 e versões mais recentes, os apps solicitam acesso a permissões perigosas no tempo de execução. O Android 10 adiciona permissões de ambiente de execução de reconhecimento de atividade (AR, na sigla em inglês), que pedem ao usuário para modificar ou permitir permissões perigosas.
No Android 8.0, era necessário permitir explicitamente os apps privilegiados nos
arquivos XML de configuração do sistema no diretório /etc/permissions
.
No Android 9 e versões mais recentes, as permissões privilegiadas precisam ser adicionadas a uma lista de permissões, caso contrário, o dispositivo não poderá ser inicializado.
Para limitar a visibilidade da API interna e evitar que os apps acessem acidentalmente bibliotecas da plataforma, o Android 7.0 introduziu Namespaces for Native Libraries. Isso separa as bibliotecas do sistema das bibliotecas do app, e os fabricantes de dispositivos podem adicionar as próprias bibliotecas nativas.
A partir do Android 10, os apps precisam ter permissões de assinatura e consentimento do usuário para acessar o conteúdo da tela de um dispositivo. Os apps privilegiados que dependem da funcionalidade de captura silenciosa, como tirar uma captura de tela, precisam usar a classe MediaProjection.
O Android 15 exige que você inclua na lista de permissões de forma explícita as permissões de assinatura da plataforma solicitadas por apps que não são do sistema ou recém-solicitadas por atualizações de apps do sistema nos arquivos XML de configuração do sistema no diretório /etc/permissions
.
Transparência e privacidade
No Android 6.0 e versões mais recentes, o endereço MAC de fábrica de um dispositivo é protegido contra acesso por provedores de serviços de Wi-Fi e analisadores de pacotes. Outras restrições do Android 10 impedem que os apps acessem os identificadores (IDs) imutáveis do dispositivo, a menos que estejam na lista de permissões privilegiadas. A seção Conectividade oferece uma discussão relacionada sobre identificadores de dispositivo, já que isso afeta as operadoras.
No Android 9 e em versões anteriores, os usuários fazem escolhas permanentes ao conceder acesso à localização para apps. A partir do Android 10, um recurso de permissões de localização tri-state oferece aos usuários três opções para permitir o acesso do app à localização de um dispositivo. Esses requisitos de permissão são aplicados a apps no Android 10, independente do SDK de destino.
Configurar permissões para outros recursos de transparência e privacidade a partir do Android 10
- O lembrete de
acesso à localização em segundo plano mostra aos usuários quando um app acessa a localização do
dispositivo usando a permissão
ACCESS_FINE_LOCATION
em segundo plano. - Os dados relacionados à afinidade de contatos, gerenciados pelo componente Provedor de contatos, são acessados de maneira diferente: os apps não podem gravar nem ler os dados de afinidades de contatos no banco de dados. Isso afeta as APIs relacionadas ao chamador.
Configurações simplificadas
As configurações de permissões foram simplificadas para o Android 6.0 e versões mais recentes.
- As funcionalidades de ambiente para serviços iniciados pelo
init
mantêm todos os aspectos da configuração do serviço em um único arquivo.rc
. Ao definir recursos para serviços não iniciados peloinit
, configure os recursos do sistema de arquivos usandofs_config.c
. - O Android 7.x e versões anteriores estendem o mecanismo de IDs do Android (AIDs) usando um
arquivo
android_filesystem_config.h
específico do dispositivo para especificar funcionalidades do sistema de arquivos e/ou AIDs personalizados do fabricante do dispositivo. O Android 8.0 e versões mais recentes oferecem um novo método para ampliar as funcionalidades do sistema de arquivos. - No Android 8.0, o processamento de comandos USB foi movido dos scripts
init
específicos do dispositivo (uma substituição para camadas HAL) para um daemon USB nativo. A interface USB HAL precisa ser implementada em todos os dispositivos lançados com o Android 8.0 e versões mais recentes.