当前位置: 首页 > article >正文

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

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为目标平台应用的行为变更,敬请期待。


http://www.kler.cn/a/502688.html

相关文章:

  • pandas与sql对应关系【帮助sql使用者快速上手pandas】
  • 自然语言转 SQL:通过 One API 将 llama3 模型部署在 Bytebase SQL 编辑器
  • RocketMQ 知识速览
  • 整数和浮点数的存储
  • PL/SQL语言的文件操作
  • virtual box虚拟机误删Python3.6后导致UBUNTU18.04开机无UI界面(进不了desktop)的解决方法
  • 【深度学习基础与pytorch基础】特征与标签
  • 六十九:基于openssl实战验证RSA
  • 大疆机场及无人机上云
  • Maven中的dependencyManagement和dependencies
  • 【初识扫盲】厚尾分布
  • 利用 Python 爬虫获取 1688 商品评论的实践指南
  • 基于Python(Django)+SQLite3实现的(Web)资产管理系统
  • C++内存泄露排查
  • Go Ebiten小游戏开发:井字棋
  • Postgres14.4(Docker安装)
  • 【数据分析】一、初探 Numpy
  • 服务器引导异常,Grub报错: error: ../../grub-core/fs/fshelp.c:258:file xxxx.img not found.
  • 行业案例:高德服务单元化方案和架构实践
  • 【开源免费】基于SpringBoot+Vue.JS企业级工位管理系统(JAVA毕业设计)
  • C++ 的 pair 和 tuple
  • 【江协STM32】11-1 SPI通信协议
  • UE5 打包项目
  • 【源码解析】Java NIO 包中的 Buffer
  • 新型物联网智能断路器功能参数介绍
  • Spring Boot3 配合ProxySQL实现对 MySQL 主从同步的读写分离和负载均衡