跳转到正文

无需 Live Updates 测试 Native Build

测试新的原生二进制文件时,请确保它从该二进制文件内置的 Web 资源启动,而不是从之前下载的 live update 启动。使用以下一项防护措施,或组合使用。

设置 CapacitorUpdater.version 从用于原生发布的版本开始,每次原生构建都递增。较新的原生基线会让已安装的二进制文件与旧 bundle 区分开,并且,在默认情况下 resetWhenUpdate: true,安装较新的原生应用时,会移除已下载的 bundle。

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 bundle。如需验证打包资源,请勿复用原生版本。

2. 在控制台中阻止模拟器和开发版 Build 的更新

标题为“2. 在控制台中阻止模拟器和开发构建的更新”的章节

在 Capgo 控制台中打开您的应用,前往 通道,选择该构建使用的 channel,并打开 信息 选项卡。开启 关闭 两者 允许开发构建 以及 允许模拟器.

Capgo 频道的“信息”选项卡,显示“允许开发构建”和“允许模拟器”设置
这些控件位于频道的“信息”选项卡中。禁用这两个高亮显示的设置,以确保开发构建和模拟器继续使用其捆绑的 Web 资源。

此频道策略仅阻止向选定的构建类型推送更新。根据频道的其他设置,生产签名真机仍可能接收更新。

对于希望本地、模拟器和开发者构建默认安全的团队,请通过环境变量使 Live Update 成为可选功能。以下配置在以下情况未满足时禁用更新检查: 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 会在同步期间将此配置复制到原生项目中。如果没有该变量,本地构建和模拟器构建将保持 autoUpdate: false ,并且不会检查 Live Update。

  1. 增加由 CapacitorUpdater.version 用于原生二进制的版本。
  2. 禁用 允许开发构建 以及 允许模拟器 在测试这些构建类型时,允许其访问该 channel。
  3. 本地构建,无需 CAPGO_LIVE_UPDATES.
  4. 设置 CAPGO_LIVE_UPDATES=true 仅在...之前 npx cap sync 在应接收 Live Update 的原生 CI 任务中。