Android 4.4-7.0 apk的更新换代策略
早于 Android 6.0 (API 等级 23)
下文列举内容适用于针对 Android 6.0 或更高版本平台开发的应用:
-
在运行时请求权限
- 危险权限只可以在运行时被授予。应用的 UI 流必须提供相应可供性向用户请求这些权限;
- 但凡可能,您的应用要准备好应对权限请求被拒的情况。譬如说,如果某个用户拒绝您的应用访问设备 GPS,应用须通过其它方法继续运行。
早于Android 7.0 (API 等级 24)
下文列举内容适用于针对 Android 7.0 或更高版本平台开发的应用:
-
Doze 以及应用待机模式:
请根据《Doze 以及应用待机模式优化》一文中的相关描述设计您的 app,文章涵盖适用几个 Android 版本的逐步变更。
当设备进入 Doze 或者待机模式时,会产生下述系统行为:
- 网络访问限制;
- 推迟应用的 alarms、syncs 和 jobs;
- GPS 以及 Wi-Fi 扫描限制;
- 普通优先级 Firebase Cloud Messaging 消息限制;
-
权限变更
- 系统将限制访问应用私有目录;
- 在应用外公开 file://URI会导致 FileUriExposedException。开发者可以使用 FileProvider 在应用间进行文件共享;
-
系统阻止应用链接非 NDK 库。
早于 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 会根据每个应用签署密钥确定作用域。