跳过内容

命令

本页面是一个引导性的概述。使用当前命令参考表格获取准确的标志: app, 捆绑, 频道, 和 构建.

使用

Usage

所有命令应在您的应用程序文件夹中运行,确保capacitor项目已正确启动。

Init

Init

npx @capgo/cli@latest init [apikey]

该方法将逐步引导您完成流程。

它将将您的应用程序添加到Capgo中。它将添加code到您的应用程序以验证更新。同样,它将构建您的应用程序。另外,它将上传您的应用程序到Capgo。最后,它将帮助您检查更新是否有效。

登录

登录

npx @capgo/cli login [apikey]

该方法将记住您的 apikey 为您。

可选地,您可以提供:

--local 这将在本地存储您的 apikey 在本地存储并忽略它的

npx @capgo/cli doctor

检查您是否已更新为Capgo包的命令。

此命令还将有助于bug报告。

应用

应用

npx @capgo/cli app add [appId]

[appId] 您的应用 ID 格式 com.test.app 如图所示 这里.

💡 如果未提供,则所有选项将在您的配置中自动猜测。

您可以选择:

  • --icon [/path/to/my/icon] 在您的Capgo网页应用中显示自定义图标。
  • --name [test] 在列表中显示自定义名称。
  • --apikey [key] API 键以链接到您的帐户。
  • --retention [retention] 应用程序包的保留期限(以天为单位),默认值为 0,即无限期。

示例 capacitor.config.json appId 和 AppName 的图标将在资源文件夹中猜测

{
"appId": "ee.forgr.capacitor_go",
"appName": "Capgo",
"webDir": "dist"
}

npx @capgo/cli app set [appId]

[appId] 可选项: here.

在列表中显示自定义名称

  • --icon [/path/to/my/icon] 在Capgo web应用中显示自定义图标。
  • --name [test] 将包装元数据(链接和注释)暴露给插件
  • --retention [retention] 设置
  • --expose-metadata [true|false] 是您的应用 ID,格式解释在这里
  • --preview 或 --no-preview 启用或禁用捆绑包和频道预览二维码。
  • --allow-device-custom-id 或 --no-allow-device-custom-id 控制自定义设备ID。
  • --block-provider-infra-requests 或 --no-block-provider-infra-requests 控制阻止已知Google和Apple数据中心请求。
  • --build-timeout-minutes [5-360] 设置原生构建超时。
  • --ios-store-url [url] 或 --android-store-url [url] 设置商店URL。
  • --default-upload-channel [channel] 设置默认上传频道。
  • --default-download-channel [channel] 设置默认下载频道,或者 --disable-download-channels 使所有下载频道为非公共频道。
  • --apikey [key] API 关键字以链接到您的帐户。

npx @capgo/cli app list [appId]

[appId] 您的应用 ID 格式 com.test.app 如图所示 这里.

您可以选择提供以下信息:

  • --apikey [key] API 关键字以链接到您的帐户。

npx @capgo/cli app delete [appId]

[appId] 您的应用 ID 格式 com.test.app 如图所示 这里.

如果需要,您可以提供:

  • --apikey [key] API 键以链接到您的帐户。
  • --bundle 带有版本号的命令只会删除该版本。

npx @capgo/cli app debug [appId]

[appId] 您的应用 ID 的格式 com.test.app 具体说明 这里.

如果需要,您可以提供:

  • --apikey [key] API 键以链接到您的帐户。
  • --device 您要调试的具体设备

npx @capgo/cli app setting [path]

编辑Capacitor配置。

[path] 路径:您要更改的设置路径。例如,要更改 appId, 提供 appId. 如果您希望禁用自动更新,请在 capacitor-updater, 提供 plugins.CapacitorUpdater.autoUpdate 中 --string off.

您必须提供 --string 或 --bool!

Options:

  • --string <string> 选项:
  • --bool <true | false> - 设置为布尔值

npx @capgo/cli bundle upload [appId]

[appId] 是您的应用程序ID,格式解释在这里 这里.

您可以选择提供:

  • --apikey <apikey> API
  • --path <path> 上传文件夹的路径
  • --channel <channel> 要链接的频道
  • --external <url> 链接到外部URL而不是上传到Capgo云
  • --iv-session-key <key> 设置 IV 和会话密钥为外部 URL 的包裹。
  • --s3-endpoint <s3Endpoint> S3 端点的 URL。 不支持 delta 上传或外部选项。
  • --s3-region <region> 您的 S3 存储桶的区域。
  • --s3-apikey <apikey> API 键为您的 S3 端点。
  • --s3-apisecret <apisecret> API 秘密为您的 S3 端点。
  • --s3-bucket-name <bucketName> 您的 AWS S3 存储桶的名称。
  • --s3-port <port> 您的 S3 端点的端口。
  • --no-s3-ssl 禁用 S3 上传的 SSL。
  • --key <key> 自定义路径为公共签名密钥(v1 系统)。
  • --key-data <keyData> 公共签名密钥(v1 系统)。
  • --key-v2 <key> 自定义路径为私有签名密钥(v2 系统)。
  • --key-data-v2 <keyData> 私有签名密钥(v2 系统)。
  • --bundle-url 打印 bundle URL 到标准输出。
  • --no-key 忽略签名密钥并发送清晰的更新。
  • --no-code-check 忽略检查源 code 和索引是否在根目录中存在的 notifyAppReady() 是否被调用。
  • --display-iv-session 在控制台中显示用于加密更新的 IV 和会话密钥。
  • --bundle <bundle> 要上传的 bundle 的版本号。
  • --auto-bump [level] 从渠道关联的 bundle 自动递增,否则使用最新的远程应用版本。级别: major, minor (默认) patch (别名) fix), metadata, 或 ai (Workers AI 比较本地文件与之前 Capgo/渠道 delta 清单,推断级别,并记录一个短的原因;跳过 AI 并增加 patch 如果没有之前 Capgo 版本,则增加直到找到一个空闲的名称(删除的名称保持占用)。不能与 --bundle.
  • --min-update-version <minUpdateVersion> 最小版本要求更新到此版本。仅在设置为渠道中的元数据时使用禁用自动更新。
  • --auto-min-update-version 根据本地包设置最小更新版本。
  • --ignore-metadata-check 忽略上传时的元数据(node_modules)检查。
  • --ignore-checksum-check 忽略上传时的校验和检查。
  • --timeout <timeout> 上传过程超时时间(以秒为单位)。
  • --delta 上传Delta(清单)文件,伴随完整包。
  • --delta-only 仅上传Delta(清单)更新,跳过完整包。
  • --no-delta 禁用Delta(清单)上传(如果启用了即时应用模式,但您仍想上传完整包)。 autoUpdate 使用TUS协议上传包。
  • --tus 使用多部分协议上传数据到S3,已弃用,请使用TUS代替。
  • --multipart 用于上传外部包的加密校验和(签名)。
  • --encrypted-checksum <encryptedChecksum> 包.json文件路径。适用于多包仓库。
  • --package-json <packageJson> 用于上传外部包的加密校验和(签名)。
  • --auto-set-bundle 设置 capacitor.config.json 中的包。
  • --node-modules <nodeModules> node_modules 的路径列表。对于多包项目(以逗号分隔,例如:../../node_modules,./node_modules)有用。

⭐️ 外部选项帮助解锁 2 个案例:企业有隐私顾虑,不将 code 发送到第三方,并且应用程序大于 200 MB。通过设置此选项,Capgo 只会存储 zip 链接并将链接发送到所有应用程序。

👀 Capgo 云从未查看链接中的内容(对于外部选项),或在 code 中存储的内容。

🔑 您可以通过使用加密来添加第二层安全性,那么 Capgo 就无法查看或修改任何内容,它变得“无需信任”。

示例 package.json 用于版本

{
"version": "1.0.2"
}

⛔ 版本应大于“0.0.0”。

💡 不要忘记每次发送时更新版本号,版本号不能被覆盖或重复使用,因为安全原因。

npx @capgo/cli bundle list [appId]

[appId] 您的应用 ID 格式 com.test.app 详细说明 请参见.

可选项是:

  • --apikey [key] API 键用于与您的帐户关联。

删除

删除

npx @capgo/cli bundle delete [appId]

[appId] 您的应用 ID 格式 com.test.app 详细说明 请参见.

可选项是:

  • --apikey [key] API 键用于与您的帐户关联。
  • --bundle 使用版本号将只删除此版本。

在 SemVer 范围内为主要版本删除到 Cloud

npx @capgo/cli bundle cleanup [appId] --bundle=[majorVersion] --keep=[numberToKeep]

[appId] 您的应用 ID 格式为 com.test.app 如上所述 请参阅.

您可以选择提供:

  • --apikey [key] API 键以链接到您的帐户。
  • --bundle [majorVersion] 您可以选择删除的版本号,删除前面的包将保留最后一个 + numberToKeep.
  • --keep [numberToKeep] 您可以选择保留的包数(默认为 4)。

例如:如果您有 10 个版本,从 10.0.1 到 10.0.11,如果您使用 npx @capgo/cli cleanup [appId] --bundle=10.0.0 将会移除 10.0.1 到 10.0.6。 10.0.7 到 10.0.11 将被保留。

如果您总共有 20 个版本,并且没有提供类似这样的包号: npx @capgo/cli cleanup [appId] --keep=2 将移除 18 个版本,保留最后 2 个。

此命令将要求确认,显示将保留和移除的表格。

警告: 此命令已被弃用,将在下一个重大版本中移除。 请使用新加密系统。 npx @capgo/cli bundle encrypt [path/to/zip]

此命令用于在外部源中存储您的 code 或用于测试目的。

如果需要,请提供:

--key [/path/to/my/private_key] 您的私钥路径。 --key-data [privateKey] 如果您想使用内联方式,则提供私钥数据。 此命令将打印您的 ivSessionKeyy 并生成一个加密的 zip 文件,用于与上传命令或解密命令一起使用。

npx @capgo/cli bundle encrypt [path/to/zip] [checksum]

当您使用外部源存储您的 code 或进行测试时,使用此命令。 校验和是由 —key-v2 生成的 bundle 的 sha256 值,用于在解密后验证文件的完整性。 校验和将使用私钥加密并与 bundle 一同发送。 在加密 v2 中,校验和升级为 bundle 的“签名”。

如果需要,请提供:

--key [/path/to/my/private_key] 您的私钥路径。 --key-data [privateKey] 如果您想使用内联方式,则提供私钥数据。 --json 以 JSON 格式输出信息。 此命令将打印您的 ivSessionKeyy 并生成一个加密的 zip 文件,用于与上传命令或解密命令一起使用。

npx @capgo/cli bundle decrypt [path/to/zip] [ivSessionKey]

您可以选择提供:

--key [/path/to/my/private_key] 您的私钥路径。

--key-data [privateKey] 私钥数据,如果您想使用内联。这个命令主要用于测试目的,会解密zip并在控制台打印base64解密的会话密钥。

npx @capgo/cli bundle decryptV2 [path/to/zip] [ivSessionKey]

您可以选择提供:

--key [/path/to/my/private_key] 您的私钥路径。 --key-data [privateKey] 私钥数据,如果您想使用内联。这个命令主要用于测试目的,会解密zip并在控制台打印base64解密的会话密钥。 --checksum [checksum] 文件校验和,解密后会校验校验和。

npx @capgo/cli bundle zip [appId]

[appId] 是您的应用程序ID,格式解释在这里 这里.

可选,您可以给:

  • --path [/path/to/my/bundle] 上传特定文件夹
  • --bundle [1.0.0] 设置文件名中的捆绑包版本号
  • --name [myapp] 覆盖文件名
  • --json 以 JSON 格式输出信息
  • --no-code-check 忽略 code 检查并发送捆绑包
  • --key-v2 使用新加密系统。由于新加密系统使用更好的校验和来验证文件完整性,因此这是必需的

npx @capgo/cli bundle compatibility [appId] -c [channelName]

[appId] 是您的应用程序ID,格式解释在这里 这里. [channelName] 要检查的频道名称。

您可以选择提供:

  • --apikey [key] API
  • --text 使用文本代替表情符号
  • --channel [channel] 要检查的频道名称。
  • --package-json <packageJson> 包.json文件的路径。适用于多包项目
  • --node-modules <nodeModules> node_modules文件夹的路径列表。适用于多包项目(以逗号分隔,例如:../../node_modules,./node_modules)

频道

频道

npx @capgo/cli channel add [channelName] [appId]

[channelName] 新频道的名称,例如 production 或 beta. [appId] 您的应用 ID,格式 com.test.app 被解释 here.

npx @capgo/cli channel delete [channelName] [appId]

[channelName] 您要删除的频道名称。 [appId] 您的应用 ID,格式 com.test.app 被解释 here.

npx @capgo/cli channel list [appId]

[appId] 您的应用 ID 格式 com.test.app 如图所示 这里.

您可以选择:

  • --apikey [key] API

npx @capgo/cli channel set [channelName] [appId]

[appId] 您要配置的频道名称,例如 这里. [channelName] is explained production 或 beta.

您可以选择

  • --bundle [1.2.3] 将您的应用程序包(bundle)已发送到云端,链接到一个频道(channel)
  • --latest 获取包(bundle)版本号 package.json:version,不能与 --bundle.
  • --state [ normal | default ] 设置频道(channel)状态,可以 normal 或 default一个频道需要 default.
  • --downgrade 允许频道(channel)向设备发送降级版本
  • --no-downgrade 不允许频道(channel)向设备发送降级版本
  • --upgrade 允许频道(channel)向设备发送升级(主)版本
  • --no-upgrade 不允许频道(channel)向设备发送升级(主)版本
  • --ios 允许频道向 iOS 设备发送版本信息。
  • --no-ios 不允许频道向 iOS 设备发送版本信息。
  • --android 允许频道向 Android 设备发送版本信息。
  • --no-android 不允许频道向 Android 设备发送版本信息。
  • --self-assign 允许设备自行分配到此频道。
  • --no-self-assign 不允许设备自行分配到此频道。
  • --disable-auto-update STRATEGY 禁用此频道的自动更新策略。可能的选项包括:主版本、次版本、修订版本、元数据、无。
  • --apikey [key] API用于链接到您的帐户。

禁用更新策略

禁用更新策略

禁用更新策略
Capgo cannot update native code thus an update from a version with the old native code to a version with the updated native code should not be possible. There are a couple of ways to achieve that.

首先,策略。它防止从本地基线更新 major ->目标包 0.0.0 . 主要是突出显示的数字( 1.0.0.0.0 和1第二是 0.0.0).
策略。它防止更新时,目标包的主要或次要版本与设备本地基线不同,例如 minor 或 0.0.0 -> 1.1.0 第三, 1.1.0 -> 1.2.0.

第三步, patch strategy. It was added into capgo as a very strict mode. It’s not recommended to be used unless you fully understand how it works. In order for it to accept an update, the following conditions must be met:

  • 目标包和 version_build
  • The minor is the same between the target bundle and version_build
  • 补丁包在目标包和 version_build
  • 仅版本后缀可能不同,例如预发布(-beta.2)或构建元数据(+build.2)

以下是更新允许或拒绝的场景示例

  • 1.0.0-beta.1 -> 1.0.0-beta.2 允许
  • 1.0.0+build.1 -> 1.0.0+build.2 允许
  • 1.0.0 -> 1.0.1 被阻止
  • 1.0.0 -> 1.1.0 被阻止
  • 1.0.0 -> 2.0.0 被阻止

策略比较使用发送的本地基线 version_build,而不是下载的当前包发送的 version_name.

最后,策略比较最复杂的场景 metadata 策略。
首先你需要知道,在启用它后,最初的更新 将会 失败
因为渠道缺少所需的元数据。

如果渠道缺少元数据,你会看到一个类似这样的消息:

找不到元数据
如果你看到类似这样的消息,你就知道你需要去当前的包中为失败的渠道设置元数据。 misconfigured column

列

配置错误的表格 Bundle number然后去失败的渠道并点击

定位失败的频道

填写后 Minimal update version 字段。这应该是 语义版本.
如果您传入的值不是语义版本,则会出现错误,但如果一切顺利,您应该会看到类似这样的内容:

设置最小版本

现在,您很可能不想每次更新时都手动设置此数据。幸运的是,CLI 将防止您在没有此元数据的情况下发送更新

CLI 无元数据失败

使用选项上传包时,需要正确传入 metadata 语义版本 --min-update-version 语义版本 语义版本. 类似于此:

CLI 上传

The --min-update-version 不是唯一兼容性实现方式。 兼容性也可以通过 --auto-min-update-version。以下是兼容性实现的步骤。

首先,它会检查当前上传到频道的版本的兼容性。它会检查兼容性与 bundle compatibility 命令相同。 其次,如果新版本100%兼容,它会复用频道中最新版本的 min_update_version 。 如果不兼容,则它会将 min_update_version 设置为新上传版本的

。 min_update_version 使用此选项时,您总是会获得有关

的信息。它会显示如下信息:

如果新版本不兼容,应该显示如下内容

最小更新版本不兼容

端到端加密(无信任)

标题:端到端加密(无信任)

Capgo 支持端到端加密,这意味着您的捆绑包(code)在发送到云端之前被加密,并在设备上解密。为此,您需要生成一个RSA密钥对,您可以使用以下命令生成它。

加密系统是RSA和AES的组合,RSA密钥用于加密AES密钥,AES密钥用于加密文件。

请参阅下文获取更多关于加密系统的信息。

加密原理

加密方案

为您的应用创建密钥

标题:为您的应用创建密钥

npx @capgo/cli key create

您可以选择提供: --force 覆盖现有密钥。该命令将为您创建一个密钥对,并要求您将私钥保存在安全的地方。建议您不要将私钥提交到 Git,并且不要与任何人共享。

在本地测试后,删除密钥并在 CI 步骤中添加它 key save

保存密钥

保存密钥

npx @capgo/cli key save

标题:保存密钥

--key [/path/to/my/public_key] 您可以选择提供:

--key-data [publicKey] 您的公钥文件路径

如果您想使用内联,则可以提供公钥数据。该命令对于您遵循了建议并未在应用配置中提交密钥的用户非常有用。

CI 集成

为了自动化您的工作,我建议您让GitHub执行推送到我们的服务器的任务。

为了自动化您的工作,我建议您让 GitHub 动作负责将密钥推送到我们的服务器

__CAPGO_KEEP_0__ 动作教程

Section titled “我们的示例应用”

GitHub - Cap-go/示例应用

请记住配置 CI 环境变量并使用您的 API 密钥

如果您正在使用 命令 来规划仪表板和 API 操作,连接它与 API 概览 了解 API 概览中的实现细节 介绍 了解介绍中的实现细节 API 键 API Keys的实现细节 设备 __CAPGO_KEEP_0__ Keys的实现细节 设备 包