跳过内容

命令

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

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

npx @capgo/cli@latest init [apikey]

This method is here to onboard you step by step.

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

Login

登录

npx @capgo/cli login [apikey]

This method is here to remember the 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 = 无限

示例 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 为启用或禁用打包和渠道预览二维码.
  • --allow-device-custom-id--no-allow-device-custom-id 控制自定义设备ID.
  • --block-provider-infra-requests--no-block-provider-infra-requests 控制阻止已知Google和Apple数据中心请求.
  • --build-timeout-minutes [5-360] 设置本机构建超时.
  • --ios-store-url [url]--android-store-url [url] 设置商店URL.
  • --default-upload-channel [channel] 设置默认上传渠道.
  • --default-download-channel [channel] 设置默认下载渠道,或 --disable-download-channels 使所有下载渠道非公开.
  • --apikey [key] API关键值以链接到您的帐户.

List

列表

npx @capgo/cli app list [appId]

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

您可以选择提供:

  • --apikey [key] API

用于链接到您的帐户的密钥

Delete

npx @capgo/cli app delete [appId]

[appId] 删除 com.test.app 您的应用 ID 格式 如图所示.

可选地,您可以提供:

  • --apikey [key] API
  • --bundle 带有版本号的只会删除这个版本。

npx @capgo/cli app debug [appId]

[appId] 您的应用 ID 格式 com.test.app 解释在这里 可选地,您可以提供:.

__CAPGO_KEEP_0__

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

调试

设置

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,格式解释在这里 您可以提供:.

__CAPGO_KEEP_0__

  • --apikey <apikey> API key to link to your account.
  • --path <path> 链接到频道
  • --channel <channel> 链接到外部URL而不是上传到__CAPGO_KEEP_0__ Cloud
  • --external <url> Link to external URL instead of uploading to Capgo Cloud.
  • --iv-session-key <key> __CAPGO_KEEP_0__
  • --s3-endpoint <s3Endpoint> __CAPGO_KEEP_0__
  • --s3-region <region> __CAPGO_KEEP_0__
  • --s3-apikey <apikey> API
  • --s3-apisecret <apisecret> API
  • --s3-bucket-name <bucketName> __CAPGO_KEEP_0__
  • --s3-port <port> __CAPGO_KEEP_0__
  • --no-s3-ssl __CAPGO_KEEP_0__
  • --key <key> __CAPGO_KEEP_0__
  • --key-data <keyData> __CAPGO_KEEP_0__
  • --key-v2 <key> __CAPGO_KEEP_0__
  • --key-data-v2 <keyData> __CAPGO_KEEP_0__
  • --bundle-url __CAPGO_KEEP_0__
  • --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协议上传捆绑包。
  • --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”。

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

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
  • --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] 您希望保留的包数量(默认值为 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] 如果您想使用内联,则可以提供私钥数据。 命令将打印您的 ivSessionKeyy 并生成加密的 zip,用于与上传命令或解密命令一起使用。

加密 V2

加密 V2

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

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

Optionally, you can give:

--key [/path/to/my/private_key] the path of your private key. --key-data [privateKey] the private key data, if you want to use inline. --json to output info as json. The command will print your ivSessionKeyy and generate an encrypted zip, to use it with the upload command or decryt command.

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

Optionally, you can give:

--key [/path/to/my/private_key] the path of your private key.

--key-data [privateKey] the private key data, if you want to use inline. This command is mainly used for test purpose, it will decrypt the zip and print the base64 decrypted session key in the console.

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

Optionally, you can give:

--key [/path/to/my/private_key] the path of your private key. --key-data [privateKey] the private key data, if you want to use inline. This command is mainly used for test purpose, it will decrypt the zip and print the base64 decrypted session key in the console. --checksum [checksum] the checksum of the file, it will verify the checksum after decryption.

npx @capgo/cli bundle zip [appId]

[appId] is your app ID, the format is explained here.

Optionally, you can give:

  • --path [/path/to/my/bundle] to upload a specific folder.
  • --bundle [1.0.0] to set the bundle version number of the filename.
  • --name [myapp] to override the filename.
  • --json 将输出信息作为 JSON。
  • --no-code-check 忽略code检查并发送包裹。
  • --key-v2 使用新加密系统。由于新加密系统使用更好的校验和来验证文件的完整性,因此这是必需的。

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

[appId] 这是您的应用 ID,格式解释在这里 要检查的频道名称。. [channelName] 您可以选择提供:

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

  • --apikey [key] API key to link to your account.
  • --text 要检查兼容性的频道名称。
  • --channel [channel] 兼容性部分
  • --package-json <packageJson> A path to package.json. Useful for monorepos
  • --node-modules <nodeModules> A list of path to node_modules. Useful for monorepos (comma separated ex: ../../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] 您要删除的频道名称. [appId] 您的应用ID的格式 com.test.app 在这里解释 List.

Section titled “List”

您的应用ID的格式

npx @capgo/cli channel list [appId]

[appId] 在这里解释 com.test.app 如果需要,您可以提供: __CAPGO_KEEP_0__用于链接到您的帐户的密钥..

__CAPGO_KEEP_0__

  • --apikey [key] API

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

[appId] 是您的应用程序ID,格式解释 请参阅. [channelName] 您要配置的频道名称,例如 productionbeta.

可选,您可以提供:

  • --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 禁用此通道的自动更新策略。可能的选项包括:主、次、修订、元数据、无。
  • --apikey [key] API key 链接到您的账户。

禁用更新策略

禁用更新策略部分

太旧的版本中禁用更新有几种方法。
Capgo 因此无法更新本地 code 的 Capgo。从旧本地 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 策略。
首先,您需要知道,在启用它后,最初的更新 将会失败,因为通道缺乏所需的元数据。 如果通道缺乏元数据,您将看到以下消息:
找不到元数据

如果您看到类似这样的消息,您就知道您需要去当前的包中为失败的通道设置元数据。

Lastly the most complicated strategy. The __CAPGO_KEEP_0__ strategy.
首先,确定哪个频道出现问题。您可以通过查看 misconfigured

配置错误的表格

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

找出失败的频道

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

设置最小版本

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

CLI fail no metadata

使用 metadata 选项时,需要传递 --min-update-version的有效版本号

CLI upload with metadata

__CAPGO_KEEP_0__ upload with metadata --min-update-version 不是唯一的兼容性实现方式。 还存在 --auto-min-update-version。以下是其工作原理。

首先,它会检查当前上传到频道的版本号的兼容性,检查方式与 bundle compatibility 命令相同。 其次,如果新版本完全兼容,则复用 min_update_version 来自最新版本的频道。 如果没有,then它设置为 min_update_version 到新上传版本的捆绑包号.

您总是会收到有关使用此选项时的 min_update_version 信息:它将看起来像这样:

最小更新版本

如果新版本不兼容,它应该看起来像这样

最小更新版本不兼容

端到端加密(无信任)

标题为“端到端加密(无信任)”

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

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

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

How crypto works

加密原理

Create key for your app

创建应用密钥

npx @capgo/cli key create

Optionally, you can give: --force 覆盖现有密钥。该命令将为您在应用中创建密钥对,并要求您将私钥保存在安全的地方。建议不要将私钥提交到 Git,并且不要与任何人共享。

After your local test, remove the key from the config file and add it on the CI step with key save

在本地测试后,删除密钥并在 CI 步骤中添加它

Save key in your app config

npx @capgo/cli key save

保存应用密钥

--key [/path/to/my/public_key] Optionally, you can give:

--key-data [publicKey] 公钥文件路径。或公钥数据,如果您希望使用内联。该命令对于遵循建议并未在应用配置中提交密钥的用户非常有用。

CI集成

CI集成

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

GitHub动作教程

我们的示例应用

示例应用

GitHub - Cap-go/demo-app

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

继续命令

继续命令

如果您正在使用 命令 为了计划仪表板和API操作,连接它与 API概览 为了在API概览中实现详细信息, 介绍 为了在介绍中实现详细信息, API密钥 为了在API密钥中实现详细信息, 设备 为了在设备中实现详细信息, 捆绑包 为了在捆绑包中实现详细信息,