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 direcionados ao Android 17 (nível 37 da API) ou mais recente recebem uma nova implementação sem bloqueio de android.os.MessageQueue. A nova implementação melhora o desempenho e reduz os frames perdidos, mas pode interromper clientes que refletem sobre campos e métodos particulares de MessageQueue.
Para mais informações, incluindo estratégias de mitigação, consulte as orientações sobre mudanças de comportamento do MessageQueue.
Os campos finais estáticos não podem mais ser modificados
Apps running on Android 17 or higher that target
Android 17 (API level 37) or higher cannot change static final fields. If
an app attempts to change a static final field by using reflection, it will
cause an IllegalAccessException. Attempting to modify one of these fields
through JNI APIs (such as SetStaticLongField()) will cause the app to crash.
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 um commit.
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. Os apps destinados ao Android 17 (nível 37 da API) 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.
Privacidade
O Android 17 inclui as seguintes mudanças para melhorar a privacidade do usuário.
Permissão de rede local necessária para apps destinados ao Android 17
| Disponível para teste? (build obrigatório) | Sim (Android 17 ou mais recente) |
|---|---|
Requer a mudança de targetSDKVersion? (nível da API) |
Sim (nível da API 37) Consulte a documentação do atributo de manifesto para mais informações sobre esse valor. |
Android 17 introduces the ACCESS_LOCAL_NETWORK runtime permission
to protect users from unauthorized local network access. Because this falls
under the existing NEARBY_DEVICES permission group, users who have already
granted other NEARBY_DEVICES permissions aren't prompted again. This new
requirement prevents malicious apps from exploiting unrestricted local network
access for covert user tracking and fingerprinting. By declaring and requesting
this permission, your app can discover and connect to devices on the local area
network (LAN), such as smart home devices or casting receivers.
Apps targeting Android 17 (API level 37) or higher now have two paths to maintain communication with LAN devices: Adopt system-mediated, privacy-preserving device pickers to skip the permission prompt, or explicitly request this new permission at runtime to maintain local network communication.
For more information, see the Local network permission documentation.
Ocultar senhas de dispositivos físicos
If an app targets Android 17 (API level 37) or higher and the user is using
a physical input device (for example, an external keyboard), the Android
operating system applies the new show_passwords_physical setting to all
characters in the password field. By default, that setting hides all password
characters.
The Android system shows the last-typed password character to help the user see if they mistyped the password. However, this is much less necessary with larger external keyboards. In addition, devices with external keyboards often have larger displays, which increases the danger of someone seeing the typed password.
If the user is using the device's touchscreen, the system applies the new
show_passwords_touch setting.
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.
Ativar a CT por padrão
Se um app for destinado ao Android 17 (nível 37 da API) ou mais recente, a transparência de certificados (CT, na sigla em inglês) será ativada por padrão. No Android 16, a CT está disponível, mas os apps precisam ativar o recurso.
DCL nativo mais seguro: C
Se o app for direcionado ao Android 17 (nível 37 da API) 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 será estendida a 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)
我们在 Android 16 中引入了平台 API 变更,以 忽略屏幕方向、 宽高比和尺寸调整能力限制(针对大型屏幕,sw >= 600dp),适用于面向 API 级别 36 或更高级别的应用。开发者可以选择使用 SDK 36 退出这些变更,但对于面向 Android 17(API 级别 37)或更高级别的应用,此退出选项将不再可用。
如需了解详情,请参阅忽略屏幕方向和尺寸调整能力限制。