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 quando executados no Android 15, independente da targetSdkVersion. Teste o app e modifique-o conforme necessário para oferecer suporte a 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 amplia vários recursos principais do sistema Android.

Mudanças no estado de pacotes interrompidos

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 cancela todas as intents pendentes quando o app entra no estado interrompido em um dispositivo com o Android 15. Quando as ações do usuário removem o app do estado interrompido, a transmissão ACTION_BOOT_COMPLETED é entregue ao app, oferecendo uma oportunidade de registrar novamente qualquer intent pendente.

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

Suporte a tamanhos de página de 16 KB

Historically, Android has only supported 4 KB memory page sizes, which has optimized system memory performance for the average amount of total memory that Android devices have typically had. Beginning with Android 15, AOSP supports devices that are configured to use a page size of 16 KB (16 KB devices). If your app uses any NDK libraries, either directly or indirectly through an SDK, then you will need to rebuild your app for it to work on these 16 KB devices.

As device manufacturers continue to build devices with larger amounts of physical memory (RAM), many of these devices will adopt 16 KB (and eventually greater) page sizes to optimize the device's performance. Adding support for 16 KB page size devices enables your app to run on these devices and helps your app benefit from the associated performance improvements. Without recompiling, apps might not work on 16 KB devices when they are productionized in future Android releases.

To help you add support for your app, we've provided guidance on how to check if your app is impacted, how to rebuild your app (if applicable), and how to test your app in a 16 KB environment using emulators (including Android 15 system images for the Android Emulator).

Benefícios e ganhos de desempenho

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

  • Tempos de inicialização do app mais rápidos enquanto o sistema está sob pressão de memória: 3,16% mais baixos em média, com melhorias mais significativas (até 30%) em alguns apps testados.
  • Redução do consumo de energia durante o lançamento do app: redução média de 4,56%
  • Lançamento mais rápido da câmera: 4,48% mais rápido em média e 6,60% mais rápido em média
  • Tempo de inicialização do sistema melhorado: melhoria de 8% (aproximadamente 950 milissegundos) em média

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

Verificar se o app vai ser afetado

Se o app usar algum código nativo, recompile o app com suporte a dispositivos de 16 KB. Se você não tiver certeza se o app usa código nativo, use o APK Analyzer para identificar se há algum código nativo e verifique o alinhamento dos segmentos ELF para encontrar bibliotecas compartilhadas.

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 do app.

Mudanças necessárias para que alguns apps ofereçam suporte ao espaço particular

O espaço privado é um novo recurso do Android 15 que permite que os usuários criar um espaço separado no dispositivo para manter apps confidenciais longe de olhar curioso, sob uma camada adicional de autenticação. Como os apps no o espaço privado tem visibilidade restrita, alguns tipos de aplicativos precisam outras etapas para poder ver e interagir com apps no modo particular espaço.

Todos os apps

Como os aplicativos 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 as instalações cópias do app que não estão no perfil principal ficam no perfil de trabalho. Se seu app tem uma lógica relacionada a apps do perfil de trabalho que fazem essa suposição, você vai precisar ajustar essa lógica.

Apps de medicina

Quando um usuário bloqueia o espaço privado, todos os apps nele são interrompidos. e esses apps não poderão realizar atividades em primeiro ou segundo plano, incluindo mostrando notificações. Esse comportamento pode impactar criticamente o uso e a função de apps médicos instalados no espaço privado.

A experiência de configuração do espaço privado avisa aos usuários que ele não está adequado para apps que precisam executar tarefas essenciais em primeiro ou segundo plano atividades, como mostrar notificações de apps médicos. No entanto, os aplicativos não poderão determinar se estão ou não sendo usados no espaço privado, por isso, não é possível mostrar um aviso ao usuário para esse caso.

Por esses motivos, se você desenvolve um app de medicina, revise como esse recurso pode afetar seu app e tomar as medidas apropriadas, como informar os usuários para não instale o app no espaço privado, para evitar interrupções importantes recursos.

Apps da tela de início

Se você desenvolver um app de tela de início, faça o seguinte antes dos apps na o espaço privado ficará visível:

  1. Seu app precisa ser atribuído à tela de início padrão do dispositivo. Isso é ter o papel ROLE_HOME.
  2. O app precisa declarar a ACCESS_HIDDEN_PROFILES permissão normal no arquivo de manifesto do app.

Apps de inicialização que declaram a permissão ACCESS_HIDDEN_PROFILES precisam gerenciar nos seguintes casos de uso de espaço privado:

  1. Seu app precisa ter um contêiner da tela de início separado para os apps instalados na espaço privado. Use o método getLauncherUserInfo() para determinar que tipo de perfil de usuário está sendo tratado.
  2. O usuário precisa conseguir ocultar e mostrar o contêiner do espaço privado.
  3. O usuário precisa conseguir bloquear e desbloquear o contêiner do espaço privado. Usar o método requestQuietModeEnabled() para bloquear (por passando true) ou desbloqueie (transmitindo false) o espaço privado.
  4. Enquanto estiver bloqueado, nenhum app no contêiner do espaço privado ficará visível ou detectáveis por mecanismos como a pesquisa. Seu aplicativo deve registrar um receptor para o ACTION_PROFILE_AVAILABLE e ACTION_PROFILE_UNAVAILABLE transmite e atualiza interface no app quando o estado bloqueado ou desbloqueado do espaço privado alterações no contêiner. Essas duas transmissões incluem EXTRA_USER, que o app pode usar para se referir ao usuário de perfil particular.

    Também é possível usar o método isQuietModeEnabled() para: verifica se o perfil do espaço privado está bloqueado ou não.

Apps da app store

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

A fonte de emoji baseada em PNG foi removida

The legacy, PNG-based emoji font file (NotoColorEmojiLegacy.ttf) has been removed, leaving just the vector-based file. Beginning with Android 13 (API level 33), the emoji font file used by the system emoji renderer changed from a PNG-based file to a vector based file. The system retained the legacy font file in Android 13 and 14 for compatibility reasons, so that apps with their own font renderers could continue to use the legacy font file until they were able to upgrade.

To check if your app is affected, search your app's code for references to the NotoColorEmojiLegacy.ttf file.

You can choose to adapt your app in a number of ways:

  • Use platform APIs for text rendering. You can render text to a bitmap-backed Canvas and use that to get a raw image if necessary.
  • Add COLRv1 font support to your app. The FreeType open source library supports COLRv1 in version 2.13.0 and higher.
  • As a last resort, you can bundle the legacy emoji font file (NotoColorEmoji.ttf) into your APK, although in that case your app will be missing the latest emoji updates. For more information, see the Noto Emoji GitHub project page.

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

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

O malware geralmente tem como alvo níveis mais baixos de API para contornar a segurança e a privacidade de segurança que foram 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. Tentar instalar um app destinado a uma API anterior resulta em falha na instalação, com uma mensagem como a seguinte que aparecem no Logcat:

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

Em dispositivos que fizerem upgrade para o Android 15, todos os apps com uma targetSdkVersion anterior de 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

Segurança e privacidade

O Android 15 apresenta medidas robustas para combater a fraude de senha única (OTP, na sigla em inglês) e proteger o conteúdo sensível do usuário, com foco em aumentar a proteção do serviço de listener de notificações e do compartilhamento de tela. As principais melhorias incluem a edição de OTPs de notificações acessíveis a apps não confiáveis, o ocultamento de notificações durante o compartilhamento de tela e a proteção de atividades do app quando OTPs são publicadas. O objetivo dessas mudanças é proteger o conteúdo sensível do usuário contra atores não autorizados.

Os desenvolvedores precisam estar cientes do seguinte para garantir que os apps sejam compatíveis com as mudanças no Android 15:

OTP Redaction

O Android vai impedir que apps não confiáveis que implementam um NotificationListenerService leiam conteúdo não editado de notificações em que um OTP foi detectado. Os apps confiáveis, como as associações de gerenciador de dispositivos secundário, estão isentos dessas restrições.

Proteção de compartilhamento de tela

  • O conteúdo da notificação é ocultado durante as sessões de compartilhamento de tela para preservar a privacidade do usuário. Se o app implementar setPublicVersion(), o Android vai mostrar a versão pública da notificação, que serve como uma notificação de substituição em contextos não seguros. Caso contrário, o conteúdo da notificação será editado sem nenhum outro contexto.
  • Conteúdo sensível, como a entrada de senha, fica oculto para os espectadores remotos para evitar a revelação de informações sensíveis do usuário.
  • As atividades de apps que postam notificações durante o compartilhamento de tela em que um OTP foi detectado serão ocultas. O conteúdo do app fica oculto do espectador remoto quando é iniciado.
  • Além da identificação automática de campos sensíveis do Android, os desenvolvedores podem marcar manualmente partes do app como sensíveis usando setContentSensitivity, que é ocultado dos espectadores remotos durante o compartilhamento de tela.
  • Os desenvolvedores podem ativar a opção Desativar proteções do compartilhamento de tela em Opções do desenvolvedor para serem dispensados das proteções do compartilhamento de tela para fins de demonstração ou teste. O gravador de tela padrão do sistema está isento dessas mudanças, já que as gravações permanecem no dispositivo.

Câmera e mídia

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

A reprodução de áudio direto e de transferência invalida as faixas de áudio direto ou de transferência abertas anteriormente 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 têm como objetivo criar uma experiência do usuário mais consistente e intuitiva.

Animações de volta preditiva ativadas para apps que ativaram a opção

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.

Widgets desativados quando o usuário interrompe um app

Se um usuário forçar o fechamento de um app em um dispositivo com o Android 15, o sistema desativará temporariamente todos os widgets do app. Os widgets ficam esmaecidos, e o usuário não consegue interagir com eles. Isso ocorre porque, no Android 15 e versões mais recentes, o sistema cancela todas as intents pendentes de um app com fechamento forçado.

O sistema reativará esses widgets na próxima vez que o usuário iniciar o aplicativo.

Para mais informações, consulte Mudanças no estado de pacote interrompido.

O ícone da barra de status de projeção de mídia alerta os usuários sobre o compartilhamento, a transmissão e a gravação de tela

Screen projection exploits expose private user data such as financial information because users don't realize their device screen is being shared. Android has until now shown screen cast and screen record icons on the status bar, but the icons are small and often overlooked. Also, stopping screen sharing or recording is cumbersome because controls are in Quick Settings.

Android 15 introduces a new status bar chip that is large and prominent, which should alert users to any in-progress screen projection. Users can tap the chip to stop their screen from being shared, cast, or recorded.

To provide an intuitive user experience, screen projection now automatically stops when the device screen is locked.

Benefits and performance gains

The new media projection status bar chip enhances the user experience as follows:

  • Alerts users to in-progress screen sharing, casting, or recording
  • Enable users to terminate screen projection by tapping the chip

Automatic suspension of screen projection when the device screen is locked ensures user privacy.

Check if your app is impacted

By default, your app includes the new status bar chip and automatically suspends screen projection when the lock screen activates. Test your app by implementing the onStop() method of the MediaProjection.Callback. Verify that your app responds appropriately when the screen projection stops as a result of the user tapping the status bar chip or when the lock screen activates.

Suspensões de uso

A cada versão, algumas APIs específicas do Android podem se tornar obsoletas ou precisar ser refatoradas para fornecer uma melhor experiência aos desenvolvedores ou oferecer compatibilidade com as novas funcionalidades da plataforma. Nesses casos, descontinuamos oficialmente as APIs obsoletas e direcionamos os desenvolvedores para APIs alternativas.

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