日志
复制安装步骤和完整的markdown指南
日志和日志洞察
日志和日志洞察应用 日志 tab opens 日志洞察 默认情况下。使用洞察来优先考虑类别、版本和设备的1、3、7或30天时间段。切换到 日志 上下文:Capgo Builder / 原生云构建产品页面。角色:短UI标签或导航项。见于:页面native-build.astro。消息键`native_build_v2_trust_logs_lbl` (Native Build V2 Trust Logs Lbl)。
子标签
理解应用日志The raw Logs subtab provides a detailed history of update events and diagnostic information for your application. It is useful for confirming the device-level evidence behind an Insight, troubleshooting an update path, and understanding how devices interact with Capgo. Open an app, choose 原始日志子标签提供了应用程序更新事件和诊断信息的详细历史记录。它有助于确认设备级证据、排查更新路径以及了解设备如何与__CAPGO_KEEP_0__交互。打开一个应用,选择日志 上下文:Capgo Builder / 原生云构建产品页面。角色:短UI标签或导航项。见于:页面native-build.astro。消息键`native_build_v2_trust_logs_lbl` (Native Build V2 Trust Logs Lbl)。 ,然后选择的子标签

原始日志界面包括:
- 日志子标签 — 个体日志行的导航控制。
- 刷新按钮 — 使用最新数据刷新日志列表。
- 时间范围和操作过滤器 — 根据时间和操作来缩小事件流。
每行显示:
- 时间戳 (UTC)
- 设备 ID
- 动作 code (发生了什么)
- 版本名称 (包或)
builtin)
点击一行以跳转到该设备详细页面查看其完整历史记录。
按日期范围过滤
标题:按日期范围过滤您可以使用日期选择器在特定时间段内过滤日志:

- 快速预设 - 选择常见时间范围:1小时、3小时、6小时或12小时
- 开始时间 - 为时间范围设置自定义开始时间
- 结束时间 - 为时间范围设置自定义结束时间
- 日历 - 使用日历视图选择特定日期
点击“选择”以应用所选日期范围,或者“取消”以关闭日历选择器。
根据动作类型进行过滤
标题:根据动作类型进行过滤动作下拉菜单允许您通过特定事件类型来过滤日志:

可用的操作过滤器包括:
- 设备心跳 - 设备周期性健康检查
- 删除版本请求 - 当一个捆绑包版本被删除
- 重置为默认版本 - 当设备恢复到内置捆绑包
- 版本安装成功 - 成功捆绑包安装
- 新版本发送到设备 - 当Capgo发送一个更新到设备
- 版本安装失败 - 当捆绑安装失败时
您可以在顶部的搜索框中快速找到特定动作类型。您可以选择多个动作以显示匹配任何选定类型的日志。
示例日志片段(假数据)
示例日志片段(假数据)| 时间(UTC) | 设备ID | 动作 | 版本 | 它告诉您什么 |
|---|---|---|---|---|
| 2025-01-14 10:00:01 | A1B2C3 | get | 2.4.1 | 设备询问 Capgo 是否有可用的更新 |
| 2025-01-14 10:00:03 | A1B2C3 | download_manifest_start | 2.4.1 | 清单下载启动了; SDK 即将下载文件 |
| 2025-01-14 10:00:07 | A1B2C3 | download_40 | 2.4.1 | 下载包完成40% |
| 2025-01-14 10:00:12 | A1B2C3 | download_zip_complete | 2.4.1 | 已完成zip下载 |
| 2025-01-14 10:00:13 | A1B2C3 | set | 2.4.1 | 已安装并标记为下一次运行 |
| 2025-01-14 10:05:00 | B9C8D7 | disableAutoUpdateToMajor | 1.9.0 | 频道策略阻止了跳转到2.x |
| 2025-01-14 10:05:05 | B9C8D7 | rateLimited | 内置 | 设备已达到请求限制;SDK将在重启前暂停 |
示例日志场景
标题:示例日志场景为了帮助您了解日志的含义,我们提供了示例序列,展示了设备更新的真实旅程:
成功更新流程
标题:成功更新流程这是您的日志中健康更新的样子:
| 时间 | 设备ID | 动作 | 版本 | 说明 |
|---|---|---|---|---|
| 10:00:01 | a1b2c3d4 | get | 1.2.0 | 设备检查更新并接收到版本 1.2.0 的信息 |
| 10:00:02 | a1b2c3d4 | download_10 | 1.2.0 | 下载开始,10% 完成 |
| 10:00:03 | a1b2c3d4 | download_50 | 1.2.0 | 下载中,50% |
| 10:00:05 | a1b2c3d4 | download_complete | 1.2.0 | 下载成功 |
| 10:00:06 | a1b2c3d4 | set | 1.2.0 | 包安装并激活 |
设备已是最新
设备已是最新当设备检查但已经有最新版本时:
| 时间 | 设备ID | 操作 | 版本 | 是什么意思 |
|---|---|---|---|---|
| 14:30:00 | e5f6g7h8 | noNew | 1.2.0 | 设备已经处于最新版本,更新不需要 |
更新失败并回滚
标题:更新失败并回滚当更新失败并设备回滚时:
| 时间 | 设备ID | 操作 | 版本 | 说明 |
|---|---|---|---|---|
| 11:15:00 | i9j0k1l2 | get | 1.3.0 | 设备接收到更新信息 |
| 11:15:02 | i9j0k1l2 | download_complete | 1.3.0 | 下载完成 |
| 11:15:03 | i9j0k1l2 | set | 1.3.0 | 设置了捆绑包 |
| 11:15:10 | i9j0k1l2 | update_fail | 1.3.0 | 应用程序崩溃或未被调用 - 回滚触发 notifyAppReady() 内置 |
| 11:15:11 | i9j0k1l2 | reset | 设备回滚到内置版本 | 需要操作 |
: 检查您的应用程序是否正确调用__CAPGO_KEEP_0__ notifyAppReady() 初始化成功后。请参见 查看插件文档 获取详细信息。
下载失败
下载失败当网络问题阻止下载时:
| 时间 | 设备ID | 动作 | 版本 | 它意味着什么 |
|---|---|---|---|---|
| 09:45:00 | m3n4o5p6 | get | 1.2.0 | 设备接收到更新信息 |
| 09:45:01 | m3n4o5p6 | download_30 | 1.2.0 | 下载开始但… |
| 09:45:15 | m3n4o5p6 | download_fail | 1.2.0 | 下载失败(网络超时、连接丢失等) |
需要操作: 设备将在下次应用启动时自动重试。除非频繁发生此问题,否则无需操作。
计划限制已达到
计划限制已达到当您的帐户达到设备限制时:
| 时间 | 设备ID | 操作 | 版本 | 是什么意思 |
|---|---|---|---|---|
| 16:00:00 | q7r8s9t0 | needPlanUpgrade | - | 该设备将不会接收更新,直到您升级或账单周期重置 |
需要执行操作: 升级您的计划 或等待下一个账单周期
频道配置阻止更新
频道配置阻止更新当频道设置阻止更新时:
| 时间 | 设备ID | 操作 | 版本 | 它的含义 |
|---|---|---|---|---|
| 12:00:00 | u1v2w3x4 | disableAutoUpdateToMajor | 2.0.0 | 设备在 v1.x 上无法自动更新到 v2.x (版本跳转被阻止) |
| 12:05:00 | y5z6a7b8 | disableEmulator | 1.2.0 | 检测到模拟器,频道阻止模拟器 |
| 12:10:00 | c9d0e1f2 | disableDevBuild | 1.2.0 | 检测到开发版,频道阻止开发版 |
需要采取行动: 这些都是有意为之的保护措施。如果您想允许这些更新,请修改您的 频道设置.
日志代码(Capgo 后端枚举)
标题:日志代码(Capgo 后端枚举)这些代码来自 stats_action 枚举(API)capgo/src/types/supabase.types.ts). If you see a new code in the UI, it was emitted by the SDK or backend and validated against this list.
happy path & 生命周期
| Code(s) | 含义 |
|---|---|
get | 设备请求 Capgo 当前渠道清单 |
download_manifest_start, download_manifest_complete | 开始/完成清单下载(对于delta或多文件包) |
download_zip_start, download_zip_complete | 开始/完成zip压缩包下载 |
download_10 … download_90 | 下载进度里程碑 |
download_0 | 下载进度首次事件标记(0%) |
download_complete | 下载完成整个包 |
set | 包已准备好下次启动 |
reset | 设备切回内置包 |
delete | 包从本地存储中移除 |
uninstall | 应用卸载检测 |
app_moved_to_foreground, app_moved_to_background | SDK记录的应用程序生命周期事件 |
ping | 设备的健康/心跳检查 |
setChannel, getChannel | 通过SDK调用覆盖或获取频道 |
新政策阻断/限制快速修复
快速修复新政策阻断/限制| Code | 为什么会这样 | 下一步是什么 |
|---|---|---|
invalidIp | Capgo检测到类似机器人流量(Google/云基础设施IP)。 | 在真实用户中忽略;从真实设备和正常网络中重试,或者在一段时间后检查。 |
needPlanUpgrade | 组织已达到计划/设备限制。 | 在仪表板中升级计划或等待下一个计费周期。 |
semver_error | Native app version in config is missing or not valid semver (x.y.z). | 设置 plugins.CapacitorUpdater.version 到有效的 semver, 然后在 SemVer 测试器 |
disablePlatformIos | 中验证并重建应用。 | iOS 在渠道策略中被禁用。 |
disablePlatformAndroid | 如果这是意外的,请在该渠道中启用 iOS 并重新发布路由。如果您故意在此跟踪中阻止 iOS, | 请保持禁用状态并将 iOS 构建移到一个单独的渠道。 |
disableAutoUpdate | Android 在渠道策略中被禁用。 | 如果这是意外的,请在该渠道中启用 Android 并重新发布路由。如果您故意在此跟踪中阻止 Android, |
disableAutoUpdateUnderNative | 请保持禁用状态并将 Android 构建移到一个单独的渠道。 | 推送一个或以上的本机基线版本,或者禁用本机保护功能。 |
disableAutoUpdateMetadata | 频道需要 min_update_version 元数据和应用程序较旧。 | 设置 min_update_version 为目标捆绑包或发布从新本机版本中获取。 |
disableAutoUpdateToMajor | 频道阻止主版本跳转。 | 保持主版本在同一频道策略中,或者允许主版本跳转。 |
disableAutoUpdateToMinor | 频道阻止次版本跳转。 | 保持次版本在同一频道策略中,或者允许次版本跳转。 |
disableAutoUpdateToPatch | 频道阻止此流程的补丁级别跳转。 | 调整您的发布节奏,或者在频道策略中打开补丁级别跳转。 |
disableEmulator | 模拟器更新不允许在此频道中。 | 如果这是意外的,请在测试频道中启用模拟器更新,在那里您验证模拟器。如果这是有意的,请在此频道上阻止模拟器并使用另一个频道进行模拟器构建。 |
disableDevBuild | 此频道的开发版已被阻止。 | 如果这是意外的,请允许开发版更新或将设备移动到支持开发版的频道。如果这是有意的,请将此频道锁定为仅发布版本。 |
disableProdBuild | 在生产模式下发布的设备构建 /updates,而您的频道阻止了它。 | 如果这是意外的,请在该频道中允许生产更新并重新发布。如果这是有意的,请保留限制并将生产构建发送到正确的频道/构建。 |
cannotGetBundle | Capgo无法为选定的捆绑包生成有效的下载URL。 | 重新上传捆绑包或重新生成清单并检查R2/public捆绑包设置。 |
cannotUpdateViaPrivateChannel | 应用程序尝试将自己切换到不允许自我赋值的私有频道。 | 请在频道上启用 allow_device_self_set 或切换到公共/允许频道。 |
channelMisconfigured | 频道自动更新规则缺少所需数据(version_number 没有 min_update_version). | 填充缺失的配置以适应该规则或切换到更简单的自动更新模式。 |
missingBundle | 无下载负载的捆绑包(缺少 external_url/r2_path 和没有清单)。 | 重建/重新上传版本并验证捆绑包具有真实的文件内容。 |
NoChannelOrOverride | 没有匹配该设备的频道(没有云默认值+没有配置回退+没有覆盖)。 | 在控制台中设置频道默认值或保留测试 defaultChannel 在该构建中。 |
rateLimited | 在短时间内调用太多更新/频道调用(通常是渲染循环 setChannel/getChannel). | 停止在渲染中调用。只在用户操作时调用。使用 defaultChannel 在 capacitor.config. |
keyMismatch | 应用和捆绑包加密密钥ID不同(device_key_id vs bundle_key_id). | 在控制台中,比较设备和包裹密钥ID。如果它们不同,请使用相同的密钥和匹配的CLI/插件版本发布;密钥编码在版本之间可能会有所不同。 |
disableDevice | 因为这个频道设置为阻止真实设备,这个真实的手机/平板被阻止了。 | 如果是意外的,请在这个频道中打开真实设备更新。如果是有意的,请保持它被阻止,并将真实设备路由到另一个频道。 |
disablePlatformElectron | 在这个频道中,Electron被阻止。 | 如果这是意外的,请在这个频道中启用Electron并重新发布路由。如果是有意的,请保持它被阻止,并将Electron用户路由到一个专门的频道。 |
customIdBlocked | 发送了一个自定义设备ID,但这个应用程序不接受自定义ID。 | 关闭自定义ID发送或只在您的工作流程需要它时启用自定义ID。 |
blocked_by_server_url | 这个应用程序已 server.url 配置了,所以Capacitor会提供远程URL而不是本地文件。 | 清除 server.url 用于生产构建并保持更新负载本地。 |
backend_refusal | 更新器已 v4, 后端不再接受。 | 升级插件/CLI 到 v5 (+推荐 v8), 使用 Capacitor v5+, 然后重建并重新发布包元数据。 |
| 配置或策略块 |
| Code(s) | 更新被阻止的原因 |
|---|---|
disableAutoUpdate, disableAutoUpdateToMajor, disableAutoUpdateToMinor, disableAutoUpdateToPatch, disableAutoUpdateMetadata, disableAutoUpdateUnderNative | 渠道策略禁止此 semver 跳跃 |
disablePlatformIos, disablePlatformAndroid | 平台在渠道上被禁用 |
disableDevBuild, disableEmulator | 不允许开发版或模拟器 |
disableProdBuild, disableDevice, disablePlatformElectron | 此频道不允许生产版、真实设备或Electron |
customIdBlocked | 不接受此应用的自定义设备ID |
cannotUpdateViaPrivateChannel, NoChannelOrOverride, channelMisconfigured | 频道选择或覆盖失败 |
missingBundle, cannotGetBundle | 包Capgo无法提供的bundle |
needPlanUpgrade | 组织已达到计划/设备限制 |
下载/完整性/安装失败
| Code(s) | 解释 |
|---|---|
download_fail | 包下载失败(网络或响应错误) |
download_manifest_file_fail, download_manifest_checksum_fail, download_manifest_brotli_fail | 无法获取或验证清单文件 |
checksum_fail, checksum_required | 完整性检查失败或缺少校验和 |
unzip_fail, directory_path_fail, canonical_path_fail, windows_path_fail | 文件系统或解压验证失败 |
decrypt_fail | 解密失败(加密包) |
update_fail | 包已安装但应用程序从未调用 notifyAppReady(); 回滚触发 |
download_zip_* 没有后续 set | 下载完成但安装阶段从未完成 |
运行时/平台事件
标题:运行时/平台事件| Code(s) | 含义 |
|---|---|
app_crash, app_crash_native | JavaScript或本机运行时层面的崩溃事件。元数据通常包括堆栈、源代码和活动版本信息。 |
app_anr | Android报告了应用程序未响应 |
app_killed_low_memory, app_killed_excessive_resource_usage | 由于内存或资源限制,应用进程被终止。 |
app_initialization_failure, app_memory_warning | 应用启动被中断或在正常运行前观察到内存压力。 |
webview_javascript_error, webview_unhandled_rejection, webview_resource_error, webview_security_policy_violation, webview_unclean_restart, webview_render_process_gone, webview_content_process_terminated | WebView 生命周期和 JS/渲染错误。 在 JS 和原生层中安装 Sentry,捕获堆栈跟踪、会话/设备上下文和 URL/状态以加快修复速度。 |
os_version_changed, native_app_version_changed | 操作系统或原生应用版本发生变化;这有助于将平台级别的发布效果与 Web 包行为分开。 |
➡️ 需要更深入的code指导?请参阅 Code 日志参考和调试指南.
获取更多关于日志的详细信息
标题为“获取更多关于日志的详细信息”如果您点击特定日志条目,它通常会将您带到 设备的页面。 这使您可以看到该设备的完整历史记录,这对于诊断设备特定的问题或了解其更新旅程非常有帮助。
继续查看日志
继续从日志中前进如果您正在使用 日志 to plan dashboard and API operations, connect it with API概览 了解API概览中的实现细节 介绍 了解介绍中的实现细节 API密钥 了解API密钥中的实现细节 设备 了解设备中的实现细节 包 查看包的实现细节。