跳过内容

测试原生构建无需实时更新

当测试新本机二进制文件时,请确保它从该二进制文件中嵌入的 Web 资产开始,而不是从之前下载的实时更新开始。使用以下安全措施中的一个或结合使用。

1. 增加本机基线版本

标题:1. 增加本机基线版本

设置 CapacitorUpdater.version 从用于本机发布的版本开始,并为每个本机构建增加它。较新的本机基线使安装的二进制文件与较旧的捆绑包不同,且默认情况下 resetWhenUpdate: true,当安装较新的本机应用程序时会删除下载的捆绑包。

import type { CapacitorConfig } from '@capacitor/cli';
import pkg from './package.json';
const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
// Keep this aligned with, and increase it for, every native build.
version: pkg.version,
autoUpdate: 'atBackground',
},
},
};
export default config;

例如,使用 version: '1.4.1' 构建的二进制文件具有比现有 1.4.0 捆绑包更高的本机基线。不要重用本机版本以验证捆绑资产时需要。

2. 在控制台中阻止模拟器和开发构建更新

2. 在控制台中阻止模拟器和开发构建更新

在Capgo控制台中打开您的应用程序,转到 频道, select the channel used by the build, and open the 选择构建使用的频道,打开 信息 选项卡。关闭 阻止开发构建 阻止模拟器 允许.

Capgo频道信息标签显示允许开发构建和允许模拟器设置
这些控件位于频道信息标签中。禁用两个突出显示的设置以保留开发构建和模拟器的捆绑Web资产。

该频道策略仅阻止更新传递给所选的构建类型。已签名的物理设备仍可以根据频道的其他设置接收更新。

3.仅在本机CI构建中启用实时更新

标题为“3.仅在本机CI构建中启用实时更新”

对于希望本地、模拟器和开发构建安全默认的团队,通过环境变量使实时更新成为可选项。以下配置禁用更新检查,除非 CAPGO_LIVE_UPDATES 完全等于 true:

import type { CapacitorConfig } from '@capacitor/cli';
import pkg from './package.json';
const liveUpdatesEnabled = process.env.CAPGO_LIVE_UPDATES === 'true';
const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'Example App',
plugins: {
CapacitorUpdater: {
// Bump package.json for every native build.
version: pkg.version,
// Local builds are off; native CI explicitly enables live updates.
autoUpdate: liveUpdatesEnabled ? 'atBackground' : false,
},
},
};
export default config;

仅在CI步骤中设置变量,该步骤同步和构建本机应用:

- run: CAPGO_LIVE_UPDATES=true npx cap sync
- run: ./build-native-app.sh

运行 npx cap sync 因为Capacitor会将此配置复制到native项目中,同步时会将此配置复制到native项目中。没有此变量,local builds和emulator builds会 autoUpdate: false 并且不会检查实时更新。

快速检查清单

标题:快速检查清单
  1. 增加用于native二进制的版本号 CapacitorUpdater.version 用于native二进制
  2. 禁用 允许开发构建允许模拟器 在测试这些构建类型时,实时更新将在频道上触发。
  3. 在本地构建 CAPGO_LIVE_UPDATES.
  4. 设置 CAPGO_LIVE_UPDATES=true 仅在 npx cap sync 在接收实时更新的原生 CI 任务中