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

软件包 FLAG_STOPPED 状态(用户可以通过长按应用图标并选择“强行停止”来参与 AOSP build)一直是为了让应用保持此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、选择应用作为动态壁纸等)将应用从此状态明确移除。在 Android 15 中,我们将更新系统的行为,以符合这一预期行为。只能通过用户直接或间接操作将应用从停止状态中移除。

为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态中移除时,系统会向应用传递 ACTION_BOOT_COMPLETED 广播,让用户有机会重新注册任何待处理的 intent。

您可以调用新的 ApplicationStartInfo.wasForceStopped() 方法来确认应用是否已置于停止状态。

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

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:

  1. Your app must be assigned as the default launcher app for the device—that is, possessing the ROLE_HOME role.
  2. 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:

  1. 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.
  2. The user must be able to hide and show the private space container.
  3. The user must be able to lock and unlock the private space container. Use the requestQuietModeEnabled() method to lock (by passing true) or unlock (by passing false) the private space.
  4. 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 and ACTION_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 include EXTRA_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.

Fonte de emoji baseada em PNG removida

基于 PNG 的旧版表情符号字体文件 (NotoColorEmojiLegacy.ttf) 已 只留下基于矢量的文件从 Android 13 (API) 开始 级别 33),系统表情符号渲染程序使用的表情符号字体文件已从 PNG 文件转换为矢量文件。系统保留了 Android 13 和 14 中的旧版字体文件。 具有自己的字体渲染程序的应用可以继续使用旧版字体文件 直到能够升级为止

要查看您的应用是否会受到影响,请在应用的代码中搜索对 NotoColorEmojiLegacy.ttf 文件。

您可以选择以多种方式调整您的应用:

  • 使用平台 API 进行文本渲染。您可以将文本渲染为基于位图的 Canvas,并在必要时使用它获取原始图像。
  • 向您的应用添加 COLRv1 字体支持。FreeType 开源库 在版本 2.13.0 中支持 COLRv1,并且 。
  • 万不得已时,可以将旧版表情符号字体文件打包 (NotoColorEmoji.ttf) 复制到您的 APK 中, 但在这种情况下,您的应用将缺少最新的表情符号更新。对于 请参阅 Noto 表情符号 GitHub 项目 页面

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

Android 15 builds on the the changes that were made in Android 14 and extends this security further. In Android 15, apps with a targetSdkVersion lower than 24 can't be installed. Requiring apps to meet modern API levels helps to ensure better security and privacy.

Malware often targets lower API levels in order to bypass security and privacy protections that have been introduced in higher Android versions. For example, some malware apps use a targetSdkVersion of 22 to avoid being subjected to the runtime permission model introduced in 2015 by Android 6.0 Marshmallow (API level 23). This Android 15 change makes it harder for malware to avoid security and privacy improvements. Attempting to install an app targeting a lower API level results in an installation failure, with a message like the following one appearing in Logcat:

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

On devices upgrading to Android 15, any apps with a targetSdkVersion lower than 24 remain installed.

If you need to test an app targeting an older API level, use the following ADB command:

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

从 Android 15 开始,移除了预测性返回动画的开发者选项。现在,对于已完全或在 activity 级别选择启用预测性返回手势的应用,系统现在会显示“返回主屏幕”“跨任务”和“跨 activity”等系统动画。如果您的应用受到影响,请执行以下操作:

  • 确保您的应用已正确迁移,以使用预测性返回手势。
  • 确保您的 fragment 转换支持预测性返回导航。
  • 停止使用动画和框架转换,并改用 Animator 和 AndroidX 转换。
  • FragmentManager 不知道的返回堆栈中迁出。请改用由 FragmentManager 或 Navigation 组件管理的返回堆栈。

Widgets desativados quando o usuário força o fechamento de 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.

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.