服务套装更新

服务软件包可以作为 APEX 软件包进行更新,而无需进行完整的系统更新。在 SDV 中,此更新过程由 SDV 更新管理器管理。 如需使更新生效,您必须重启设备。

服务软件包更新支持两种类型的 APEX:

  • 预安装的 APEX: APEX 软件包的早期版本已 存在于某个只读分区(/system/system_ext/product/vendor/odm)中。

  • 新 APEX: 任何只读分区中都不存在具有相同名称(如 apex_manifest.json 中所声明)的 APEX 软件包。

预安装的 APEX

这是更新服务软件包最常见且推荐的方法。如需使此更新有效,新的 APEX 软件包必须满足以下要求:

  • apex_manifest.json 中具有与预安装的 APEX 相同的软件包名称。

  • apex_manifest.json 中声明的版本代码高于预安装的 APEX。

  • 使用与预安装的 APEX 相同的密钥对为 APEX 签名。

新 APEX

虽然使用预安装的 APEX 是安全最佳实践,但系统也支持新 APEX。使用此方法时,合作伙伴负责维护全面的安全协议。这些责任包括:

  • 安全地管理用于这些 APEX 的签名密钥。

  • 建立可靠的流程来识别和屏蔽恶意软件包。

  • 尽可能在后续系统更新中将新 APEX 转换为预安装的 APEX。

如需安装或更新新 APEX,需要进行以下配置。

预安装可信公钥

如需安装新 APEX,必须先在目标分区上预安装其公钥签名密钥。将公钥放在 /partition/etc/brand_new_apex/ 中, 其中 /partition/ 表示 APEX 在 Treble 规则下关联到的分区 在 Treble 规则下。例如,如果针对 /vendor/etc/brand_new_apex/ 中的公钥验证 APEX 的签名,则该 APEX 将作为供应商 APEX 运行。 系统将拒绝任何未使用与预安装的公钥对应的密钥签名的新 APEX。

屏蔽恶意的新 APEX

如果新 APEX 在安装后被识别为恶意,则必须使用系统更新将其屏蔽。为此,请将 APEX 软件包名称添加到 /partition/etc/brand_new_apex/blocklist.json 中的屏蔽名单文件。此屏蔽名单必须放在 APEX 的目标分区(预安装其公钥的同一分区)上。每个分区都有自己的专用屏蔽名单文件。