跳过内容

命令

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

npx @capgo/cli@latest init [apikey]

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

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

npx @capgo/cli login [apikey]

此方法旨在记住您的登录信息 apikey 为您提供服务。

可选地,您可以提供:

--local 将会将您的 apikey 存储在本地仓库中并将其忽略在git中。

npx @capgo/cli doctor

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

This command will also be useful for bug report.

npx @capgo/cli app add [appId]

[appId] 在应用ID的格式中填写 com.test.app 详解 请参阅.

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

如果需要,可以提供:

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

示例: 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] app 包的保留期限(天),默认值为 0,即无限期。
  • --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 __CAPGO_KEEP_0__

__CAPGO_KEEP_0__

调试

npx @capgo/cli app debug [appId]

[appId] 调试 com.test.app 您的应用 ID 的格式 在此处有说明.

在此处有说明

  • --apikey [key] API key to link to your account.
  • --device With __CAPGO_KEEP_0__ 设备进行调试

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> 将文件上传到 Capgo Cloud 以外的 URL
  • --iv-session-key <key> 设置捆绑 URL外部的 IV 和会话密钥
  • --s3-endpoint <s3Endpoint> S3 端点的 URL。 不支持 delta 上传或外部选项
  • --s3-region <region> 您的 S3 存储桶的区域
  • --s3-apikey <apikey> API key
  • --s3-apisecret <apisecret> API secret
  • --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 将打包 URL 打印到标准输出.
  • --no-key 忽略签名密钥并发送清晰的更新.
  • --no-code-check 忽略在源 code 和根目录中的索引文件中检查 notifyAppReady() 是否被调用.
  • --display-iv-session 在控制台显示用于加密更新的 IV 和会话密钥.
  • --bundle <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__.config.json 中。
  • --auto-set-bundle Set the bundle in capacitor.config.json.
  • --node-modules <nodeModules> ⭐️ 外部选项可以解锁 2 个案例:企业有隐私顾虑,不向第三方发送 __CAPGO_KEEP_0__,并且应用大于 200 MB。使用此设置,__CAPGO_KEEP_1__ 只会存储 zip 链接并将链接发送给所有应用。

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

👀 Capgo cloud never looks at what is in the link (for external option), or in the code when stored.

Capgo 选项:仅上传 Delta (清单) 更新,跳过完整的捆绑包。

示例 package.json 用于版本

{
"version": "1.0.2"
}

⛔ 版本应大于“0.0.0”。

💡 每次发送时,请记得更新版本号,版本号不能被覆盖或重复使用,否则会影响安全性。

npx @capgo/cli bundle list [appId]

[appId] 您需要提供的应用 ID 格式 com.test.app 详见 您可以选择提供:.

__CAPGO_KEEP_0__

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

npx @capgo/cli bundle delete [appId]

[appId] 你的应用ID的格式 com.test.app 在这里有说明 here.

你可以选择给出:

  • --apikey [key] API
  • --bundle 与版本号一起使用只会删除这个版本

在一个 SemVer 范围内清理一个大版本的

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] 如果您想使用内联,则私钥数据。 ivSessionKey命令将打印您的

y 并生成一个加密的 zip 文件,用于与上传命令或解密命令一起使用。

《加密 V2》

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

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] 这里 您可以选择提供:.

上传特定文件夹

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

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

[appId] 这里 您的新频道的名称。. [channelId] 可选项,您可以提供:

__CAPGO_KEEP_0__ 密钥以链接到您的帐户。

  • --apikey [key] API key to link to your account.
  • --text 使用文本代替表格中的表情符号
  • --channel [channel] 检查兼容性的频道
  • --package-json <packageJson> 到package.json的路径。对于多包仓库很有用
  • --node-modules <nodeModules> 到node_modules的路径列表。对于多包仓库很有用(以逗号分隔,例如:../../node_modules,./node_modules)

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

[channelId] 您的新频道的名称 [appId] 应用ID的格式 com.test.app 这里有说明 这里有说明.

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

[channelId] 您要删除的频道名称. [appId] 您的应用ID的格式 com.test.app 在这里解释 这里.

npx @capgo/cli channel list [appId]

[appId] 您的应用ID的格式 com.test.app 在这里解释 这里.

您可以选择填写:

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

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

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

可选地,您可以提供:

  • --bundle [1.2.3] 您的应用程序包已经发送到云端,链接到一个频道.
  • --latestpackage.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.01的更新。 0.0.0).
第二种是 minor 策略。它防止了从 0.0.0 -> 1.1.01.1.0 的更新或从 1.2.0. 注意 这个策略并不能防止更新 0.1.0 -> 1.1.0

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

  • 新旧版本的主版本号相同
  • 新旧版本的次版本号相同
  • 新版本的补丁版本号大于旧版本的补丁版本号

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

  • 0.0.311 -> 0.0.314 ✅
  • 0.0.0 -> 0.0.314 ✅
  • 0.0.316 -> 0.0.314 ❌
  • 0.1.312 -> 0.0.314 ❌
  • 1.0.312 -> 0.0.314 ❌

最后,最复杂的策略。 metadata 策略。
首先,您需要了解在启用它后最初更新 将会 无法作为渠道缺少所需的元数据。
如果渠道缺少元数据,您将看到以下信息:

找不到元数据

如果您看到类似这样的信息,则需要前往当前的捆绑包中,设置所需的元数据。
首先,确定哪个渠道出现问题。您可以通过查看 misconfigured

配置错误的表格

然后前往出现问题的渠道并点击 Bundle number。这应该会将您带到捆绑包页面。

定位出现问题的渠道

在那里填写 Minimal update version 字段。这应该是 semver.
如果您传入的值不是一个semver,您将会得到一个错误,但如果一切顺利,您应该会看到如下内容:

设置最小版本

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

CLI fail no metadata

当使用选项时,要正确上传一个捆绑包,您需要传入一个 metadata 并且 --min-update-version 一个有效的semver 。例如:__CAPGO_KEEP_0__ upload with metadata

CLI upload with metadata

__CAPGO_KEEP_0__ --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

Optionally, you can give:

--key [/path/to/my/public_key] 你的公钥文件路径。

--key-data [publicKey] 如果你想使用内联方式,直接输入公钥数据。这条命令适用于你遵循了我们的建议,没有将密钥提交到应用配置中。

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

GitHub动作教程

GitHub - Cap-go/demo-app

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

继续使用命令

命令:继续

如果您正在使用 命令 to plan dashboard and API operations, connect it with API for the implementation detail in API Overview, __CAPGO_KEEP_0__ 查看 API for the implementation detail in API Keys, __CAPGO_KEEP_0__ __CAPGO_KEEP_0__和设备的实现细节 __CAPGO_KEEP_0__和捆绑包的实现细节 __CAPGO_KEEP_0__页面