早于 Android 5.0 (API 等级 21)
请根据 API 版本阅览相应的行为变更页面, 确保您的应用能够顺利应对各个版本发布:
- Android 5.0 (API 等级 21)
- Android 4.4 (API 等级 19)
- Android 4.1 x (API 等级 16)
早于 Android 6.0 (API 等级 23)
下文列举内容适用于针对 Android 6.0 或更高版本平台开发的应用:
在运行时请求权限
- 危险权限只可以在运行时被授予应用的 UI 流必须提供相应可供性向用户请求这些权限;
- 但凡可能, 您的应用要准备好应对权限请求被拒的情况譬如说, 如果某个用户拒绝您的应用访问设备 GPS, 应用须通过其它方法继续运行
要了解 Android 6.0 (API 等级 23) 的详细变更, 请阅览该版本的行为变更 (Behavior Changes) 文档
早于 Android 7.0 (API 等级 24)
下文列举内容适用于针对 Android 7.0 或更高版本平台开发的应用:
Doze 以及应用待机模式:
请根据 Doze 以及应用待机模式优化一文中的相关描述设计您的 app, 文章涵盖适用几个 Android 版本的逐步变更
当设备进入 Doze 或者待机模式时, 会产生下述系统行为:
- 网络访问限制;
- 推迟应用的 alarmssyncs 和 jobs;
- GPS 以及 Wi-Fi 扫描限制;
- 普通优先级 Firebase Cloud Messaging 消息限制;
权限变更
- 系统将限制访问应用私有目录;
- 在应用外公开 file://URI 会导致 FileUriExposedException 开发者可以使用 FileProvider 在应用间进行文件共享;
系统阻止应用链接非 NDK 库
要了解 Android 7.0 (API 等级 24) 的详细变更, 请阅览该版本的行为变更 (Behavior Changes) 文档
早于 Android 8.0 (API 等级 26)
下文列举内容适用于针对 Android 8.0 或更高版本平台开发的应用:
后台执行限制 (Background Execution Limits)
- 若您的应用不运行在前台, 系统将会限制服务:
.. 当应用试图调用 startService() 而 startService 又被禁止时, startService() 会抛出异常;
.. startForegroundService() 应用必须使用 startForeground() 和 startForegroundService() 函数启动前台服务;
.. 请前往 Android 8.0 (API 等级 26) 行为变更页面, 仔细阅读关于 JobScheduler API 的变更;
.. Firebase Cloud Messaging 要求 10.2.1 或更高版本的 Google Play 服务 SDK;
.. Firebase Cloud Messaging documentation 在使用 Firebase Cloud Messaging 时, 消息投递受限于后台执行限制若消息接收需要必要后台工作, 如后台数据同步, 您的应用须要通过 Firebase Job Dispatcher 或者 JobIntentService 调度任务详情请阅览 Firebase Cloud Messaging 文档
- 隐式广播限制:
.. 系统会限制隐式广播有关处理后台事件详情, 请阅读 JobSechduler API 文档;
.. 后台位置限制;
.. 后台运行的应用访问位置数据受限;
支持 Google Play 服务的设备可以通过 fused location provider 定期获取位置更新
通知渠道
- 您应该为每个渠道分别定义通知中断设特性:
.. 您必须将通知分配到某一渠道 (channel), 以便通知显示;
.. 该版本 Android 平台支持 NotificationCompat.Builder;
隐私
- ANDROID_ID 会根据每个应用签署密钥确定作用域
要了解 Android 8.0 (API 等级 26) 的详细变更, 请阅览该版本的行为变更 (Behavior Changes) 文档
查看更多指导文档链接
来源: https://juejin.im/post/5ab4b792518825556a72598a