调试
复制一个包含安装步骤和完整Markdown指南的设置提示。
理解云日志:
标题:理解云日志:如果您收到云拒绝 code 并需要具体的修复步骤,请参阅 常见更新问题.
Capgo 日志可以包含事件的元数据。在仪表盘中,使用动作过滤器过滤以下列的蛇形动作 code 列表,并点击元数据单元格以复制完整的 JSONayload。元数据对于崩溃和 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 作为备份。 |
| 无法通过私有频道更新 (无法通过私有频道更新) | 设备尝试自行与私有频道建立关联,但频道设置不允许设备自行关联(allow_device_self_set 频道配置错误 |
| 频道配置错误 (频道设置为通过版本号禁用自动更新() | ),但 bundle 的disable_auto_update: 'version_number'元数据禁用自动更新 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' 防止更新增加次版本号,例如阻止 1.2.x 从更新到 1.3.x. |
| disable_auto_update_to_patch (disableAutoUpdateToPatch) | 频道设置 disable_auto_update: 'patch' 此设置防止更新升级补丁版本号,或者仅允许在同一主版本号.次版本号范围内进行补丁级别更新。 |
| missing_bundle (missingBundle) | 分配给此频道的包没有可下载的内容。这意味着包没有 external_url没有 r2_path它不是内置版本,并且没有可下载的清单条目。 |
| no_channel (NoChannelOrOverride) | 设备没有为此应用程序配置默认频道,并且没有特定的频道重写。至少需要一个才能让更新工作。 |
| 速率限制 (rateLimited) | 设备因过多请求而被速率限制。 |
| 密钥ID不匹配 (keyMismatch) | 设备的加密公钥与用来加密捆绑包的公钥不符。元数据包括 device_key_id, bundle_key_id, 和 version 帮助识别不匹配。 |
来自设备
标题为“来自设备”的部分| code | 描述 |
|---|---|
| ping | 内部测试动作,用于验证统计系统是否正常工作。 |
| get | 已将下载新版本的信息发送到设备。 |
| delete | 已在设备上删除一个捆绑包。 |
| set | 已在设备上设置一个捆绑包。 |
| set_fail | 捆绑包设置失败。 |
| reset | 设备已重置为初始状态。 builtin 打包。 |
| 下载 XX | 已下载新打包 - 进度由 XX% (10% 增量) 指示。 |
| 下载完成 | 新打包下载完成。 |
| 下载更新清单开始 | 设备开始下载更新清单。 |
| 下载更新清单完成 | 设备完成下载更新清单。 |
| 下载打包存档开始 | 设备开始下载打包存档。 |
| 下载打包存档完成 | 设备完成下载了捆绑包存档。 |
| __CAPGO_KEEP_0__ | 下载的清单项失败;统计数据载荷表明 version_name __CAPGO_KEEP_0__ version:fileName 以 pinpoint 资产。 |
| __CAPGO_KEEP_0__ | 清单文件校验和验证失败。 |
| __CAPGO_KEEP_0__ | 清单文件使用 Brotli 解压失败。 |
| __CAPGO_KEEP_0__ | 新捆绑包下载失败。 |
| __CAPGO_KEEP_0__ | 新包已安装但未能成功调用 notifyAppReady. |
| checksum_fail | 新包未能验证校验和。这可能是由于以下原因: 1) 校验和类型不匹配: 最新版本的CLI和插件(版本5.10.0+,6.25.0+或7+)使用SHA256校验和,而旧版本的插件使用CRC32。如果您看到校验和失败,请检查校验和是否为CRC32(较短的哈希值)而不是SHA256。这通常表明包已上传旧版本的CLI。请在Capgo控制台中验证包版本 - 自版本5.10.0/6.25.0/7创建的包应使用SHA256。如果您看到CRC32校验和,请确保您已安装最新的插件版本(CLI检查您的本地插件版本以确定要上传的校验和类型),然后升级您的CLI并重新上传包。 2) 加密密钥不匹配(在插件版本8.3.0或5/6/7.38.0以下): 在旧版本的插件中,如果设备的公钥与用于加密包的密钥不匹配,解密将会失败并导致校验和失败。如果您正在使用加密并看到 checksum_fail请验证您的应用的 capacitor.config.json 与上传包的私钥是否匹配。升级到插件版本8.3.0+(或5/6/7.38.0+)将使服务器返回一个合适的 keyMismatch 错误,使诊断此问题更容易。 |
| 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 | 由于资源使用过多,操作系统杀死了应用程序。元数据可以包含资源类型或平台原因。 |
| 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_unclean_restart | 应用程序检测到之前的WebView会话未正常关闭。这可以帮助识别更新后可能出现的死循环。 |
| Android WebView 渲染进程已退出 | Android 报告 WebView 渲染进程已退出。元数据可能包含渲染器是否崩溃以及渲染器优先级。 |
| iOS WebView 内容进程已终止 | iOS 报告 WebView 内容进程已终止。可用的元数据可能包含活动包和页面 URL。 |
| 下载的包未能解密 | getChannel |
| 获取设备当前的频道 (setChannel) | 成功设置设备的频道 |
| __CAPGO_KEEP_0__ (__CAPGO_KEEP_0__) | __CAPGO_KEEP_0__ |
| 卸载 | 应用程序已卸载或Capgo数据已清除。 |
| 被服务器阻止的URL | 您的capacitor配置中存在Server.url,这使得Capacitor以远程URL而不是本地文件为服务,而我们的更新程序则是以本地文件为服务。Server.url被Capacitor的开发者认为在生产环境中是坏的做法,并可能导致许多问题和插件无法正常工作。 |
捆绑状态
捆绑状态SUCCESS:捆绑安装完成ERROR:捆绑安装或下载失败PENDING:下载完成,待发布DELETED:捆绑已删除,但仍用于统计DOWNLOADING:当前下载捆绑
了解设备日志:
Section titled “了解设备日志:”为Capgo云用户提供了一个调试命令。
npx @capgo/cli@latest app debug这将允许您检查应用中发生的所有事件,并在更新未发生时找到解决方案。
在Xcode中找到您的日志
Android:
Android:在 Android Studio 中找到您的日志
日志说明
日志说明Failed to download from=> 相同 下载失败notifyAppReady was not called, roll back current bundle=> 与上述相同 更新失败
在您的设备中找到下载的包
在您的设备中找到下载的包iOS
iOS在 iOS 上调试时,您需要将应用程序下载到您的计算机上,方法如下:
Xcode 内置了用于检查 iOS 设备上开发者安装的应用程序文件系统的功能。

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

选择 Download Container… 将下载并导出应用程序文件系统快照的 .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 文件夹以查看所有版本