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 corretamente 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 funções aos apps para conceder permissões para uma finalidade específica e configure as funções padrão usando recursos de configuração da plataforma.
As proteções aprimoradas contra apps potencialmente perigosos (PHAs, na sigla em inglês) melhoram:
- Transparência em apps potencialmente nocivos.
- O controle do usuário sobre o comportamento do app.
- O critério 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 controle de instalação e permissão de pacotes
estavam contidas no pacotePackageInstaller
(//packages/apps/PackageInstaller). No Android 10 e versões mais recentes, a funcionalidade de controle de permissão
reside em um pacote separado, PermissionController
(//packages/apps/PermissionController). A Figura 1
ilustra onde os dois pacotes residem no Android 10.
Figura 1. Funcionalidades de instalação e controle de permissão de pacotes no Android 10
Listas de permissões e acesso
No Android 6.0 e versões mais recentes, os apps solicitam acesso a permissões perigosas no ambiente de execução. O Android 10 adiciona permissões de reconhecimento de atividade (AR, na sigla em inglês) no ambiente de execução, que solicitam ao usuário que modifique ou permita permissões perigosas.
O Android 8.0 exigia que você permitisse 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 estar na
lista de permissões
ou o dispositivo não poderá ser inicializado.
Para limitar a visibilidade da API interna e impedir que os apps acessem acidentalmente as bibliotecas da plataforma, o Android 7.0 introduziu namespaces para bibliotecas nativas. Isso separa as bibliotecas do sistema das bibliotecas de apps, e os fabricantes de dispositivos podem adicionar as próprias bibliotecas nativas.
A partir do Android 10, os apps precisam ter ambos 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 fazer uma captura de tela, precisam usar a classe MediaProjection.
O Android 15 exige que você permita explicitamente
as permissões de assinatura da plataforma
solicitadas por apps não relacionados ao 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, um endereço MAC de fábrica do dispositivo é protegido contra acesso por provedores de serviços Wi-Fi e analisadores de pacotes. Restrições adicionais do Android 10 limitam o acesso de apps aos identificadores (IDs) imutáveis do dispositivo, a menos que eles estejam na lista de permissões privilegiadas. A seção Conectividade oferece uma discussão relacionada sobre identificadores de dispositivos, já que isso afeta as operadoras.
No Android 9 e versões anteriores, os usuários fazem escolhas persistentes 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.
Configure permissões para outros recursos de transparência e privacidade a partir do Android 10
- O
lembrete de localização de acesso em segundo plano mostra aos usuários quando um app acessa a
localização do dispositivo usando
ACCESS_FINE_LOCATIONpermissão 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 autor da chamada .
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 por
initmantêm todos os aspectos da configuração do serviço em um único arquivo.rc. Ao definir funcionalidades para serviços não iniciados porinit, configure as funcionalidades do sistema de arquivos usandofs_config.c. - O Android 7.x e versões anteriores estendem o mecanismo de IDs do Android (AIDs, na sigla em inglês), usando um arquivo
android_filesystem_config.hespecí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 suporte a um novo método para estender as funcionalidades do sistema de arquivos. - No Android 8.0, o gerenciamento de comandos USB foi movido de scripts
initespecí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 no Android 8.0 e versões mais recentes.