跳过内容

命令

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

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

npx @capgo/cli@latest init [apikey]

该方法旨在一步一步地引导您入门。

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

npx @capgo/cli login [apikey]

该方法旨在记住您的 apikey 为您。

您可以选择提供:

--local 这将在本地存储您的 API密钥 在本地存储API密钥并将其添加到.gitignore文件中。

npx @capgo/cli doctor

用于检查您是否已更新到Capgo包的最新版本的命令。

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

应用

App

添加

添加

npx @capgo/cli app add [appId]

[appId] 添加 com.test.app your app ID 的格式 is explained.

here

💡 如果不提供,所有选项都会在您的配置中被猜测。

  • --icon [/path/to/my/icon] 在Capgo web 应用中显示自定义图标。
  • --name [test] 为您的 web 应用显示自定义图标。
  • --apikey [key] API 键用于链接到您的账户。
  • --retention [retention] __CAPGO_KEEP_0__ key 链接到您的帐户。

示例 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] Section titled “Set”
  • --expose-metadata [true|false] is your app ID, the format is explained
  • --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 key連接到您的帐户。

npx @capgo/cli app list [appId]

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

您可以选择提供:

  • --apikey [key] API key連接到您的帐户。

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!

选项:

  • --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 和会话密钥(bundle URL 外部)。
  • --s3-endpoint <s3Endpoint> S3 端点的 URL。 不支持 delta 上传或外部选项。
  • --s3-region <region> S3 存储桶的区域。
  • --s3-apikey <apikey> S3 端点的API密钥。
  • --s3-apisecret <apisecret> S3 端点的API密钥。
  • --s3-bucket-name <bucketName> 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> 用于monorepos的package.json路径。
  • --package-json <packageJson> __CAPGO_KEEP_0__
  • --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 生成的包的 sha256 值,用于验证文件解密后是否完整。 校验和将使用私钥加密并与包一起发送。 在加密 v2 中,校验和升级为包的“签名”。

如果需要,请提供:

--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解密的会话密钥。

解密 V2

解密 V2

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> package.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 如上所述 查看.

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

[channelName] 删除 [appId] 您的应用ID的格式 com.test.app 如上所述 查看.

npx @capgo/cli channel list [appId]

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

您可以选择提供:

  • --apikey [key] API

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

[appId] 您要配置的频道名称,例如 这里. [channelName] __CAPGO_KEEP_0__ 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。主要是突出显示的数字(1。0.0和 0.0.0).
第二是 minor 策略。它防止更新,当目标包的主要或次要版本与设备本地基线不同时,例如 0.0.0 -> 1.1.0 或 1.1.0 -> 1.2.0.

第三, patch 策略。它被添加到capgo中作为一个非常严格的模式。除非您完全了解它的工作原理,否则不建议使用它。 为了接受更新,以下条件必须满足:

  • 目标包和 version_build
  • 目标包和 version_build
  • 修补程序在目标捆绑包和 version_build
  • 仅版本后缀可能不同,例如预发布(-beta.2)或构建元数据(+build.2)

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

  • 1.0.0-β.1 -> 1.0.0-β.2 允许
  • 1.0.0+构建.1 -> 1.0.0+构建.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 有效的语义版本号 设置最小版本号Capgo CLI 命令

CLI 上传带有元数据

CLI命令 --min-update-version 兼容性并非唯一途径。\n此外,还存在 --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 集成

CI 集成

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

GitHub 动作教程

GitHub - Cap-go/示例应用

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

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