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 de targetSdkVersion
. Teste seu app e modifique-o
conforme necessário para apoiá-las adequadamente, quando aplicável.
Consulte também a lista de mudanças de comportamento que afetam apenas apps. destinados ao Android 15.
Principal recurso
O Android 15 modifica ou expande vários recursos principais do sistema Android.
Alterações no estado de pacote interrompido
The intention of the package FLAG_STOPPED
state (which users
can engage in AOSP builds by long-pressing an app icon and selecting "Force
Stop") has always been to keep apps in this state until the user explicitly
removes the app from this state by directly launching the app or indirectly
interacting with the app (through the sharesheet or a widget, selecting the app
as live wallpaper, etc.). In Android 15, we are updating the behavior of the
system to be aligned with this intended behavior. Apps should only be removed
from the stopped state through direct or indirect user action.
To support the intended behavior, in addition to the existing restrictions, the
system also cancels all pending intents when the app enters the
stopped state on a device running Android 15. When the user's actions remove the
app from the stopped state, the ACTION_BOOT_COMPLETED
broadcast is delivered to the app providing an opportunity to re-register any
pending intents.
You can call the new
ApplicationStartInfo.wasForceStopped()
method to confirm whether the app was put into the stopped state.
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
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
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 que alguns apps sejam compatíveis com o espaço privado
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:
- Seu app precisa ser atribuído à tela de início padrão do dispositivo. Isso
é ter o papel
ROLE_HOME
. - 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:
- 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. - O usuário precisa conseguir ocultar e mostrar o contêiner do espaço privado.
- O usuário precisa conseguir bloquear e desbloquear o contêiner do espaço privado. Usar
o método
requestQuietModeEnabled()
para bloquear (por passandotrue
) ou desbloqueie (transmitindofalse
) o espaço privado. 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
eACTION_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 incluemEXTRA_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
.
Fonte de emoji baseada em PNG removida
O arquivo legado de fonte de emojis baseada em PNG (NotoColorEmojiLegacy.ttf
) foi
deixando apenas o arquivo baseado em vetor. Do Android 13 em diante (API)
nível 33), o arquivo de fonte de emojis usado pelo renderizador de emojis do sistema mudou de um
arquivo baseado em PNG para um arquivo vetorial. O sistema manteve
o arquivo de fonte legado no Android 13 e 14 por motivos de compatibilidade,
os apps com os próprios renderizadores de fonte podem continuar usando o arquivo de fonte legado.
até conseguirem fazer upgrade.
Para verificar se o app foi afetado, pesquise no código dele as referências aos
NotoColorEmojiLegacy.ttf
.
Há várias maneiras de adaptar o app:
- Usar APIs da plataforma para renderização de texto. É possível renderizar texto em uma
Canvas
e use isso para conseguir 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 alto.
- Como último recurso, você pode agrupar o arquivo de fonte de emojis legado
(
NotoColorEmoji.ttf
) ao seu APK, mas, nesse caso, seu app não terá as atualizações mais recentes de emojis. Para mais informações, consulte o projeto Noto Emoji do GitHub .
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 apps.
A reprodução de áudio direta e descarregada agora invalida faixas de áudio diretas ou descarregadas 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 visam criar uma versão mais consistente, experiência do usuário intuitiva.
Animações de volta preditiva ativadas para apps em que o recurso foi ativado
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 porFragmentManager
ou pelo componente Navigation.
Widgets desativados quando o usuário força o fechamento de um app
If a user force-stops an app on a device running Android 15, the system temporarily disables all the app's widgets. The widgets are grayed out, and the user cannot interact with them. This is because beginning with Android 15, the system cancels all an app's pending intents when the app is force-stopped.
The system re-enables those widgets the next time the user launches the app.
For more information, see Changes to package stopped state.
Suspensões de uso
A cada versão, APIs específicas do Android podem se tornar obsoletas ou ter que ser refatorado para fornecer uma melhor experiência ao desenvolvedor ou oferecer suporte a nova plataforma capabilities. Nesses casos, descontinuamos oficialmente as APIs obsoletas e direcionar os desenvolvedores para APIs alternativas.
Descontinuação significa que encerramos o suporte oficial para as APIs, mas elas ainda continuam disponíveis para os desenvolvedores. Para saber mais sobre eventos descontinuações nesta versão do Android, consulte a página de descontinuações.