跳过内容

命令

所有命令应在您的应用程序文件夹中以capacitor项目正确激活时运行。

Init

Init

npx @capgo/cli@latest init [apikey]

一步一步地引导您完成此方法

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

Login

Login

npx @capgo/cli login [apikey]

此方法旨在记住 apikey 为您

您可以选择提供:

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

npx @capgo/cli app list [appId]

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

如果需要,可以提供:

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

npx @capgo/cli app delete [appId]

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

如果需要,可以提供:

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

npx @capgo/cli app debug [appId]

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

您可以选择提供:

  • --apikey [key] API密钥以链接到您的帐户
  • --device 使用您要调试的特定设备

npx @capgo/cli app setting [path]

编辑Capacitor配置

[path] - __CAPGO_KEEP_0__ 的路径。例如,要修改 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 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> 要上传的捆绑包的捆绑包版本号。
  • --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 __CAPGO_KEEP_0__
  • --multipart 使用多部分协议上传数据到S3,已弃用,建议使用TUS代替。
  • --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发送到第三方,并且应用大小超过200MB。使用此设置,Capgo只存储zip文件的链接,并将链接发送给所有应用。

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

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

示例 package.json 用于版本

{
"version": "1.0.2"
}

⛔版本应大于“0.0.0”。

💡 每次发布时,请记得更新版本号,版本号不能被覆盖或重复使用以保证安全性。

List

List

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] 在这里 com.test.app __CAPGO_KEEP_0__ 在简体中文中.

您可以选择提供:

  • --apikey [key] API 键来链接到您的帐户。
  • --bundle 带有版本号的只会删除该版本。

到 Cloudflare 的一个大版本中

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个版本。

此命令将要求确认,它将显示将保留和删除的包的表格。

加密

加密

Warning: 这个命令已被弃用,将在下一个重大版本中删除。请使用新的加密系统。 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 生成的 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 解密的会话密钥。

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

您可以选择提供:

--key [/path/to/my/private_key] 您的私钥文件路径。 --key-data [privateKey] 如果您想使用内联方式,则需要私钥数据。该命令主要用于测试目的,会解密zip并在控制台打印base64解密后的会话密钥。 --checksum [checksum] 文件的校验和,会在解密后验证校验和。

Zip

Zip

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 To 使用新的加密系统。 这是必要的,因为新的加密系统使用更好的校验和来验证文件的完整性。

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] __CAPGO_KEEP_0__ [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] __CAPGO_KEEP_0__是您的应用ID,格式说明在此 __CAPGO_KEEP_0__. [channelName] 您要配置的频道名称,例如 productionbeta.

可选项:

  • --bundle [1.2.3] 您的应用包已经发送到云端,需要将其链接到频道.
  • --latest 从__CAPGO_KEEP_0__获取包版本 package.json:version__CAPGO_KEEP_0__不能与 --bundle.
  • --state [ normal | default ] 设置频道状态,允许__CAPGO_KEEP_0__ normaldefault一个频道需要__CAPGO_KEEP_0__ 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.0 策略。它防止了从 1.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,则会出现错误,但如果一切顺利,您应该会看到如下内容:

设置最小版本

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

CLI 无元数据失败

使用选项上传包时,需要正确上传包时需要传入一个 metadata ,例如: --min-update-version __CAPGO_KEEP_0__ 上传包时带有元数据 不是唯一的兼容性方式。 还存在texts

CLI upload with metadata

texts --min-update-version texts --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] 如果您想使用内联方式,则使用公共密钥数据。这条命令对于您遵循了建议并没有将密钥提交到应用配置文件中的人来说是有用的。

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

GitHub动作教程

我们的示例应用

标题:我们的示例应用

GitHub - Cap-go/demo-app

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

如果您正在使用 Commands 来规划仪表板和API操作,连接它与 API概览 了解API概览中的实施细节在 介绍 了解介绍中的实施细节在 API密钥 了解API密钥中的实施细节在 设备 了解设备中的实施细节在 Bundles for the implementation detail in Bundles.