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
Devices configured with 16 KB page sizes use slightly more memory on average, but also gain various performance improvements for both the system and apps:
- Lower app launch times while the system is under memory pressure: 3.16% lower on average, with more significant improvements (up to 30%) for some apps that we tested
- Reduced power draw during app launch: 4.56% reduction on average
- Faster camera launch: 4.48% faster hot starts on average, and 6.60% faster cold starts on average
- Improved system boot time: improved by 8% (approximately 950 milliseconds) on average
These improvements are based on our initial testing, and results on actual devices will likely differ. We'll provide additional analysis of potential gains for apps as we continue our testing.
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
Private space is a new feature in Android 15 that lets users create a separate space on their device where they can keep sensitive apps away from prying eyes, under an additional layer of authentication. Because apps in the private space have restricted visibility, some types of apps need to take additional steps to be able to see and interact with apps in a user's private space.
All apps
Because apps in the private space are kept in a separate user profile, similar to work profiles, apps shouldn't assume that any installed copies of their app that aren't in the main profile are in the work profile. If your app has logic related to work profile apps that make this assumption, you'll need to adjust this logic.
Medical apps
When a user locks the private space, all apps in the private space are stopped, and those apps can't perform foreground or background activities, including showing notifications. This behavior might critically impact the use and function of medical apps installed in the private space.
The private space setup experience warns users that the private space is not suitable for apps that need to perform critical foreground or background activities, such as showing notifications from medical apps. However, apps can't determine whether or not they're being used in the private space, so they can't show a warning to the user for this case.
For these reasons, if you develop a medical app, review how this feature might impact your app and take appropriate actions—such as informing your users not to install your app in the private space—to avoid disrupting critical app capabilities.
Launcher apps
If you develop a launcher app, you must do the following before apps in the private space will be visible:
- Your app must be assigned as the default launcher app for the device—that
is, possessing the
ROLE_HOME
role. - Your app must declare the
ACCESS_HIDDEN_PROFILES
normal permission in your app's manifest file.
Launcher apps that declare the ACCESS_HIDDEN_PROFILES
permission must handle
the following private space use cases:
- Your app must have a separate launcher container for apps installed in the
private space. Use the
getLauncherUserInfo()
method to determine which type of user profile is being handled. - The user must be able to hide and show the private space container.
- The user must be able to lock and unlock the private space container. Use
the
requestQuietModeEnabled()
method to lock (by passingtrue
) or unlock (by passingfalse
) the private space. While locked, no apps in the private space container should be visible or discoverable through mechanisms such as search. Your app should register a receiver for the
ACTION_PROFILE_AVAILABLE
andACTION_PROFILE_UNAVAILABLE
broadcasts and update the UI in your app when the locked or unlocked state of the private space container changes. Both of these broadcasts includeEXTRA_USER
, which your app can use to refer to the private profile user.You can also use the
isQuietModeEnabled()
method to check whether the private space profile is locked or not.
App store apps
The private space includes an "Install Apps" button that launches an implicit
intent to install apps into the user's private space. In order for your app to
receive this implicit intent, declare an <intent-filter>
in your app's manifest file with a <category>
of
CATEGORY_APP_MARKET
.
A fonte de emoji baseada em PNG foi 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 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
Before Android 15, if an app requested direct or offload audio playback while
another app was playing audio and the resource limits were reached, the app
would fail to open a new AudioTrack
.
Beginning with Android 15, when an app requests direct or offload
playback and the resource
limits are reached, the system invalidates any currently open
AudioTrack
objects which prevent fulfilling the new track request.
(Direct and offload audio tracks are typically opened for playback of compressed audio formats. Common use-cases for playing direct audio include streaming encoded audio over HDMI to a TV. Offload tracks are typically used to play compressed audio on a mobile device with hardware DSP acceleration.)
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
Beginning in Android 15, the developer option for predictive back animations has been removed. System animations such as back-to-home, cross-task, and cross-activity now appear for apps that have opted in to the predictive back gesture either entirely or at an activity level. If your app is affected, take the following actions:
- Ensure that your app has been properly migrated to use the predictive back gesture.
- Ensure that your fragment transitions work with predictive back navigation.
- Migrate away from animation and framework transitions and use animator and androidx transitions instead.
- Migrate away from back stacks that
FragmentManager
doesn't know about. Use back stacks managed byFragmentManager
or by the Navigation component instead.
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.