Android 兼容性定义文档 (CDD) 可更新软件要求设备实现 SystemUpdatePolicy 类。SystemUpdatePolicy 可让设备所有者 (DO) 应用(如果存在)控制系统更新的安装。

通知设备所有者

无线下载 (OTA) 客户端必须使用系统 API 将传入的 OTA 更新通知给设备所有者应用。OTA 客户端还必须包含时间戳,记录 OTA 更新何时开始可用。OTA 客户端可以调用 DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime, boolean isSecurityPatch) 来通知设备所有者应用。如果 OTA 客户端不知道更新是否为安全补丁程序,则可回退至使用 DevicePolicyManager.notifyPendingSystemUpdate(long updateReceivedTime)。

如果当前没有可用的更新,OTA 客户端可通过将 updateReceivedTime 参数设置为 -1 来报告此情况。我们建议每当 OTA 客户端对 OTA 服务器进行轮询或有 OTA 推送到客户端时都发送通知。您还可以更频繁地发送通知。

系统更新政策

Android 9 允许设备所有者将 OTA 更新推迟长达 90 天,增强了设备所有者控制更新的能力。此功能主要适用于专用设备(之前称为 COSU)解决方案,可让所有者在重要时段(如节假日)暂停在设备上运行的操作系统版本更新。

为遵守 CDD 的要求,OTA 客户端必须实施行为政策。设备所有者可以设置下列政策,设备系统更新子系统必须遵守这些政策:

设备所有者还可以通过设置冻结时段(在 Android 9 或更高版本中),在重要时段(如节假日或其他繁忙时段)冻结操作系统版本。系统在冻结时段不会安装 OTA 更新。我们建议使用 SystemUpdatePolicy.InstallationOption(请参见下一部分);不过,OTA 客户端还可以调用 SystemUpdatePolicy.getFreezePeriods() 来检查设备是否处于冻结时段。

实现安装选项

Android 9 引入了专为系统更新客户端设计的 @SystemApi SystemUpdatePolicy.InstallationOption。SystemUpdatePolicy.InstallationOption 充当政策和冻结时段的封装容器类。根据当前系统更新政策或任何可能设定的冻结时段,安装选项会告知客户端如何针对传入的系统更新执行操作,以及相应操作的有效时长。安装选项可以是下列项之一:

TYPE_INSTALL_AUTOMATIC - 传入的系统更新在可用后会立即安装,且无需用户干预。相应设备会自动重启。

TYPE_POSTPONE - 传入的系统更新最多可延迟 30 天。用户无法手动安装更新。设备制造商可以选择是否屏蔽安全补丁程序。

TYPE_PAUSE - 传入的系统更新可无限期延迟,除非另行通知。用户无法手动安装更新。TYPE_PAUSE 会延迟所有更新,包括安全补丁程序。

系统更新客户端可以使用 SystemUpdatePolicy.getInstallationOptionAt(long when) 查询 SystemUpdatePolicy.InstallationOption,其中 when 表示查询安装选项的时间(从纪元开始计算的毫秒数)。通过使用 SystemUpdatePolicy.getInstallationOptionAt(long when) 方法,系统更新客户端可以在有效时间结束前,根据返回的选项执行操作。在返回的选项失效后,客户端可以使用新的时间戳再执行一次查询,以获取最新的选项。

系统更新客户端必须监听 DevicePolicyManager.ACTION_SYSTEM_UPDATE_POLICY_CHANGED 广播,以防整个政策发生更新。

验证 TYPE_PAUSE 政策

您可以手动验证 TYPE_PAUSE 选项是否能在 OTA 系统上正常工作。

TYPE_PAUSE 政策有效

如需验证 TYPE_PAUSE 政策是否发挥作用,请执行以下操作:

设置自动政策并指定 TYPE_PAUSE。

当系统时钟处于暂停期时,推送 OTA 更新。

确认设备未进行 OTA 更新,且用户无法手动安装更新。

如果设备为 A/B 设备,请重新启动设备,并确认重启操作不会触发自动安装更新。

TYPE_PAUSE 政策过期

如需验证过期的 TYPE_PAUSE 政策是否还能发挥作用,请执行以下操作:

设置自动政策并指定 TYPE_PAUSE。

当系统时钟处于暂停期时,推送 OTA 更新。

等待暂停期结束。

确认设备会自动重新启动,并且在重启后进行 OTA 更新。

android ota更新app,企业 OTA 更新  |  Android 开源项目  |  Android Open Source Project相关推荐

  1. 【开源项目----Android OPenGLES渲染YUV视频文件】

    [开源项目----Android OPenGLES渲染YUV视频文件] OpenGLES对YUV渲染相关文章参考

  2. android ota 服务器搭建,构建 OTA 软件包  |  Android 开源项目  |  Android Open Source Project...

    您可以使用 build/make/tools/releasetools 中提供的 ota_from_target_files 工具,针对使用 A/B 系统更新或非 A/B 系统更新的设备构建完整 OT ...

  3. android10分区镜像,分区和映像  |  Android 开源项目  |  Android Open Source Project

    分区 Android 设备包含若干个分区,这些分区在启动过程中发挥不同的作用.为了支持 A/B 更新,设备需要为 boot.system.vendor 和 radio 分区分别单独配置一个槽位. bo ...

  4. Android签名版本,签名版本以供发布  |  Android 开源项目  |  Android Open Source Project...

    Android 操作系统映像在两个地方使用加密签名: 映像中的所有 .apk 文件都必须经过签名.Android 软件包管理器通过下列两种方式使用 .apk 签名:更换应用时,必须使用与旧应用相同的密 ...

  5. android udt协议,接口和软件包  |  Android 开源项目  |  Android Open Source Project

    HIDL 围绕接口构建而成,而接口是在面向对象的语言中用来定义行为的抽象类型.每个接口都是软件包的一部分. 软件包 软件包名称可以具有子级,如 package.subpackage.已发布的 HIDL ...

  6. hal系统命令 android,转换 HAL 模块  |  Android 开源项目  |  Android Open Source Project...

    您可以通过转换 hardware/libhardware/include/hardware 中的头文件,将已有的 HAL 模块更新为 HIDL HAL 模块. 使用 c2hal .hal 文件,请使用 ...

  7. android选择图片或拍照开源项目,Android 开源照相和图片选择框架PictureSelector

    拍照或者相册选择图片并渲染到UI上,发现了一个更简单的三方框架来实现 -- PictureSelector.Github地址:https://github.com/LuckSiege/PictureS ...

  8. android afw测试,测试设备配置  |  Android 开源项目  |  Android Open Source Project

    Android Enterprise (AE) 自动化测试框架是一个用于验证 Android 设备的企业级兼容性的测试套件.该套件包括配套应用.测试用例.配置文件和一个基于 cts-tradefed ...

  9. android的wifi直连,WLAN 直连  |  Android 开源项目  |  Android Open Source Project

    WLAN 直连功能又称"WLAN 点对点",它允许支持设备直接使用 WLAN 直连协议发现其他设备并与之互连(无需连接到互联网或移动网络).此功能是基于 Wi-Fi 联盟 (WFA ...

最新文章

  1. 2021年大数据常用语言Scala(十四):基础语法学习 数组  重点掌握
  2. uPC1677射频信号放大芯片
  3. 深入云原生 AI:基于 Alluxio 数据缓存的大规模深度学习训练性能优化
  4. centos7.8中源码编译安装redis
  5. 完美:C# Blazor中显示Markdown并添加代码高亮
  6. js截取url问号前面_js截取url问号后参数并转化为对象
  7. 复杂类型java对象 — dto数据传输对象
  8. HTML5 canvas 阴影
  9. mysql日期维表sql文件_《MySQL必知必会》笔记(SQL练习+建表语句)
  10. sqlserver得到行号
  11. 项目交换通知——PM(李忠)
  12. 029--PM话术模板
  13. 高超声速飞行器的建模与控制器设计
  14. halcon教程- 边缘检测 亚像素边缘提取 轮廓提取
  15. 西北工业大学 编译原理实验 minic文法 编译器前端 flex-bison实现 的 debug手记
  16. 系统架构改进--多系统用户整合
  17. 为什么Flutter是跨平台开发的终极之选,android完整项目源码
  18. html.partial mvc5,.net mvc5的 完整源码(深入学习MVC非常有用)
  19. Spine 导出视频 音效事件
  20. 大学自我测试成绩的软件,2021输入分数预测大学软件-在线估分选大学app

热门文章

  1. 计算机安全基础:加密技术知识笔记
  2. 收集 48 个 JavaScript 代码片段,仅需 30 秒就可理解(值得收藏)
  3. 硬件:关于CPU超频知识笔记
  4. 程序员公司选择:创业公司、中等规模公司、大公司
  5. visio调整形状位置_VISIO绘图技巧—三相桥式全控整流电路绘制
  6. linux openssh升级8.1,Centos7利用rpm升级OpenSSH到openssh-8.1p1版本
  7. Redis sorted set 类型操作及常用命令
  8. Docker-compose 常用命令及网络设置(五)
  9. ux设计中的各种地图_UX设计中的空白
  10. Go语言与数据库开发:01-09