电信终端产业协会(TAF)发布的《移动应用软件高API等级预置与分发自律公约》要求,截止到2019年5月1日所有新发布的应用API必须为26或更高,2019年8月1日现有应用API必须升级为26或更高。
在应用 targetSdk 版本升级指导(一)中已对Android8.0、Android9.0在targetSdk 版本变更方面做了详细介绍,本文则将对Android7.0、Android6.0以及Android5.x及以下系统版本在 targetSdk 版本方面的变更进行介绍。
*应用 targetSdk 版本升级流程
测试机准备
1.使用最新支持 Android 9.0 的手机测试:所有 EMUI 9.0 华为手机
2.Pixel刷机:https://developers.google.com/android/images
3.使用绿盟远程真机:https://deveco.huawei.com/
4.使用模拟器
targetSdk 版本相关变更介绍
Android7.0
(一)相关变更
1.系统禁止链接到非 NDK 库
从 Android 7.0 开始,系统将阻止应用动态链接非公开 NDK 库,原因为NDK 库可能会导致应用崩溃,此行为变更主要目的在为跨平台更新和不同设备提供统一的应用体验。即使应用中的代码不会链接私有库,但第三方静态库可能会进行链接,因此建议所有开发者都需进行相应检查,确保应用不会在运行 Android 7.0 的设备上崩溃。如果应用使用的是原生代码,则只能使用公开 NDK API。(https://developer.android.com/ndk/guides/stable_apis)
2.低电耗模式DOZE(系统状态)
进入条件:灭屏、未充电、静止持续1小时
退出条件:亮屏或移动或充电
限制资源
- 限制应用访问网络
- 暂停应用的Sync任务
- 暂停应用的JobScheduler任务
- 忽略应用的wakelocks
- 标准Alarm推迟到维护窗口
- 不执行wifi扫描
3.低电耗模式Lite Idle(系统状态)
进入条件:灭屏、未充电持续5分钟(Android P调整为3分钟)
退出条件:亮屏或充电
限制资源
- 限制应用访问网络。
- 暂停应用运行Sync任务 。
- 暂停应用运行JobScheduler任务。
4.AppStandby模式(应用状态)
进入AppIdle条件:应用后台空闲总时间>48小时且亮屏后台空闲时间 > 12小时
排除&退出条件:前台应用、有前台服务的应用、通知栏或锁屏通知消息的应用或进行充电
不限制的应用:系统应用UID<10000的,Persist常驻应用,电池优化白名单,系统关联的其他应用
限制的资源
- 限制应用访问网络
- 暂停执行应用的Sync任务
- 暂停执行应用的JobScheduler任务
5.App Standby Bucket 应用待机分组模式( Android P特性)
应用待机分组模式是在Doze模式未生效时(亮屏或刚刚灭屏时),对运行在后台的用户不可感知应用的耗电管控扩展。
(二)适配指导
低电耗模式和应用待机模式适配指导如下:
• 前台服务
应用需要在后台访问网络或者使用CPU时可以通过此方式。
• Doze白名单
查询应用是不是在doze白名单:
向用户申请授权添加doze白名单:
Android6.0变更
(一)相关变更
运行时权限
此版本引入了一种新的权限模式,用户可直接在运行时管理应用权限。这种模式让用户能够更好地了解和控制权限,为安装的应用分别授予或撤销权限,同时为开发者精简了安装和自动更新过程。
对于以 Android 6.0(API 级别 23)或更高版本为目标平台的应用,请务必在运行时检查和请求权限。确定应用是否已被授予权限,可调用新增的 checkSelfPermission() 方法。请求权限,可调用新增的 requestPermissions() 方法。具体参考:
https://developer.android.google.cn/training/permissions/requesting
(二)适配指导
• 解释需要权限的原因:系统在开发者调用 requestPermissions() 时显示的权限对话框将说明应用需要的权限,但不会解释为何需要这些权限。某些情况下,用户可能会感到困惑,因此,建议在调用 requestPermissions() 之前向用户解释应用需要相应权限的原因。
• 仅申请应用真正需要的权限
• 如果应用在启动之后一次要求用户提供多项权限,用户可能会感到无所适从并因此退出应用 。建议开发者应根据需要请求权限,对于某一些权限应用可以在真正需要使用的时候再尝试申请用户动态授权。
Android5.x(22-19)及以下版本变更
安卓绿色联盟会定期进行技术分享,欢迎关注!