跳过内容

命令

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

Init

Init

npx @capgo/cli@latest init [apikey]

一步一步地引导您完成初始化过程

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

Login

Login

npx @capgo/cli login [apikey]

记住 apikey for you

您可以选择提供:

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

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 = 无限。

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,即无限。
  • --apikey [key] API 密钥以链接到您的帐户。

列表

列表

npx @capgo/cli app list [appId]

[appId] your app ID 的格式 com.test.app 是这里 解释.

Optionally,您可以提供:

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

npx @capgo/cli app delete [appId]

[appId] your app ID 的格式 com.test.app 是这里 解释.

Optionally,您可以提供:

  • --apikey [key] API key 链接到您的帐户.
  • --bundle 使用版本号删除此版本。

Debug

调试

npx @capgo/cli app debug [appId]

[appId] 您的应用ID的格式 com.test.app 详细信息 这里.

您可以选择提供:

  • --apikey [key] API
  • --device 与您要调试的具体设备

npx @capgo/cli app setting [path]

Edit the Capacitor config.

[path] - 你想要改变的设置路径。例如,要改变 appId, 提供 appId 如果您想禁用自动更新,请在 capacitor-updater 提供 plugins.CapacitorUpdater.autoUpdate

您必须提供 --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 云外链上传时,设置 IV 和会话密钥。
  • --iv-session-key <key> S3 端点的 URL。与增量上传或外链选项无效。
  • --s3-endpoint <s3Endpoint> 您的 S3 存储桶的区域。
  • --s3-region <region> __CAPGO_KEEP_0__ 键用于您的 S3 端点。
  • --s3-apikey <apikey> API key for your S3 endpoint.
  • --s3-apisecret <apisecret> API secret for your S3 endpoint.
  • --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> __CAPGO_KEEP_0__
  • --min-update-version <minUpdateVersion> __CAPGO_KEEP_0__
  • --auto-min-update-version __CAPGO_KEEP_0__
  • --ignore-metadata-check __CAPGO_KEEP_0__
  • --ignore-checksum-check __CAPGO_KEEP_0__
  • --timeout <timeout> __CAPGO_KEEP_0__
  • --delta __CAPGO_KEEP_0__
  • --delta-only __CAPGO_KEEP_0__
  • --no-delta __CAPGO_KEEP_0__ directUpdate __CAPGO_KEEP_0__
  • --tus __CAPGO_KEEP_0__
  • --multipart __CAPGO_KEEP_0__
  • --encrypted-checksum <encryptedChecksum> 一个加密的校验和(签名)。仅在上传外部包时使用。
  • --package-json <packageJson> package.json 的路径。适用于多包项目。
  • --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] 名为“删除”的部分 com.test.app 您的应用 ID 格式 解释.

可选地,您可以提供:

  • --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] __CAPGO_KEEP_0__ (默认 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

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

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

解密

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

标题:解密

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

--key-data [privateKey] 您的私钥路径。

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

解密 V2

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

标题:解密 V2

--key [/path/to/my/private_key] 您可以选择提供: --key-data [privateKey] 您的私钥路径。 --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 [channelId]

[appId] 您的应用 ID,格式解释在这里 这里. [channelId] 您的新频道名称。

您可以选择给出:

  • --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 [channelId] [appId]

[channelId] 请输入您的新频道名称。 [appId] 您的应用 ID 格式 com.test.app 请参阅以下说明 删除.

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

[channelId] 您的应用 ID 格式 [appId] 请参阅以下说明 com.test.app __CAPGO_KEEP_0__ 这里.

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 [channelId] [appId]

[appId] 在这里有说明 您可以选择提供:.

您可以选择提供:

  • --bundle [1.2.3] 将您的应用程序包已发送到云端,用于将其链接到一个频道。
  • --latestpackage.json:version不能与 --bundle.
  • --state [ normal | default ] 设置频道状态,可以 normaldefault一个频道需要 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 禁用该频道的自动更新策略。可能的选项包括:major、minor、metadata、none。
  • --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.0 或更新 1.1.0 注意 1.2.0. 这个策略不防止 第三, 0.1.0 -> 1.1.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 a update the following conditions must be meet:

  • 新版本和旧版本之间的主要版本号相同
  • 新版和旧版的修订号相同
  • 新版的补丁号大于旧版的补丁号

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

  • 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 字段。这应该是一个 语义版本.
如果您传入的值不是语义版本,您将会得到一个错误,但如果一切顺利,您应该会看到类似这样的内容:

设置最小版本

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

CLI 无元数据失败

使用时要正确上传一个捆绑包,您需要传递 metadata __CAPGO_KEEP_0__ --min-update-version ,例如:

CLI

不是唯一的兼容性方法。 还存在 --min-update-version 。以下是它的工作原理。 --auto-min-update-version首先,它检查当前上传到频道的版本的兼容性,检查方式与

命令相同。 其次,如果新版本是100%兼容的,它会复用 bundle compatibility ,从频道中最新版本的 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 集成

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

key

To automate your work, I recommend you make GitHub action do the job of pushing to our server

GitHub 动作教程

GitHub - Cap-go/demo-app

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