## 1. 系统升级流程 当 U 盘中存在 `update.zip` 时,执行以下流程: ```text update.zip ↓ 读取压缩包内容(不解压) ↓ 判断根目录是否存在 ValidationFile.ini ├── 存在 │ ↓ │ 按新版签名包处理 │ ↓ │ 解压 │ ↓ │ 校验内层 update.zip 与 ValidationFile.ini │ ↓ │ 校验通过后升级内层 update.zip │ └── 不存在 ↓ 按旧版标准 升级包处理 ↓ 直接解析并升级原始 update.zip ``` ### 说明 - `update.zip` 为系统升级包; - 使用 Java `ZipFile` 接口读取压缩包内容,不进行解压; - 判断压缩包内部是否包含 `ValidationFile.ini`; - 若存在 `ValidationFile.ini`: - 认为该文件是新版签名升级包; - 解压升级包; - 对解压后的内层 `update.zip` 和 `ValidationFile.ini` 执行签名/完整性校验; - 校验通过后开始升级内层 `update.zip`; - 校验失败时升级失败,不得回退到旧版直接升级流程; - 若不存在 `ValidationFile.ini`: - 认为该文件是旧版标准 升级包; - 不解压、不执行新增签名校验; - 直接解析原始 `update.zip` 并执行系统升级基础校验; - 基础校验通过后开始升级。 ### 系统升级包结构 旧版标准 升级包: ```text U盘/update.zip ├── payload.bin ├── payload_properties.txt └── META-INF/com/android/metadata ``` 新版签名升级包: ```text U盘/update.zip ├── update.zip └── ValidationFile.ini ``` --- ## 2. MCU 升级流程 ### 2.1 update_mcu.zip 升级 当 U 盘中存在 `update_mcu.zip` 时,执行以下流程: ```text update_mcu.zip ↓ 解压 ↓ 校验 ↓ 升级 ``` ### 说明 - `update_mcu.zip` 为 MCU 压缩升级包; - 解压后执行校验; - 校验通过后开始 MCU 升级。 --- ### 2.2 cortex-gdm4.bin 升级 当 U 盘中存在 `cortex-gdm4.bin` 时,执行以下流程: ```text cortex-gdm4.bin ↓ 直接升级 ``` ### 说明 - `cortex-gdm4.bin` 为 MCU 二进制升级文件; - 不进行解压及校验; - 直接执行 MCU 升级。 ### 2.3 MCU 文件优先级 当同一个 U 盘中同时存在 `update_mcu.zip` 和 `cortex-gdm4.bin` 时: ```text 优先使用 update_mcu.zip ``` ### 说明 - `update_mcu.zip` 带签名/完整性校验,安全性更高; - `cortex-gdm4.bin` 仅用于兼容旧版 MCU 升级方式; - 若两者同时存在,默认按新版 `update_mcu.zip` 流程处理。 --- ## 3. MCU 文件识别规则 |文件名称|处理方式| |---|---| |update_mcu.zip|解压 → 校验 → 升级| |cortex-gdm4.bin|直接升级| |其它文件|不处理| --- ## 4. 整体流程汇总 ```text 系统升级: update.zip ↓ 读取 ZIP 内容(不解压) ↓ 根目录是否存在 ValidationFile.ini? ├── 是 → 新版签名包 → 解压 → 校验内层 update.zip → 升级内层 update.zip └── 否 → 旧版标准 升级 包 → 直接解析并升级原始 update.zip MCU升级: ① update_mcu.zip ↓ 解压 ↓ 校验 ↓ 升级 ② cortex-gdm4.bin ↓ 直接升级 说明: - 系统升级中,只要检测到 `ValidationFile.ini`,就必须完成签名校验; - 签名校验失败时,不允许回退为旧版直接升级; - MCU 升级中,`update_mcu.zip` 优先级高于 `cortex-gdm4.bin`; - `cortex-gdm4.bin` 仅作为旧版 MCU 升级兼容路径保留。 ```