跳过内容

命令

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

npx @capgo/cli@latest init [apikey]

此方法将一步步引导您入门。它将添加您的应用程序到 __CAPGO_KEEP_0__。它将添加 __CAPGO_KEEP_1__ 到您的应用程序以验证更新。同样,它将构建您的应用程序。另外,它将上传您的应用程序到 __CAPGO_KEEP_2__。最后,它将帮助您检查更新是否有效。

It will add your app to Capgo. It will add the code to your app to validate the update. Likewise, it will build your app. Furthermore, it will upload your app to Capgo. And it will help you to check if the update works.

protectedTokens

登录

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 解释在这里 💡 如果未提供,则所有选项将在您的配置中被猜测。.

您可以选择提供:

Section titled “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] 这是您的应用 ID,格式解释在这里。 您可以选择提供:.

Optionally, you can give:

  • --icon [/path/to/my/icon] 在 Capgo 网页应用中显示自定义图标。
  • --name [test] 在列表中显示自定义名称。
  • --retention [retention] 应用程序包的保留期限(以天为单位),默认值为 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 用于链接到您的帐户的密钥

仅删除此版本,带有版本号

调试

npx @capgo/cli app debug [appId]

[appId] 调试选项 com.test.app 您的应用ID的格式 如上所述.

Optionally, you can give:

  • --apikey [key] API
  • --device with the specific device you want to debug

npx @capgo/cli app setting [path]

Edit the Capacitor config.

[path] - path of the setting that you would like to change. For example, to change the appId, provide appId. If you wish to disable auto update in the capacitor-updater, provide plugins.CapacitorUpdater.autoUpdate with --string off.

You MUST provide either --string--bool!

选项:

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

npx @capgo/cli bundle upload [appId]

[appId] 这是你的应用ID,格式解释在这里 您可以选填:.

__CAPGO_KEEP_0__ 键来链接到您的账户

  • --apikey <apikey> API
  • --path <path> 要上传的文件夹路径。
  • --channel <channel> 要链接的频道。
  • --external <url> 使用外部 URL 链接而不是上传到 Capgo 云。
  • --iv-session-key <key> 设置捆绑 URL 外部的 IV 和会话密钥。
  • --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> Public signing key (v1 system).
  • --key-v2 <key> 自定义私钥路径 (v2 系统).
  • --key-data-v2 <keyData> Private signing key (v2 system).
  • --bundle-url 打印 bundle URL 到标准输出.
  • --no-key 忽略签名密钥并发送清晰更新.
  • --no-code-check 忽略检查源 code 和根目录中的索引是否被调用 notifyAppReady()
  • --display-iv-session 在控制台显示用于加密更新的 IV 和会话密钥.
  • --bundle <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> package.json文件路径。适用于多包仓库。
  • --package-json <packageJson> 设置包文件路径到__CAPGO_KEEP_0__.config.json中。
  • --auto-set-bundle Set the bundle in capacitor.config.json.
  • --node-modules <nodeModules> ⭐️ 该选项可解锁两种场景:企业级环境中有隐私需求,不向第三方发送__CAPGO_KEEP_0__,同时支持大于200MB的应用。该设置下,__CAPGO_KEEP_1__仅存储上传包的链接并将链接发送给所有应用。

⭐️ External option helps to unlock 2 cases: corporate with privacy concern, don’t send the code to a third part and app bigger than 200 MB. With this setting, Capgo store only the link to the zip and sends the link to all apps.

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

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

示例 package.json 版本号

{
"version": "1.0.2"
}

⛔ 版本号应大于“0.0.0”。

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

npx @capgo/cli bundle list [appId]

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

Optionally, you can give:

  • --apikey [key] API key 可以连接到您的帐户。

npx @capgo/cli bundle delete [appId]

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

Optionally, you can give:

  • --apikey [key] API key 可以连接到您的帐户。
  • --bundle 仅删除此版本,带有版本号会

在一个 SemVer 范围内的主要版本中使用 Cloud

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

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

您可以提供:

  • --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 个

This command will ask for confirmation, it shows a table of what it will be keeping and removing.

加密

加密

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

This command is used when you use external source to store your code or for test purpose.

可选参数:

--key [/path/to/my/private_key] 您的私钥路径。 --key-data [privateKey] 私钥数据,如果您想使用内联。 命令将打印您的 ivSessionKey使用此命令时,您可以使用外部源存储您的 __CAPGO_KEEP_0__ 或进行测试。 校验和是由 —key-v2 生成的 bundle 的 sha256 值,用于验证文件解密后完整性。 校验和将使用私钥加密并与 bundle 一同发送。 在加密 v2 中,校验和升级为 bundle 的“签名”。

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 格式输出信息。 ivSessionKey命令将打印您的

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

解密

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

Section titled “解密”

--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是 gì?格式解释 这里.

可选:

  • --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 channel beta. [appId] 您的应用 ID 格式 com.test.app 这里有说明 这里.

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

[channelName] 您要删除的频道名称。 [appId] 这里有说明 com.test.app 这里 列表.

标题:列表

您的应用 ID 格式

npx @capgo/cli channel list [appId]

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

您可以选择提供:

  • --apikey [key] API关键字来链接您的账户

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

[appId] 是您的应用ID,格式解释 在这里. [channelName] 您要配置的频道名称,例如 productionbeta.

您可以选择提供:

  • --bundle [1.2.3] 您的应用程序包已经发送到云端,用于链接到频道。
  • --latest 从中获取版本号 package.json:version,不能与 --bundle.
  • --state [ normal | default ] 设置通道状态,可以 normaldefault.一个通道需要发送 default.
  • --downgrade 不允许
  • --no-downgrade 允许
  • --upgrade 不允许
  • --no-upgrade 允许
  • --ios 不允许
  • --no-ios 允许
  • --android 不允许
  • --no-android 不允许该频道向安卓设备发送版本信息.
  • --self-assign 允许设备自行分配到该频道.
  • --no-self-assign 不允许设备自行分配到该频道.
  • --disable-auto-update STRATEGY 禁用此频道的自动更新策略。可能的选项包括:major、minor、patch、metadata、none.
  • --apikey [key] API用于链接到您的帐户.

禁用更新策略

标题:禁用更新策略

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

首先, major 策略。它防止了从本机基线 0.0.0 ->目标包 1.0.0。主要是突出显示的数字(1.0.0 和 0.0.0).
第二是策略。它防止更新目标包装有不同的主要或次要版本号与设备本机基线,例如 minor0.0.0 -> 1.1.0 第三, 1.1.0 -> 1.2.0.

策略。它被添加到 __CAPGO_KEEP_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
  • 修补程序版本号是目标包装和 version_build
  • 仅版本后缀可能不同,例如预发布( version_build
  • )或构建元数据(-beta.2) or build metadata (+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 策略
首先你需要知道,启用它后最初的更新 将会被阻止 __CAPGO_KEEP_0__
如果频道缺少所需的元数据,您将看到类似这样的消息:

找不到元数据

如果您看到类似这样的消息,则知道您需要前往当前包中失败的频道并设置元数据。
首先,确定哪个频道失败。您可以通过查看 misconfigured

配置错误的表格

然后前往失败的频道并点击 Bundle number。这应该会将您带到包页。

定位失败的频道

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

设置最小版本

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

CLI 无元数据失败

使用选项上传包时,需要正确上传包时需要传入 metadata option you need to pass the --min-update-version 有效的semver 。例如:__CAPGO_KEEP_0__ 上传时带有元数据

上传包时需要带有元数据的CLI

The --min-update-version 不是唯一的兼容性方法。 还存在 --auto-min-update-version以下是它的工作原理。

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

为新上传版本的 min_update_version 使用此选项时,您始终会获得

的信息。它将显示如下内容:

最小更新版本

如果新版本不兼容,则显示如下内容:

最小更新版本不兼容(不兼容)

Section titled “End-to-End encryption (Trustless)”

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

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

有关加密系统的更多信息,请参见下文。

How crypto works

Encryption schema

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 action tutorial

在您的应用程序配置中保存密钥

__CAPGO_KEEP_0__ - Cap-go/demo-app

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

Don’t forget to configure CI env variable with your API key

继续使用命令

命令:继续

如果您正在使用 命令 to plan dashboard and API operations, connect it with API for the implementation detail in API Overview, 查看 __CAPGO_KEEP_0__ API Keys for the implementation detail in API Keys, __CAPGO_KEEP_0__ 对于设备中的实现细节, bundles 对于bundles中的实现细节,