跳过内容

命令

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

使用指南

使用

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

初始化

初始化

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 web应用中显示自定义图标。
  • --name [test] 在列表中显示自定义名称。
  • --apikey [key] API密钥以链接到您的帐户。
  • --retention [retention] 应用程序捆绑的保留期限(以天为单位),默认值为0,即无限。

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

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

设置

设置

npx @capgo/cli app set [appId]

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

您可以选择以下选项

  • --icon [/path/to/my/icon] 在 Capgo 网站应用中显示自定义图标
  • --name [test] 在列表中显示自定义名称
  • --retention [retention] 应用程序捆绑的保留期限(以天为单位),默认值为0,即无限
  • --expose-metadata [true|false] 用于暴露捆绑包元数据(链接和注释)给插件。
  • --preview--no-preview 您可以选择使用Capacitor Live Update、Appflow或Capawesome等替代方案。
  • --allow-device-custom-id 用于启用或禁用捆绑包和频道预览二维码。 --no-allow-device-custom-id
  • --block-provider-infra-requests 您可以选择使用Capacitor Live Update、Appflow或Capawesome等替代方案。 --no-block-provider-infra-requests 用于控制自定义设备ID。
  • --build-timeout-minutes [5-360]
  • --ios-store-url [url] 您可以选择使用Capacitor Live Update、Appflow或Capawesome等替代方案。 --android-store-url [url] 用于阻止已知的Google和Apple数据中心请求。
  • --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 解释在这里 您可以选择提供:.

__CAPGO_KEEP_0__ 键用于链接到您的帐户。

  • --apikey [key] API key to link to your account.

标题为“删除”

您的应用 ID 格式

npx @capgo/cli app delete [appId]

[appId] 列表 com.test.app 在这里解释 在这里.

您可以选择提供:

  • --apikey [key] API
  • --bundle 带有版本号的将只删除该版本

Debug

Debug

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!

context:Capacitor live-update alternatives comparison page. Role: Long marketing or legal paragraph. Seen in: page alternatives.astro. Preserve Capgo product/brand and developer terms exactly. Message key `alternatives_cta_questions` (Alternatives CTA Questions). | HTML text fragment from a longer Capgo UI string (parent key `appflow_cta_questions`). Page/area: Appflow comparison / migration marketing copy. Role: Long marketing or legal paragraph. Seen in: page ionic-appflow.astro. Preserve Capgo product/brand and developer terms exactly. Message key `appflow_cta_questions` (Appflow CTA Questions). | HTML text fragment from a longer Capgo UI string (parent key `capwesome_cta_questions`). Page/area: Capawesome comparison page. Role: Long marketing or legal paragraph. Seen in: page capwesome.astro. Preserve Capgo product/brand and developer terms exactly. Message key `capwesome_cta_questions` (Capwesome CTA Questions). | HTML text fragment from a longer Capgo UI string (parent key `consulting_faq_subtitle`). Page/area: Consulting services page. Role: Section subtitle or tagline. Seen in: page consulting.astro. Preserve Capgo product/brand and developer terms exactly. Message key `consulting_faq_subtitle` (Consulting FAQ Subtitle). | Page/area: Appflow comparison / migration marketing copy. Role: Short UI label or navigation item. Seen in: page ionic-appflow.astro, page ionic-enterprise-plugins.astro, page solutions/ionic-enterprise-plugins.astro. Message key `appflow_plugins_or` (Appflow Plugins Or).

  • --string <string> - 将设置设为字符串
  • --bool <true | false> - 将设置设为布尔值

上传

上传

npx @capgo/cli bundle upload [appId]

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

你可以选择性地提供:

  • --apikey <apikey> API
  • --path <path> 上传文件夹的路径
  • --channel <channel> 要链接的频道
  • --external <url> 将 URL 链接到外部 URL 而不是上传到 Capgo 云。
  • --iv-session-key <key> 设置包 URL 外部的 IV 和会话密钥。
  • --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 将包裹URL打印到标准输出。
  • --no-key 忽略签名密钥并发送清晰的更新。
  • --no-code-check 忽略源code和索引在根目录中的notifyAppReady()是否被调用。
  • --display-iv-session 在控制台显示用于加密更新的IV和会话密钥。
  • --bundle <bundle> 要上传的包裹版本号。
  • --auto-bump [level] 从渠道关联的包裹中自动递增,否则使用最新的远程应用程序版本。级别: 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> 用于上传外部包的加密校验和(签名)。仅在上传外部包时使用。
  • --package-json <packageJson> A path to package.json. Useful for monorepos.
  • --auto-set-bundle 设置 capacitor.config.json 中的包裹。
  • --node-modules <nodeModules> A list of path to node_modules. Useful for monorepos (comma separated ex: ../../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 key to link to your account.
  • --bundle __CAPGO_KEEP_0__ key to link to your account.

下一代为 Cloud

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

[appId] 载答为一代给的诡程号格式 com.test.app 下一代为插三代给的诡程号格式 下一代为插三代给的诡程号格式.

下一代为插三代给的诡程号格式

  • --apikey [key] API key to link to your account.
  • --bundle [majorVersion] 下一代为插三代给的诡程号格式 numberToKeep.
  • --keep [numberToKeep] 下一代为插三代给的诡程号格式

例如:如果您有 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] 如果您想使用内联方式,则私钥数据。 命令将打印您的y并生成一个加密的zip文件,用于与上传命令或解密命令一起使用。 ivSessionKeyEncrypt V2

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

This command is used when you use external source to store your code or for test purpose. The checksum is the sha256 of the bundle (generated by —key-v2), it is used to verify the integrity of the file after decryption. It will be enncrypted with the private key and sent along with the bundle. In encryption v2 the checksum is upgraded to become a “signature” of the bundle.

您的私钥路径。

--key [/path/to/my/private_key] 如果您想使用内联方式,则私钥数据。 --key-data [privateKey] 以 JSON 格式输出信息。 命令将打印您的 --json y并生成一个加密的zip文件,用于与上传命令或解密命令一起使用。 ivSessionKey使用y和生成一个加密的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 忽略 __CAPGO_KEEP_0__ 检查并发送捆绑包
  • --no-code-check to ignore the code check and send the bundle anyway.
  • --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] 输入您的新频道的名称,例如 productionbeta. [appId] 输入您的应用ID的格式 com.test.app 如上所述 删除.

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

[channelName] 输入您的应用ID的格式 [appId] 如上所述 com.test.app or 这里.

列表

列表

npx @capgo/cli channel list [appId]

[appId] 您的应用ID的格式 com.test.app 在这里有说明 您可以选择提供:.

__CAPGO_KEEP_0__

  • --apikey [key] API key to link to your account.

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

[appId] 您可以选择提供:__CAPGO_KEEP_0__ 设置您的应用ID,格式在这里有说明. [channelName] 您想要配置的频道名称,例如 productionbeta.

或者

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

禁用更新策略

禁用更新策略

处理过旧版本时禁用更新的几种方法。
Capgo 无法更新本地 code 因此从旧本地 code 版本更新到更新本地 code 版本的更新不应可能。 有几种方法可以实现这一点。

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

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

  • 目标包和本地基线之间的主版本号相同 version_build
  • 和目标包之间的修订号相同 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 策略。
首先,您需要了解在启用它后最初更新将会 context: Capgo Builder / native cloud build 产品页面。角色:短的 UI 标签或导航项。消息键 `native_build_builder_credit_first` (Native Build Builder Credit First)。 将会
失败

因为渠道缺少所需的元数据。

如果渠道缺少元数据,您将会看到一个类似这样的消息:
找不到元数据 misconfigured 如果您看到类似这样的消息,您就知道您需要前往当前的捆绑包中,针对失败的渠道设置元数据。

首先,确定哪个渠道失败。您可以通过查看

列头部的表格来做到这一点: Bundle number. 这应该会带你到包页。

找到失败的频道

一旦你到那里,填写 Minimal update version 字段。这应该是一个 语义版本.
如果你传入的值不是一个语义版本,你会得到一个错误,但如果一切顺利,你应该会看到类似这样的内容:

设置最小版本

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

CLI 发送失败,没有元数据

当使用 metadata 选项上传包时,你需要传入 --min-update-version 参数 有效的语义版本号Something like this:

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] 公钥数据,如果您想使用内联。该命令很有用,如果您遵循了建议并没有在应用配置中提交密钥。

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

GitHub动作教程

GitHub - Cap-go/demo-app

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

如果你正在使用 命令 来规划仪表板和 API 操作,连接它到 API 概览 查看 API 概览中的实现细节 介绍 查看 CLI 命令的实现细节,请参阅介绍。 API 键 查看 CLI 命令的实现细节,请参阅 API 键。 设备 查看 CLI 命令的实现细节,请参阅设备,和 捆绑包 查看 CLI 命令的实现细节,请参阅捆绑包。