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 a seguir 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 expande vários recursos principais do sistema Android.

Mudanças no estado de pacotes interrompidos

A intenção do estado FLAG_STOPPED do pacote (que os usuários podem acionar em builds do AOSP pressionando um ícone de app por muito tempo e selecionando "Forçar Parar") sempre foi manter os apps nesse estado até que o usuário os remova explicitamente, iniciando o app diretamente ou interagindo indiretamente com ele (pela sharesheet ou um widget, selecionando o app como papel de parede animado etc.). No Android 15, atualizamos o comportamento do sistema para estar alinhado com esse comportamento pretendido. Os apps só podem ser removidos do estado de interrupção por uma ação direta ou indireta do usuário.

Para oferecer suporte ao comportamento pretendido, além das restrições atuais, o sistema também cancela todas as intenções pendentes quando o app entra no estado parado em um dispositivo com o Android 15. Quando as ações do usuário removem o app do estado parado, a transmissão ACTION_BOOT_COMPLETED é enviada ao app, oferecendo a oportunidade de registrar novamente todas as intents pendentes.

Chame o novo método ApplicationStartInfo.wasForceStopped() para confirmar se o app foi colocado no estado parado.

Suporte a tamanhos de página de 16 KB

Historicamente, o Android só oferece suporte a tamanhos de página de memória de 4 KB, o que desempenho de memória do sistema otimizado para a quantidade média de memória total que dispositivos Android normalmente tiveram. A partir do Android 15, o AOSP oferece suporte dispositivos configurados para usar um tamanho de página de 16 KB (16 KB) dispositivos). Se o app usa alguma biblioteca NDK diretamente ou indiretamente por meio de um SDK, você precisará recriar seu aplicativo para que ele funcionam nesses dispositivos de 16 KB.

À medida que os fabricantes continuam a construir dispositivos com quantidades na memória física (RAM), a maioria desses dispositivos adotará 16 KB tamanhos de página maiores) para otimizar o desempenho do dispositivo. Adicionando o suporte a dispositivos com tamanho de página de 16 KB permite que seu app seja executado nesses dispositivos. e ajuda seu app a se beneficiar do desempenho associado melhorias. Sem a recompilação, os apps podem não funcionar em dispositivos de 16 KB quando forem colocados em produção em versões futuras do Android.

Para ajudar você a adicionar a compatibilidade com seu app, oferecemos orientações sobre como verificar caso seu app seja afetado, como recriar o app (se aplicável) e como testá-lo na em um ambiente de 16 KB usando emuladores (incluindo o Android 15); imagens do sistema para o 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 é 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

私密空间是 Android 15 中推出的一项新功能,可让用户在设备上创建一个单独的空间,在额外的身份验证层保护下,防止敏感应用遭到窥探。由于私密空间中的应用具有受限的公开范围,因此某些类型的应用需要执行额外的步骤,才能查看和与用户私密空间中的应用互动。

所有应用

由于私密空间中的应用会保存在单独的用户资料中(类似于工作资料),因此应用不应假定其任何未位于主资料中的已安装副本都位于工作资料中。如果您的应用包含与工作资料应用相关的逻辑,并且做出了上述假设,则需要调整此逻辑。

医疗应用

当用户锁定私密空间时,私密空间中的所有应用都会停止运行,并且这些应用无法执行前台或后台活动,包括显示通知。此行为可能会严重影响安装在私密空间中的医疗应用的使用和功能。

私密空间设置体验会向用户发出警告,告知私密空间不适合需要执行关键前台或后台活动的应用,例如显示医疗应用发送的通知。不过,应用无法确定自己是否在私密空间中使用,因此无法在这种情况下向用户显示警告。

因此,如果您开发的是医疗应用,请检查此功能可能会对您的应用产生哪些影响,并采取适当的措施(例如告知用户不要在私密空间中安装您的应用),以免中断关键的应用功能。

启动器应用

如果您开发的是启动器应用,则必须执行以下操作,才能看到私密空间中的应用:

  1. 您的应用必须被指定为设备的默认启动器应用,即具有 ROLE_HOME 角色。
  2. 您的应用必须在应用的清单文件中声明 ACCESS_HIDDEN_PROFILES 普通权限。

声明 ACCESS_HIDDEN_PROFILES 权限的启动器应用必须处理以下私密空间用例:

  1. 您的应用必须为安装在私密空间中的应用提供单独的启动器容器。使用 getLauncherUserInfo() 方法确定要处理的用户个人资料类型。
  2. 用户必须能够隐藏和显示私密空间容器。
  3. 用户必须能够锁定和解锁私密空间容器。使用 requestQuietModeEnabled() 方法锁定(通过传递 true)或解锁(通过传递 false)私密空间。
  4. 在锁定状态下,私密空间容器中的任何应用都应不可见,也无法通过搜索等机制被发现。您的应用应为 ACTION_PROFILE_AVAILABLEACTION_PROFILE_UNAVAILABLE 广播注册接收器,并在私密空间容器的锁定或解锁状态发生变化时更新应用中的界面。这两种状态的广播都包含 EXTRA_USER,您的应用可以使用该常量来引用不公开个人资料的用户。

    您还可以使用 isQuietModeEnabled() 方法检查私密空间个人资料是否已锁定。

应用商店应用

私密空间包含一个“安装应用”按钮,用于启动隐式 intent 以将应用安装到用户的私密空间。为了让应用能够接收此隐式 intent,请在应用的清单文件中声明一个 <intent-filter>,并将 <category> 设为 CATEGORY_APP_MARKET

A fonte de emoji baseada em PNG foi removida

O arquivo de fonte de emoji legada (NotoColorEmojiLegacy.ttf) com base em PNG foi removido, deixando apenas o arquivo baseado em vetor. A partir do Android 13 (nível 33 da API), o arquivo de fonte de emoji usado pelo renderizador de emoji do sistema mudou de um arquivo baseado em PNG para um baseado em vetor. O sistema reteve o arquivo de fonte legada no Android 13 e 14 por motivos de compatibilidade. Assim, apps com renderizadores de fontes próprios podiam continuar usando o arquivo de fonte legada até que pudessem fazer upgrade.

Para verificar se o app foi afetado, procure referências ao arquivo NotoColorEmojiLegacy.ttf no código do app.

Você pode adaptar seu app de várias maneiras:

  • Use APIs da plataforma para renderização de texto. É possível renderizar texto em uma Canvas com suporte a bitmap e usá-la para receber uma imagem bruta, se necessário.
  • Adicione suporte a fontes COLRv1 ao app. A biblioteca de código aberto FreeType oferece suporte a COLRv1 na versão 2.13.0 e mais recentes.
  • Como último recurso, você pode agrupar o arquivo de fonte de emoji legado (NotoColorEmoji.ttf) no APK, mas, nesse caso, o app não terá as atualizações mais recentes de emoji. Para mais informações, consulte a página do projeto Noto Emoji no GitHub (em inglês).

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 de transferência enquanto outro app estava reproduzindo áudio e os limites de recursos fossem alcançados, o app não conseguiria abrir uma nova AudioTrack.

A partir do Android 15, quando um app solicita a reprodução direta ou de descarga e os limites de recurso são alcançados, o sistema invalida todos os objetos AudioTrack abertos que impedem o atendimento da nova solicitação de faixa.

As faixas de áudio diretas e de transferência geralmente são abertas para a reprodução de formatos de áudio compactados. Os casos de uso comuns para a reprodução de áudio direto incluem o streaming de áudio codificado por HDMI para uma TV. As faixas de transferência são geralmente 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

A partir do Android 15, a opção para desenvolvedores de animações de volta preditiva foi removida. Animações do sistema, como voltar à tela inicial, entre tarefas e atividades, agora aparecem para apps que ativaram o gesto de volta preditivo inteiramente ou em um nível de atividade. Se o app for afetado, realize as seguintes ações:

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

Widgets desativados quando o usuário interrompe um app

Se um usuário interromper um app em um dispositivo com o Android 15, o sistema desativará temporariamente todos os widgets do app. Os widgets estão esmaecidos, e o usuário não pode interagir com eles. Isso ocorre porque, a partir do Android 15, o sistema cancela todas as intents pendentes de um app quando ele é forçado a parar.

O sistema reativa esses widgets na próxima vez que o usuário abrir o app.

Para mais informações, consulte Mudanças no estado de pacotes interrompidos.

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

As explorações de projeção de tela expõem dados privados do usuário, como informações financeiras, porque os usuários não percebem que a tela do dispositivo está sendo compartilhada.

Para apps executados em dispositivos com o Android 15 QPR1 ou mais recente, um ícone grande e visível na barra de status alerta os usuários sobre qualquer projeção de tela em andamento. Os usuários podem tocar no ícone para impedir que a tela seja compartilhada, transmitida ou gravada. Além disso, a projeção da tela é interrompida automaticamente quando a tela do dispositivo é bloqueada.

Bloco da barra de status para compartilhamento de tela, transmissão e gravação.

Verificar se o app é afetado

Por padrão, o app inclui o ícone da barra de status e suspende automaticamente a projeção de tela quando a tela de bloqueio é ativada.

Para saber mais sobre como testar seu app para esses casos de uso, consulte Ícone da barra de status e parada automática.

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 usar 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.