Mudanças de comportamento: todos os apps

A plataforma Android 15 inclui mudanças de comportamento que podem afetar seu app. As mudanças de comportamento abaixo se aplicam a todos os apps executados no Android 15, independente da targetSdkVersion. Teste seu app e modifique-o conforme necessário para ficar compatível com essas mudanças, quando aplicável.

Consulte também a lista de mudanças de comportamento que afetam apenas os apps destinados ao Android 15.

Principal recurso

O Android 15 modifica ou expande vários recursos principais do sistema Android.

Mudanças no estado de pacote interrompido

A intenção do estado do pacote FLAG_STOPPED (que os usuários podem interagir em builds do AOSP ao tocar e manter pressionado um ícone do app e selecionar "Forçar Parar") sempre foi manter os apps nesse estado até que o usuário o remova explicitamente desse estado, iniciando o app diretamente ou interagindo indiretamente com o app (por meio do Sharesheet ou de um widget, selecionando o app como plano de fundo interativo etc.). No Android 15, estamos atualizando o comportamento do sistema para que ele fique alinhado a esse comportamento pretendido. Os apps só podem ser removidos do estado interrompido com ação direta ou indireta do usuário.

Para oferecer suporte ao comportamento pretendido, além das restrições já existentes, o sistema também vai cancelar todas as intents pendentes quando o app entrar no estado interrompido no Android 15. Quando as ações do usuário removem o app do estado interrompido, a transmissão ACTION_BOOT_COMPLETED será entregue ao app, oferecendo uma oportunidade de registrar novamente as intents pendentes.

Você pode chamar o novo método ApplicationStartInfo.wasForceStopped() para confirmar se o app foi colocado no estado interrompido.

Suporte para tamanhos de página de 16 KB

Historicamente, o Android oferecia suporte apenas a tamanhos de página de memória de 4 KB, o que otimizava o desempenho da memória do sistema para a quantidade média de memória total que os dispositivos Android normalmente tinham. No Android 15 e versões mais recentes, o Android oferece suporte a dispositivos configurados para usar um tamanho de página de 16 KB (dispositivos de 16 KB).

À medida que os fabricantes continuam a criar dispositivos com quantidades maiores de memória física (RAM), muitos deles provavelmente serão configurados com tamanhos de página de 16 KB (e, em algum momento, maiores) para otimizar o desempenho do dispositivo. Adicionar suporte a dispositivos de 16 KB permite que seu app seja executado nesses dispositivos e o ajuda a aproveitar as melhorias de desempenho associadas. Para ajudar você com isso, orientamos sobre como verificar se o app foi afetado, como recriar o app (se aplicável) e como testar o app em um ambiente de 16 KB usando emuladores e dispositivos físicos.

Benefícios e ganhos de desempenho

Dispositivos configurados com tamanhos de página de 16 KB usam um pouco mais de memória em média, mas também recebem várias melhorias de desempenho para o sistema e os apps:

  • Menor tempo de inicialização do app enquanto o sistema está sob pressão de memória: 3,16% menor, em média, com melhorias mais significativas (até 30%) para alguns apps testados.
  • Consumo de energia reduzido durante a inicialização do app: em média, 4,56% de redução
  • Lançamento mais rápido da câmera: inicializações a quente 4,48% mais rápidas, em média, e inicializações a frio 6,60% mais rápidas, em média.
  • Melhoria no tempo de inicialização do sistema: melhoria de 1,5% (aproximadamente 0,8 segundo) em média.

Essas melhorias são baseadas em nossos testes iniciais, e os resultados em dispositivos reais provavelmente serão diferentes. Forneceremos análises adicionais de ganhos potenciais para apps à medida que continuarmos nossos testes.

Verificar se o app vai ser afetado

e

Se o app usar código nativo, recrie-o com suporte a dispositivos de 16 KB. Se você não tem certeza se o app usa código nativo, use o APK Analyzer para identificar se há algum código nativo.

Se o app usa apenas código escrito na linguagem de programação Java ou Kotlin, incluindo bibliotecas ou SDKs, ele já oferece suporte a dispositivos de 16 KB. No entanto, recomendamos que você teste seu app em um ambiente de 16 KB para verificar se não há regressões inesperadas no comportamento dele.

Mudanças necessárias para alguns apps compatíveis com o espaço particular

O Espaço privado é um novo recurso do Android 15 que permite que os usuários criem um espaço separado no dispositivo em que podem manter apps sensíveis longe de olhos curiosos, sob uma camada adicional de autenticação. Como apps no espaço privado têm visibilidade restrita, alguns tipos de apps precisam tomar medidas adicionais para poder ver e interagir com apps no espaço privado de um usuário.

Todos os apps

Como os apps no espaço privado são mantidos em um perfil de usuário separado, semelhante aos perfis de trabalho, os apps não podem presumir que todas as cópias instaladas do app que não estejam no perfil principal estejam no perfil de trabalho. Se o app tiver lógica relacionada a apps de perfil de trabalho que fazem essa suposição, você precisará ajustar essa lógica.

Apps da tela de início

Se você desenvolver um app de tela de início, faça o seguinte para que os apps no espaço privado fiquem visíveis:

  1. Seu app precisa ser atribuído como o app de tela de início padrão do dispositivo, ou seja, ter o papel ROLE_HOME.
  2. Seu app precisa declarar a permissão normal ACCESS_HIDDEN_PROFILES no arquivo de manifesto dele.

Os apps de tela de início que declaram a permissão ACCESS_HIDDEN_PROFILES precisam processar os seguintes casos de uso de espaço particular:

  1. Seu app precisa ter um contêiner na tela de início separado para apps instalados no espaço particular.
  2. O usuário precisa conseguir ocultar e mostrar o contêiner do Espaço particular.
  3. O usuário precisa ser capaz de bloquear e desbloquear o contêiner do Espaço particular.
  4. Enquanto o dispositivo estiver bloqueado, nenhum app no contêiner do espaço privado vai ficar visível ou detectável por mecanismos como a pesquisa.
  5. Se o usuário bloquear o dispositivo enquanto o contêiner do espaço privado estiver desbloqueado, o contêiner do espaço privado também precisará estar bloqueado.

Apps da app store

O espaço privado inclui um botão "Instalar apps", que inicia uma intent implícita para instalar apps no espaço privado do usuário. Para que o app receba essa intent implícita, declare um <intent-filter> no arquivo de manifesto do app com um <category> de CATEGORY_APP_MARKET.

Aumento da versão mínima do SDK de destino de 23 para 24

O Android 15 se baseia nas mudanças feitas no Android 14 e amplia ainda mais essa segurança. No Android 15, não é possível instalar apps com uma targetSdkVersion anterior à 24. Exigir que os apps atendam a níveis modernos de API ajuda a garantir melhor segurança e privacidade.

Geralmente, um malware é direcionado a níveis mais baixos de API para contornar as proteções de segurança e privacidade introduzidas em versões mais recentes do Android. Por exemplo, alguns apps de malware usam uma targetSdkVersion de 22 para evitar serem submetidos ao modelo de permissão de execução apresentado em 2015 pelo Android 6.0 Marshmallow (nível 23 da API). Essa mudança do Android 15 dificulta que malwares evitem melhorias de segurança e privacidade. A tentativa de instalar um app direcionado a um nível de API anterior resulta em uma falha na instalação, com uma mensagem como esta aparecendo no Logcat:

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7

Em dispositivos que passam por upgrade para o Android 15, todos os apps com uma targetSdkVersion anterior à 24 permanecem instalados.

Se você precisar testar um app destinado a um nível de API mais antigo, use o seguinte comando adb:

adb install --bypass-low-target-sdk-block FILENAME.apk

Câmera e mídia

O Android 15 faz as mudanças abaixo no comportamento da câmera e da mídia para todos os apps.

A reprodução de áudio direta e descarregada agora invalida faixas de áudio diretas ou descarregadas previamente abertas quando os limites de recursos são atingidos.

Antes do Android 15, se um app solicitasse a reprodução de áudio direta ou descarregamento enquanto outro app estivesse tocando áudio e os limites de recursos fossem atingidos, o app não conseguia abrir uma nova AudioTrack.

No Android 15 e versões mais recentes, quando um app solicita a reprodução direta ou descarregamento e os limites de recursos são atingidos, o sistema invalida todos os objetos AudioTrack abertos no momento que impedem o preenchimento da nova solicitação de faixa.

As faixas de áudio direta e de descarga geralmente são abertas para reprodução de formatos de áudio compactados. Casos de uso comuns para tocar áudio direto incluem streaming de áudio codificado por HDMI para uma TV. As faixas de descarregamento normalmente são usadas para reproduzir áudio compactado em um dispositivo móvel com aceleração de DSP de hardware.

Experiência do usuário e interface do sistema

O Android 15 inclui algumas mudanças que se destinam a criar uma experiência do usuário mais consistente e intuitiva.

Animações de volta preditiva ativadas para apps que ativaram

No Android 15 e versões mais recentes, a opção de animações de volta preditiva foi removida. As animações do sistema, como voltar à tela inicial, entre tarefas e entre atividades, agora aparecem para apps que ativaram o gesto de volta preditivo inteiramente ou no nível da atividade. Se o app for afetado, faça o seguinte:

  • Verifique se o app foi migrado corretamente para usar o gesto de volta previsto.
  • Verifique se as transições de fragmento funcionam com a navegação de volta preditiva.
  • Migrar das transições de animação e framework e usar transições Animator e androidx.
  • Migrar das backstacks que o FragmentManager não conhece. Use backstacks gerenciadas por FragmentManager ou pelo componente Navigation.

Suspensões de uso

A cada versão, APIs específicas do Android podem se tornar obsoletas ou precisar ser refatoradas para oferecer uma experiência melhor ao desenvolvedor ou oferecer suporte a novos recursos da plataforma. Nesses casos, descontinuamos oficialmente as APIs obsoletas e direcionamos os desenvolvedores a APIs alternativas.

Descontinuação significa que encerramos o suporte oficial às APIs, mas elas continuarão disponíveis para os desenvolvedores. Para saber mais sobre descontinuações importantes nesta versão do Android, consulte a página de descontinuações.