调试
复制一个包含安装步骤和完整 Markdown 指南的配置提示。
理解云日志:
标题:理解云日志:如果您收到云拒绝 code 并需要具体的修复步骤,请参阅 常见更新问题.
Capgo 日志可能包含事件的元数据。 在仪表板中,使用动作过滤器过滤以下列的蛇形动作 code 列表,并点击元数据单元格以复制完整的 JSON 有效载荷。 元数据对于崩溃和 WebView 事件特别有用,因为它可以包含上下文信息,如错误消息、源 URL、行和列、进程状态、内存压力或平台特定原因。 老旧的日志仍然可以显示在括号内列出的遗留 camelCase 别名。
来自后端
标题:来自后端| code | 描述 |
|---|---|
| 无效 IP (__CAPGO_KEEP_0__) | 用户位于Google数据中心,更新时间小于4小时。这是为了防止Google机器人设备被计入您的帐户。 |
| __CAPGO_KEEP_1__ (__CAPGO_KEEP_1__之前 __CAPGO_KEEP_2__) | 表示您已达到计划限制,设备将不会接收更新,直到您升级或下个月。 |
| __CAPGO_KEEP_3__ (设备已有最新可用的版本。) | __CAPGO_KEEP_4__ |
| 本地版本不符合预期的语义版本格式。 | InvalidIp |
| iOS平台被禁用 (disablePlatformIos) | 设备位于iOS平台,但在渠道设置中被禁用。 |
| Android平台被禁用 (disablePlatformAndroid) | 设备位于Android平台,但在渠道设置中被禁用。 |
| 自动更新被禁用 (disableAutoUpdate) | 自动更新被禁用,由兼容性政策所致。元数据包含 auto_update 匹配规则,如 major, minor, patch, metadata,或 none. |
| 禁用本地应用的自动更新 (__CAPGO_KEEP_0__) | 设备版本为 (1.2.3当前渠道有一个更新 (1.2.2) 可以在设备版本上发送,但在渠道设置中已禁用。 |
| __CAPGO_KEEP_0__ (__CAPGO_KEEP_0__) | 设备有开发版,但在渠道设置中已禁用。 |
| __CAPGO_KEEP_0__ (__CAPGO_KEEP_0__) | 设备是模拟器,但在渠道设置中已禁用。 |
| __CAPGO_KEEP_0__ (__CAPGO_KEEP_0__) | 生成有效的签名 URL 失败,无法下载 bundle。这通常是因为 bundle URL 生成失败或返回无效的 URL,而没有可用的 manifest 作为 fallback。 |
| 无法通过私有频道更新 (无法通过私有频道更新) | 设备尝试自我关联到私有频道,但频道设置不允许设备自我关联(allow_device_self_set 频道配置错误 |
| 频道配置错误 (频道设置禁用通过版本号自动更新() | ),但 bundle 的disable_auto_update: 'version_number'字段为 null,无法确定哪些设备应该接收更新。 min_update_version 禁用到元数据的自动更新 |
| 禁用到元数据的自动更新 (禁用到元数据的自动更新) | 自动更新被版本号元数据禁用。该频道要求设备的版本至少为 min_update_version,但设备当前版本低于此阈值。 |
| disable_auto_update_to_major (disableAutoUpdateToMajor) | 频道设置 disable_auto_update: 'major' 防止更新将增加主版本号,例如阻止 1.x.x 从更新到 2.x.x. |
| disable_auto_update_to_minor (disableAutoUpdateToMinor) | 频道设置 disable_auto_update: 'minor' 阻止目标捆绑包,其主或次版本号与设备本地基线(version_build)不同,例如 1.2.3 -> 1.3.0. |
| disable_auto_update_to_patch (disableAutoUpdateToPatch) | 频道设置 disable_auto_update: 'patch' 阻止任何主要、次要或补丁号的变化 version_build; 只允许后缀变化,而 MAJOR.MINOR.PATCH 保持相同,例如 1.0.0-beta.1 -> 1.0.0-beta.2. |
| missing_bundle (缺少的捆绑包) | 为此频道分配的捆绑包没有可下载的内容。这意味着捆绑包没有 external_url,没有 r2_path,它不是内置版本,并且没有可下载的清单条目。 |
| 无频道 (没有指定的通道或覆盖) | 没有为此应用配置默认通道,且设备上没有特定的通道覆盖。至少需要有一个才能让更新正常工作。 |
| 速率限制 (速率限制) | 设备因过多请求而被速率限制。 |
| 密钥ID不匹配 (设备的加密公钥与用来加密包裹的公钥不匹配。元数据包括) | ,并 device_key_id, bundle_key_id用来帮助识别不匹配。 version 来自设备 |
标题为“来自设备”的部分
来自设备| code | 描述 |
|---|---|
| ping | 内部测试动作,用于验证统计系统是否正常工作。 |
| get | 已将下载新版本的信息发送到设备。 |
| delete | 已在设备上删除一个包。 |
| set | 已在设备上设置一个包。 |
| set_fail | 设置包失败。 |
| 重置。 | 设备已重置为 builtin 打包。 |
| 下载_XX | 已下载新打包 - XX% (10% 增量) 进度指示。 |
| 下载完成。 | 设备开始下载更新清单。 |
| 设备下载更新清单完成。 | 下载zip开始 |
| 下载zip完成 | 下载清单开始 |
| 下载清单完成 | The device started downloading the bundle archive. |
| 下载 ZIP 完成 | The device finished downloading the bundle archive. |
| 下载清单文件失败 | One manifest entry failed to download; the stats payload puts version_name 在这种形式 version:fileName 以 pinpoint 资产 |
| 下载清单校验和失败 | 清单文件校验和验证失败 |
| 清单文件解压缩 Brotli 失败 | 下载失败 |
| 下载失败 | The new bundle failed to download. |
| update_fail | The new bundle has been installed but failed to call notifyAppReady. |
| checksum_fail | The new bundle failed to validate the checksum. This can happen for several reasons: 1) Checksum type mismatch: The latest version of the CLI and plugins (version 5.10.0+, 6.25.0+ or 7+) use SHA256 checksums, while older plugins used CRC32. If you see a checksum fail, check if the checksum is CRC32 (a shorter hash) rather than SHA256. This usually indicates the bundle was uploaded with an old version of the CLI. Verify your bundle version in the Capgo dashboard - bundles created since version 5.10.0/6.25.0/7 should use SHA256. If you’re seeing CRC32 checksums, ensure you have the latest plugin version installed locally (the CLI checks your local plugin version to determine which checksum type to upload), then upgrade your CLI and re-upload the bundle. 2) Encryption key mismatch (on plugin versions below 8.3.0 or 5/6/7.38.0): 在较旧的插件版本中,如果设备的公钥与用于加密包的密钥不符,解密会失败并导致校验和失败。 checksum_fail如果您正在使用加密并看到 capacitor.config.json 请确认应用程序中的 keyMismatch 与用于上传包的私钥匹配。升级到插件版本 8.3.0+ (或 5/6/7.38.0+) 将使服务器返回一个合适的错误信息,从而使诊断此问题更容易。 |
| windows_path_fail | Windows路径错误 |
| canonical_path_fail | 文件路径不规范 |
| directory_path_fail | 压缩文件路径错误 |
| unzip_fail | 解压失败 |
| low_mem_fail | 下载失败,设备内存不足 |
| app_moved_to_background | 应用程序已切换到后台 |
| app_moved_to_foreground | 应用程序进入前台状态。 |
| app_crash | 应用程序从 JavaScript 或 Capacitor层检测到崩溃。元数据可以包含消息、堆栈、源和活动捆绑上下文。 |
| app_crash_native | 本机层报告了平台崩溃。元数据可以包含平台、原因、堆栈和可用进程详细信息。 |
| app_anr | Android 报告了应用程序未响应事件。可用元数据包括 ANR 原因、线程或可用跟踪摘要。 |
| app_killed_low_memory | 应用程序进程在低内存压力下被杀死。可用元数据包括可用内存和平台信号。 |
| app_killed_excessive_resource_usage | OS 因过度资源使用而杀死了应用程序。可用元数据包括资源类型或平台原因。 |
| app_initialization_failure | 应用启动流程或更新器启动失败,未能正常启动。元数据可能包含失败步骤和错误信息。 |
| app_memory_warning | iOS 发出内存警告。元数据可能包含活动包和可用内存上下文。 |
| webview_javascript_error | WebView 报告未捕获的 JavaScript 错误。元数据可能包含错误信息、源 URL、行号、列号和堆栈信息。 |
| webview_unhandled_rejection | WebView 报告未处理的 Promise 拒绝。元数据可能包含拒绝原因、源 URL 和堆栈信息。 |
| webview_resource_error | WebView 资源加载失败。元数据可能包含 URL、状态 code、资源类型和错误信息。 |
| webview_security_policy_violation | WebView 报告内容安全策略违规。元数据可能包含被阻止的 URI、指令和文档 URL。 |
| webview_未清洁重启 | 应用程序检测到之前的WebView会话没有清洁地关闭。这可以帮助识别更新后循环崩溃。 |
| webview渲染进程丢失 | Android报告WebView渲染进程已退出。元数据可以包括渲染器是否崩溃以及渲染器优先级。 |
| webview内容进程终止 | iOS报告WebView内容进程已终止。元数据可以包括活动包和页面URL(当可用时)。 |
| 解密失败 | 下载的包未能解密。 |
| 获取频道 (获取当前设备的频道。) | 设置频道 |
| 设置当前设备的频道。 (设置频道) | 已为设备设置频道。 |
| 卸载 | 应用程序已卸载或Capgo数据已清除。 |
| 被服务器阻止的URL | 您的capacitor配置中存在Server.url,这使得Capacitor以远程URL而不是本地文件为服务,而我们的更新程序则以本地文件为准。Server.url被Capacitor开发者认为在生产环境中是坏的实践,并可能导致许多问题和插件无法正常工作。 |
捆绑状态
捆绑状态SUCCESS:捆绑安装完成ERROR:捆绑安装或下载失败PENDING:下载完成,待发布DELETED:捆绑已删除,但仍用于统计DOWNLOADING: 正在下载一个捆绑包
理解设备日志:
标题:理解设备日志:调试命令:
标题:调试命令:Capgo 云用户有一个调试命令
npx @capgo/cli@latest app debug这将允许您检查应用程序中发生的所有事件并找到解决方案,如果更新没有发生
IOS
标题:IOS在 Xcode 中找到您的日志
Android:
Android:在 Android Studio 中找到您的日志
日志说明
日志说明Failed to download from=> 与 下载失败notifyAppReady was not called, roll back current bundle=> 与下载失败相同 更新失败
在您的设备中找到下载的包
Section titled “在设备中找到下载的包”要在 iOS 上调试,您需要将应用程序下载到您的计算机上,方法如下:
Xcode 有一个内置功能,可以在 iOS 设备上检查开发者安装的应用程序的文件系统。

要实现这一点:
- 将您的设备连接到 Mac,然后在 Xcode 菜单栏中选择窗口 > 设备。
- 在 Devices 部分的左侧面板中选择您的设备。
- 这将显示该设备的开发者安装的应用程序列表。
- 选择要检查的应用程序,然后选择屏幕底部附近的 3 个点图标。
- 在这里,您可以通过选择下载快照来查看当前文件系统。

选择“下载容器…”将下载并导出文件系统快照作为一个 .xcappdata 文件供您浏览。

右键点击此文件并选择“显示包内容”以打开文件夹。
打开 App Data 文件夹,您应该现在看到几个文件夹,如 Documents、Library、tmp 等。

然后您会在 2 个文件夹中找到一个版本:
library/NoCloud/ionic_built_snapshots 在应用重启后是必要的
并且 documents/versions 用于热重载
Android
Android在 Android 上调试时,您需要从 Android Studio 访问设备:
- 点击 "视图 > 工具窗口 > 设备文件浏览器" 或工具窗口栏上的 "设备文件浏览器" 按钮以打开设备文件浏览器。
- 从下拉列表中选择一个设备。
- 打开路径 data/data/APP_NAME/ 其中 APP_NAME 是您的应用 ID。

然后找到 versions 文件夹以查看所有版本
理解 ios 生产崩溃日志
标题:理解 ios 生产崩溃日志继续 Debugging
标题:继续 Debugging如果您正在使用 Debugging 来计划原生插件工作,连接它到 使用 @capgo/capacitor-updater for the native capability in Using @capgo/capacitor-updater, 使用 @Capgo/__CAPGO_KEEP_1__-updater, 为产品工作流程在 Capgo 插件目录中, Capacitor 插件由 Capgo 为实现细节在 Capacitor 插件由 Capgo, 添加或更新插件 为实现细节在添加或更新插件,和 Ionic 企业插件替代方案 为产品工作流程在 Ionic 企业插件替代方案中。