首页 > 其他分享 >Android 15应用适配指南:所有应用的行为变更

Android 15应用适配指南:所有应用的行为变更

时间:2025-01-17 14:02:22浏览次数:3  
标签:Google 15 适配 应用 Android PendingIntent

Android系统版本适配,一直是影响App上架Google Play非常重要的因素。

当前Google Play政策规定

  • 新应用和应用更新
    • 必须以 Android 14(API 级别 34)为目标平台,才能提交到Google Play。
  • 现有应用
    • 必须以 Android 13(API 级别 33)或更高版本为目标平台,Google Play才会在新用户的设备搭载的 Android OS 版本高于应用的目标 API 级别时,继续向这些用户提供此类应用。如果应用以 Android 12(API 级别 31)或更低版本为目标平台,则只能在搭载的 Android OS 版本不高于应用的目标 API 级别的设备上使用。

适配不佳的影响

  • 功能异常被拒
    • 若 App 对 Android 版本适配不佳,在某些版本系统上出现如无法安装、安装后无法加载、加载后无响应、频繁崩溃等功能异常情况,根据 Google Play “最基本的功能” 政策,这类应用是不得上架的。
  • 用户体验差被拒
    • 不同的 Android 版本在系统特性、界面风格、操作逻辑等方面可能存在差异。如果 App 没有做好适配,可能在新系统上出现界面显示错乱、操作不流畅等问题,无法提供稳定、响应迅速、引人入胜的用户体验,也会导致上架被拒。

适配建议

  • 及时关注政策更新
    • Google Play 会不定期更新开发者政策,在政策更新后会给予一定的缓冲时间让开发者进行应用适配,但开发者需及时关注政策变化,以便提前规划适配工作。
  • 全面测试
    • 在提交上架前,要在多种不同 Android 版本的设备上进行充分测试,覆盖低版本到高版本,尽可能模拟用户的真实使用场景,检查应用在不同系统版本上的功能完整性、稳定性和兼容性等。
  • 遵循官方文档和指南
    • Google 提供了丰富的官方文档和开发指南,如关于不同 Android 版本的特性介绍、适配建议、API 使用说明等,开发者应仔细阅读并按照要求进行应用开发和适配。

Android 15正式版已经发布半年左右,以Google Play政策惯性看来说,2025年8月份左右,新上架App必须以 Android 15(API 级别 35)为目标平台,才能提交到Google Play。

所以Android 15应用适配,对每个出海人来说都迫在眉睫。

目前市场上只有极少量有关Android 15适配文章,但是此类文章要么不专业,要么不全面,所以本人特开此Android 15应用适配指南系列,以帮助更多开发者适配好Android 15,从而更顺利的上架到Google Play。

Android 15应用适配指南系列共四个系列:

  • 影响Android 15上所有应用的行为变更
  • 影响以Android 15为目标平台应用的行为变更
  • Android 15新功能和API
  • Android 15废弃API

注意:Android 15应用适配指南系列文章,均以小米14手机搭建Android 15为基准适配。

本篇是适配指南系列第一篇,所有应用的行为变更。

一、Android 15简介

Android 15继续致力于构建注重隐私和安全保护的平台,助您提高效率,同时还引入了多项新功能,帮您打造精美应用、卓越的媒体和相机体验,并提供直观的用户体验。在平板电脑和可折叠设备上更能凸显出这些优势。以下是谷歌发布时间表:

二、获取Android 15

1、小米手机升级Android 15

小米14手机所搭载小米澎湃OS,是以Android 15为基础魔改适配的,如暂未拥有上述设备也没关系,我们可以试用云测设备,来支持适配工作。

Android 15云测平台:

https://testit.miui.com。

2、在 Google Pixel 设备上获取 Android 15

开发者持有Pixel系列的机器可以直接ota升级,或者下载镜像升级,具体见链接。

在 Google Pixel 设备上获取 Android 15 Beta 版:

https://developer.android.com/about/versions/15/get?hl=zh-cn#on_pixel。

适用于 Google Pixel 的出厂映像:

https://developer.android.google.cn/about/versions/15/download?hl=zh-cn。

适用于 Google Pixel 的 OTA 映像:

https://developer.android.google.cn/about/versions/15/download-ota?hl=zh-cn。

3、设置Android模拟器

请参考设置 Android 模拟器:

https://developer.android.com/about/versions/15/get?hl=zh-cn#phone-avd。

4、设置 Android 15 SDK

请参考设置 Android 15 SDK:

https://developer.android.com/about/versions/15/setup-sdk?hl=zh-cn。

三、影响Android 15上所有应用的行为变更

1、最低可安装TargetSDK级别为24

1.1、特性背景

Android 15进一步提升了最低可安装TargetSDK级别。

1.2、适用范围

Android 15上的所有App。

1.3、特性内容

Android 15在Android 14所做的更改的基础上进一步加强了安全性。在Android 15中,目标SDK版本低于24的应用程序无法安装。要求应用程序满足现代API级别有助于确保更好的安全性和隐私保护。

恶意软件通常针对较低的API级别,以绕过在较高Android版本中引入的安全性和隐私保护。例如,一些恶意软件应用程序使用目标SDK版本22,以避免受到Android 6.0 Marshmallow(API级别23)在2015年引入的运行时权限模型的限制。这个Android 15的变化使得恶意软件更难避开安全和隐私的改进。

尝试安装一个针对较低API级别的应用程序会导致安装失败,并在Logcat中出现以下消息:

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

1.4、应用适配

请确保应用的targetSDK至少为24。

2、软件包停止状态变更

2.1、特性背景

针对应用的PendingIntent,Android 15进一步增强了forcestop机制的作用。

2.2、适用范围

Android 15上的所有App。

2.3、特性内容

当应用在 Android 15 上进入停止状态时,系统会取消这个应用的所有PendingIntent。当用户的操作将应用从停止状态中移除时,系统会向应用传递 ACTION_BOOT_COMPLETED 广播,使应用可以重新注册PendingIntent。具体情况还需参考各家厂商对ACTION_BOOT_COMPLETED 广播的管控。

如果应用进入停止状态,则所有这些待处理的 intent 都会被取消,系统会停用该应用的 widget。这些 widget 呈灰显状态,用户无法与其互动。系统会在用户下次启动应用时重新启用这些 widget,目前的测试结果显示用户点击一次widget也能启用。

Demo演示

我们分别在Android 14和15上执行PendingIntent.getActivity方法,然后使用adb shell dumpsys activity intents命令来dump AMS中mIntentSenderRecords字段的内容并观察。测试代码:

Intent intent = new Intent(mContext, MainActivity.class); PendingIntent pi = PendingIntent.getActivity(mContext, 5, intent, PendingIntent.FLAG_IMMUTABLE);

测试应用的包名为com.example.alarmlab。

Android 14上现象:

在运行测试代码之前,在终端运行adb shell dumpsys activity intents | grep -i "alarmlab",终端没有给出任何输出,说明mIntentSenderRecords中没有com.example.alarmlab创建的PendingIntent。

运行测试代码,运行adb shell dumpsys activity intents | grep -i "alarmlab",终端给出了我们创建的PendingIntent的dump信息,可见这个PendingIntent已被AMS记录。

forcestop掉我们的测试应用com.example.alarmlab,运行adb shell dumpsys activity intents | grep -i "alarmlab",终端给出了我们创建的PendingIntent的dump信息,可见这个PendingIntent在AMS中没有被删除。

Android 15上现象:

在运行测试代码之前,在终端运行adb shell dumpsys activity intents | grep -i "alarmlab",终端没有给出任何输出,说明mIntentSenderRecords中没有com.example.alarmlab创建的PendingIntent。

运行测试代码,运行adb shell dumpsys activity intents | grep -i "alarmlab",终端给出了我们创建的PendingIntent的dump信息,可见这个PendingIntent已被AMS记录。

forcestop掉我们的测试应用com.example.alarmlab,运行adb shell dumpsys activity intents | grep -i "alarmlab",终端没有给出任何输出,说明mIntentSenderRecords中com.example.alarmlab创建的PendingIntent被删除了。

2.4、应用适配

建议应用结合自身对PendingIntent的使用场景,考虑应用被force-stop之后AMS中的PendingIntentRecord会被删除的情况,按需做出调整。可以结合ApplicationStartInfo API中的wasForceStopped()接口做出判断。

3、在达到资源限制时,直接和分流音频播放会使之前打开的直接或分流音轨失效

3.1、特性背景

Android 15之前,如果应用请求使用 direct playback 或者 offload playback 播放模式时,另一个应用正在播放音频并且资源达到限制,则请求的应用无法创建新的 AudioTrack。

3.2、适用范围

Android 15上的所有App。

3.3、特性内容

Android 15中当应用请求使用 direct playback 或者 offload playback 播放模式时资源达到限制后,系统会让已经创建使用的 AudioTrack 对象也失效。

3.4、应用适配

使用 offload playback 播放模式的音频类App需要适配这个特性。

4、支持16KB Page Size

4.1、特性背景

一直以来,Android 仅支持 4 KB 的内存页面大小,针对 Android 设备通常拥有的平均总内存量,系统内存性能进行了优化。从 Android 15 开始,Android 支持配置为使用 16 KB 页面大小的设备(即 16 KB 设备)。

4.2、适用范围

Google计划明年开始把兼容16KB页面作为上架Google Play的必要条件。今年携带Android 15的设备可能尚不会使用16KB页面,但国内厂商最终将跟随Google,因此建议应用适配。

4.3、特性内容

随着设备制造商不断打造具有更大物理内存 (RAM) 的设备,这些设备中的许多可能会配置 16 KB(最终更大)的页面大小,以优化设备的性能。添加对 16 KB 设备的支持可让应用在这些设备上运行,并帮助应用从相关性能改进中受益。

性能提升:

  • 在系统面临内存压力时缩短应用启动时间:平均降低了 3.16%
  • 降低应用启动时的功耗:平均降低 4.56%
  • 相机启动速度更快:平均热启动速度加快 4.48%,冷启动速度平均加快 6.60%
  • 缩短了系统启动时间:平均缩短了 1.5%(约 0.8 秒)

兼容性影响:

  • 含有so库的应用需要重新构建支持 16KB 设备的应用,否则在16KB设备上很可能会crash。

4.4、应用适配

建议应用适配该特性。检查应用是否受到影响:

  • 含有so库的应用都会受到影响。
  • 如果不确定应用是否含有so库,可以使用Apk Analyzer分析。

构建支持 16KB 设备的应用:

  • 升级到 AGP 版本 8.3 或更高版本,并使用未压缩的共享库,或在AGP 版本 8.2 或更低版本上使用压缩共享库。
  • 使用 16 KB ELF 对齐编译应用。
  • 检查引用特定页面大小的代码。

在 16 KB 的环境中测试您的应用:

使用基于 16 KB 的 Android 15 系统映像设置 Android 模拟器。

适配细节可参考官方文档:

https://developer.android.com/guide/practices/page-sizes?hl=zh-cn。

5、默认开启预测性返回动画

5.1、特性背景

已经迭代多个版本的预测性返回动画在Android 15上全面开放。

5.2、适用范围

Android 15上的所有App。

5.3、特性内容

从 Android 15 开始,移除了预测性返回动画的开发者选项。现在,对于已完全或在 activity 级别选择启用预测性返回手势的应用,系统现在会显示“返回主屏幕”“跨任务”和“跨 activity”等系统动画。

5.4、应用适配

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

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

如果想要从零开始适配预测性返回动画,请参考官方文档:

https://developer.android.google.cn/guide/navigation/custom-back/predictive-back-gesture?hl=zh-cn。

四、结语

以上就是影响Android 15上所有应用的行为变更,Android 15应用适配指南系列下一篇,将介绍影响以Android 15为目标平台应用的行为变更,敬请期待。

标签:Google,15,适配,应用,Android,PendingIntent
From: https://blog.csdn.net/u012565335/article/details/145119459

相关文章

  • 2025毕设springboot 基于Android的“自律打卡”演示录像120239论文+源码
    系统程序文件列表开题报告内容研究背景在快速发展的数字化时代,智能手机已成为人们日常生活中不可或缺的一部分,特别是Android系统因其开源性和广泛的应用基础,深受用户喜爱。随着生活节奏的加快,越来越多的人开始重视时间管理和自我提升,自律打卡作为一种有效的自我激励方式,逐......
  • 2025毕设springboot 基于Android的“课堂管理助手”移动应用开发论文+源码
    系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展,教育领域正经历着深刻的变革。传统课堂管理模式逐渐暴露出效率低下、信息孤岛等问题,无法满足现代教育对于高效、互动和个性化的需求。特别是在高等教育和职业教育中,师生间的信息交流、课程管理、作业提交与批改......
  • 2025毕设springboot 基于android的健身运动演示录像120239论文+源码
    系统程序文件列表开题报告内容研究背景随着现代生活节奏的加快,人们越来越注重健康与健身。然而,忙碌的工作和生活压力往往使得人们难以找到合适的时间和方式来进行系统的健身锻炼。在这一背景下,智能手机应用程序(App)凭借其便捷性和普及性,成为了人们追求健康生活的重要工具。......
  • 2025毕设springboot 基于Android的公交线路状态查询系统论文+源码
    系统程序文件列表开题报告内容研究背景随着城市化进程的加速,公共交通系统成为了城市居民日常出行的重要选择。然而,传统的公交线路查询方式,如纸质地图、公交站台信息牌等,已难以满足现代人对出行效率和便捷性的需求。特别是在高峰时段,公交线路的拥堵情况、车辆到站时间等信息......
  • 极空间使用clouddrive2 docker挂载115(SSH版)
    极空间开通SSH了,因此可以用clouddrive2将115挂载到极空间并在“个人空间”中看到了。按照官方教程,用docker-compose或者dockercli命令进行部署即可。具体部署步骤极空间打开SSH(系统设置-远程协助/SSH)。使用SSH工具如XTerminal等进入SSH,端口为开启SSH时设置的端口,账号密码为......
  • nginx适配Overlay以及测试工具
    本文分享自天翼云开发者社区《nginx适配Overlay以及测试工具》,作者:pan Overlay与Underlay介绍Overlay网络和Underlay网络是一组相对概念,Overlay网络是建立在Underlay网络上的逻辑网络。而Overlay网络是通过网络虚拟化技术,在同一张Underlay网络上构建出的一张或者多张虚拟的逻......
  • Android14.0 app调用hal层接口功能实现系列三(frameworks层实现)
    1.前言 在14.0的系统产品定制化开发中,对于一些需要在app中调用hal层的一些接口来实现某些功能而言,就需要打通app到hal的接口,实现功能需求,这一节首先讲在hal层中提供接口然后在jni层实现hal层接口调用,在framework层实现添加服务调用jni接口,接下来就实现第三部分的相关功能2.a......
  • 极空间使用clouddrive2 docker挂载115(SSH版)
    极空间开通SSH了,因此可以用clouddrive2将115挂载到极空间并在“个人空间”中看到了。按照官方教程,用docker-compose或者dockercli命令进行部署即可。具体部署步骤极空间打开SSH(系统设置-远程协助/SSH)。使用SSH工具如XTerminal等进入SSH,端口为开启SSH时设置的端口,账号密码为......
  • 域密码到期发送提醒邮件的超简单方法.210715
    1,AD服务器下载安装免费的卓豪AD管理工具   https://www.manageengine.cn/products/self-service-password/free-password-expiry-notification-tool.html2,设置邮箱3,设置提醒邮件内容,选择域4,愉快的玩耍吧。......
  • 如何每5分钟、10分钟或15分钟运行一次Cron计划任务
    Crontab的语法和操作符Crontab(cron表)是一个定义cron作业时间表的文本文件。Crontab文件可以用crontab命令来创建、查看、修改和删除。用户crontab文件中的每一行都包含六个字段,用空格隔开,后面是要运行的命令。*****command(s)^^^^^|||||allowedvalues......