Como nas versões anteriores, o Android 17 inclui mudanças de comportamento que podem afetar seu app. As mudanças de comportamento a seguir se aplicam exclusivamente a apps que segmentam o Android 17 ou versões mais recentes. Se o app for direcionado ao Android 17 ou a versões mais recentes, faça modificações para oferecer suporte a esses comportamentos, quando aplicável.
Consulte também a lista de mudanças de comportamento que afetam todos os apps
executados no Android 17, independente da targetSdkVersion do seu app.
Principal recurso
O Android 17 inclui as seguintes mudanças que modificam ou ampliam vários recursos principais do sistema Android.
Nova implementação sem bloqueio de MessageQueue
A partir do Android 17, os apps destinados ao Android 17
ou versões mais recentes recebem uma nova implementação sem bloqueio de
android.os.MessageQueue. A nova implementação melhora a performance e reduz os frames perdidos, mas pode causar falhas em clientes que refletem em campos e métodos particulares de MessageQueue.
Para mais informações, incluindo estratégias de mitigação, consulte Orientação sobre a mudança de comportamento do MessageQueue.
Acessibilidade
O Android 17 faz as seguintes mudanças para melhorar a acessibilidade.
Suporte de acessibilidade para digitação complexa no teclado físico do IME
Esse recurso introduz novas APIs AccessibilityEvent e TextAttribute
para melhorar o feedback falado do leitor de tela para entrada de texto em idiomas CJKV. Os apps de IME CJKV
agora podem sinalizar se um candidato à conversão de texto foi selecionado durante
a composição de texto. Os apps com campos de edição podem especificar tipos de mudança de texto ao
enviar eventos de acessibilidade de texto alterado.
Por exemplo, os apps podem especificar que uma mudança de texto ocorreu durante a composição
de texto ou que uma mudança de texto resultou de uma confirmação.
Isso permite que serviços de acessibilidade, como leitores de tela, ofereçam feedback mais preciso com base na natureza da modificação do texto.
Adoção de apps
Apps de IME:ao definir a composição de texto em campos de edição, os IMEs podem usar
TextAttribute.Builder.setTextSuggestionSelected()para indicar se um candidato a conversão específico foi selecionado.Apps com "Editar campos":os apps que mantêm um
InputConnectionpersonalizado podem recuperar dados de seleção de candidatos chamandoTextAttribute.isTextSuggestionSelected(). Esses apps precisam chamarAccessibilityEvent.setTextChangeTypes()ao despachar eventosTYPE_VIEW_TEXT_CHANGED. Apps direcionados ao Android 17 que usam oTextViewpadrão terão esse recurso ativado por padrão. Ou seja,TextViewvai processar a recuperação de dados do IME e definir tipos de mudança de texto ao enviar eventos para serviços de acessibilidade.Serviços de acessibilidade:os serviços de acessibilidade que processam eventos
TYPE_VIEW_TEXT_CHANGEDpodem chamarAccessibilityEvent.getTextChangeTypes()para identificar a natureza da modificação e ajustar as estratégias de feedback de acordo.
Segurança
O Android 17 faz as seguintes melhorias na segurança de dispositivos e apps.
Segurança de atividade
No Android 17, a plataforma continua a transição para uma arquitetura "segura por padrão", introduzindo um conjunto de melhorias projetadas para reduzir explorações de alta gravidade, como phishing, sequestro de interação e ataques de confusão de representantes. Essa atualização exige que os desenvolvedores ativem explicitamente os novos padrões de segurança para manter a compatibilidade do app e a proteção do usuário.
Os principais impactos para os desenvolvedores incluem:
- Reforço da BAL e melhoria da ativação:estamos refinando as restrições de inicialização de atividades em segundo plano (BAL, na sigla em inglês) ao estender as proteções para
IntentSender. Os desenvolvedores precisam migrar da constante legadaMODE_BACKGROUND_ACTIVITY_START_ALLOWED. Em vez disso, adote controles granulares, comoMODE_BACKGROUND_ACTIVITY_START_ALLOW_IF_VISIBLE, que restringe inícios de atividade a cenários em que o app de chamada está visível, reduzindo significativamente a superfície de ataque. - Ferramentas de adoção:os desenvolvedores precisam usar o modo estrito e verificações de lint atualizadas para identificar padrões legados e garantir a preparação para requisitos futuros do SDK de destino.
Proteções de localhost
Para melhorar a segurança da plataforma e a privacidade do usuário, o Android 17
introduz uma nova permissão de instalação, a USE_LOOPBACK_INTERFACE. Essa mudança restringe a comunicação entre apps e perfis pela interface de loopback (por exemplo, 127.0.0.1 ou ::1), que antes era permitida implicitamente com a permissão INTERNET. Para apps direcionados ao
Android 17 ou versões mais recentes, as seguintes regras se aplicam:
- Consentimento mútuo obrigatório:a comunicação entre apps e perfis
agora é bloqueada por padrão. Para que uma conexão seja bem-sucedida, o app de envio
e o app de recebimento precisam declarar explicitamente a permissão
USE_LOOPBACK_INTERFACEnos respectivos manifestos. - Exceção de tráfego no app:a comunicação de loopback no mesmo app (comunicação no app) não é afetada e não exige essa nova permissão.
- Comportamento do SDK de destino:
- O app é direcionado ao Android 17 ou a versões mais recentes: a permissão
precisa ser solicitada explicitamente. Se ele estiver faltando, as operações de soquete (como
conexão TCP ou envio UDP) vão falhar, geralmente retornando um erro
EPERM(operação não permitida). - O app segmenta o nível 36 da API ou versões anteriores: a permissão é
tratada como uma permissão dividida no
INTERNET. Os apps destinados a níveis de API inferiores recebem essa permissão automaticamente se tiveremINTERNET.
- O app é direcionado ao Android 17 ou a versões mais recentes: a permissão
precisa ser solicitada explicitamente. Se ele estiver faltando, as operações de soquete (como
conexão TCP ou envio UDP) vão falhar, geralmente retornando um erro
- Aviso de compatibilidade:se um app receptor atualizar o destino para Android 17, mas não solicitar essa permissão, as conexões recebidas de outros apps serão rejeitadas, mesmo que o app de envio tenha como destino um nível de API mais baixo.
Ativar a CT por padrão
Se um app for direcionado ao Android 17 ou versões mais recentes, a transparência de certificado (CT) será ativada por padrão. No Android 16, a CT está disponível, mas os apps precisam ativar.
DCL nativo mais seguro: C
Se o app for direcionado ao Android 17 ou versões mais recentes, a proteção de carregamento dinâmico de código (DCL) mais seguro introduzida no Android 14 para arquivos DEX e JAR agora se estenderá às bibliotecas nativas.
Todos os arquivos nativos carregados usando System.load() precisam ser marcados como somente leitura.
Caso contrário, o sistema vai gerar UnsatisfiedLinkError.
Recomendamos que os apps evitem carregar código dinamicamente sempre que possível, porque isso aumenta muito o risco de comprometimento do app por injeção ou adulteração de código.
Formatos de dispositivos
O Android 17 inclui as seguintes mudanças para melhorar a experiência do usuário em vários tamanhos de dispositivos e formatos.
Mudanças na API Platform para ignorar restrições de orientação, redimensionamento e proporção em telas grandes (sw>=600 dp)
Introduzimos mudanças na API Platform no Android 16 para ignorar restrições de orientação, proporção e redimensionamento em telas grandes (sw >= 600 dp) para apps destinados ao nível 36 da API ou mais recente. Os desenvolvedores têm a opção de desativar essas mudanças com o SDK 36, mas essa desativação não estará mais disponível para apps destinados ao Android 17 ou mais recente.
Para mais informações, consulte Restrições de orientação e redimensionamento são ignoradas.