源码路径system/update_engine/common/error_code.h
enum class ErrorCode : int {
kSuccess = 0, // 升级成功
kError = 1, // 通用错误(未明确分类的失败)
kOmahaRequestError = 2, // 与Omaha服务器通信请求失败
kOmahaResponseHandlerError = 3, // 处理Omaha服务器响应失败
kFilesystemCopierError = 4, // 文件系统复制操作失败
kPostinstallRunnerError = 5, // 安装后脚本执行失败
kPayloadMismatchedType = 6, // 负载类型与预期不匹配(如全量/增量)
kInstallDeviceOpenError = 7, // 无法打开目标安装设备
kKernelDeviceOpenError = 8, // 无法打开内核设备(如分区)
kDownloadTransferError = 9, // 下载传输过程中断或失败
kPayloadHashMismatchError = 10, // 负载哈希值与预期不匹配(完整性校验失败)
kPayloadSizeMismatchError = 11, // 负载大小与元数据声明不符
kDownloadPayloadVerificationError = 12, // 下载的负载验证失败(通用)
kDownloadNewPartitionInfoError = 13, // 获取新分区信息失败
kDownloadWriteError = 14, // 写入下载数据到磁盘失败
kNewRootfsVerificationError = 15, // 新根文件系统验证失败
kNewKernelVerificationError = 16, // 新内核验证失败
kSignedDeltaPayloadExpectedError = 17, // 预期为签名增量负载但未提供
kDownloadPayloadPubKeyVerificationError = 18, // 负载公钥验证失败(签名无效)
kPostinstallBootedFromFirmwareB = 19, // 安装后仍从旧固件B启动(A/B分区问题)
kDownloadStateInitializationError = 20, // 下载状态初始化失败
kDownloadInvalidMetadataMagicString = 21,// 元数据魔数字符串无效(格式错误)
kDownloadSignatureMissingInManifest = 22,// 清单中缺少必要签名
kDownloadManifestParseError = 23, // 清单解析失败(格式/语法错误)
kDownloadMetadataSignatureError = 24, // 元数据签名生成/读取失败
kDownloadMetadataSignatureVerificationError = 25, // 元数据签名验证失败
kDownloadMetadataSignatureMismatch = 26, // 元数据签名与实际内容不匹配
kDownloadOperationHashVerificationError = 27, // 操作哈希验证失败
kDownloadOperationExecutionError = 28, // 下载操作执行失败(如网络层错误)
kDownloadOperationHashMismatch = 29, // 操作哈希与预期值不匹配
kOmahaRequestEmptyResponseError = 30, // Omaha服务器返回空响应
kOmahaRequestXMLParseError = 31, // Omaha响应XML解析失败
kDownloadInvalidMetadataSize = 32, // 元数据大小无效(超出范围)
kDownloadInvalidMetadataSignature = 33, // 元数据签名格式无效
kOmahaResponseInvalid = 34, // Omaha响应内容无效(逻辑错误)
kOmahaUpdateIgnoredPerPolicy = 35, // 根据策略忽略更新(如版本限制)
kOmahaUpdateDeferredPerPolicy = 36, // 根据策略延迟更新(如电量/网络条件)
kOmahaErrorInHTTPResponse = 37, // Omaha HTTP响应包含错误状态码
kDownloadOperationHashMissingError = 38, // 操作哈希缺失(元数据不完整)
kDownloadMetadataSignatureMissingError = 39, // 元数据签名缺失
kOmahaUpdateDeferredForBackoff = 40, // 因退避策略延迟更新(避免频繁请求)
kPostinstallPowerwashError = 41, // 安装后清除用户数据失败(恢复出厂设置错误)
kUpdateCanceledByChannelChange = 42, // 更新因系统通道切换被取消
kPostinstallFirmwareRONotUpdatable = 43, // 固件只读不可更新(硬件限制)
kUnsupportedMajorPayloadVersion = 44, // 负载主版本不受支持
kUnsupportedMinorPayloadVersion = 45, // 负载次版本不受支持
kOmahaRequestXMLHasEntityDecl = 46, // Omaha请求XML包含非法实体声明(安全限制)
kFilesystemVerifierError = 47, // 文件系统验证失败(如dm-verity错误)
kUserCanceled = 48, // 用户主动取消更新
kNonCriticalUpdateInOOBE = 49, // OOBE模式下跳过非关键更新
kOmahaUpdateIgnoredOverCellular = 50, // 通过蜂窝网络时忽略更新(策略限制)
kPayloadTimestampError = 51, // 负载时间戳无效(如过期或未来时间)
kUpdatedButNotActive = 52, // 更新完成但未激活(需重启)
kNoUpdate = 53, // 无可用更新
kRollbackNotPossible = 54, // 无法回滚到先前版本
kFirstActiveOmahaPingSentPersistenceError = 55, // 首次激活Ping状态保存失败
kVerityCalculationError = 56, // Verity哈希树计算失败
kInternalLibCurlError = 57, // libcurl库内部错误(网络层底层问题)
kUnresolvedHostError = 58, // 域名解析失败(如DNS问题)
kUnresolvedHostRecovered = 59, // 域名解析失败后恢复成功(重试成功)
kNotEnoughSpace = 60, // 设备存储空间不足
kDeviceCorrupted = 61 // 设备关键分区损坏(需恢复模式)
};
补充说明
-
Omaha:Google的更新协议,用于检查/下载更新(如Chrome OS和Android使用)
-
A/B分区:Android的无缝更新机制,通过双系统分区实现后台更新
-
dm-verity:Android的设备映射验证技术,用于防止分区篡改
-
OOBE:Out-of-Box Experience,设备首次开机配置向导