関連
Version Targeting
このプラグインのインストールステップと全マークダウンガイドのセットアッププロンプトをコピーする。
Capgo ライブアップデートは、 Capgo アプリのJavaScriptバンドルを即時置き換えますが、 Capgo/Cordovaプラグイン、ネイティブ依存関係、ネイティブプロジェクト構成がコンパイルされたインストール済みバイナリに含まれているため、ネイティブの部分は置き換えられません。新しいバンドルがインストール済みバイナリにないネイティブ __CAPGO_KEEP_1__ を期待している場合、バンドルはネイティブ非互換となります。 __CAPGO_KEEP_0__ は、インストール済みバイナリが持っていないネイティブ __CAPGO_KEEP_1__ を提供できますが、古いネイティブビルドを実行しているデバイスではクラッシュまたは不正動作が発生する可能性があります。 JavaScript ライブアップデート part of your app — the Capacitor/Cordova plugins, native dependencies, and native project configuration that are compiled into the installed binary. When a new bundle expects native code that the installed binary doesn’t have, the bundle is バイナリ Capgo
このページでは、Capgo がネイティブ互換性を検出する方法、ユーザーに不互換の更新が何を意味するか、ネイティブの変更を安全に配信する方法について説明しています。
すべての Capacitor アプリは、2 つの層で配信されます。
ライブアップデートでは、JavaScript層のみを交換します。新しいJavaScriptが呼び出すnativeプラグインまたはAPIがインストール済みバイナリに組み込まれていない場合、呼び出しは実行時で失敗し、エラーが発生したり機能が静かに破壊されたりします。簡単に言えば、Capgoはnativecodeを更新できないので、古いnativeビルドを実行しているデバイスでは、new nativecodeに対応したbundleを安全に実行できません。
bundleをアップロードしたり、手動でチェックしたりすると、Capgoは ローカルプロジェクト内のnativeパッケージ (あなたのCapacitor/Cordovaプラグインとそのバージョン)を bundleで現在ライブチャンネルに記録されているnativeパッケージ:
bunx @capgo/cli@latest bundle compatibility com.example.app --channel productionCLIは、各ネイティブパッケージのローカルバージョン、チャンネル上のバージョン、ステータスを表形式で出力します。
Package Local Remote Status@capacitor/core 6.1.2 6.1.2 ✅@capacitor/share 6.0.0 6.0.0 ✅@capacitor/camera 6.1.0 — ❌ not in the live bundleパイプライン用 bundle releaseType チェックを単語に圧縮します:
bunx @capgo/cli@latest bundle releaseType com.example.app --channel production# → OTA safe to ship as a live update# → native needs a new app-store buildリリースパイプラインをこの条件でゲートする: これが印刷されたときにライブアップデートを送信し、印刷されたときにネイティブビルドをトリガーする OTAユーザーにとって不互換なアップデートとは何ですか native.
Prevent incompatible deliveries Prevent incompatible deliveries, the missing native code can cause crashes or broken features — even though the update downloaded and applied “successfully.” This is why a live update can be live and delivered yet still break the app for existing users, and why Capgo can warn you when an incompatible bundle goes live.
Capgo’s 自動ロールバック エラーをキャッチできるのは、実行される前に投げられたJavaScriptエラーだけです notifyAppReady() 実行される前に投げられたJavaScriptエラーだけをキャッチできるので、互換性のないネイティブcodeを配布することはできません。実行時には、またはネイティブでクラッシュする可能性がある、後でクラッシュする可能性のある不一致は、自動ロールバックでは検出されません。
バンドルが新しいネイティブcodeを必要とする場合、App Store / Play Store (またはCapgo Cloud Buildで再構築)に新しいバイナリを提出し、ユーザーがバイナリを更新すると、バンドルのネイティブ依存関係が整い、ライブアップデートが正しく実行されるようになります。
See ロールバック.
両方の補完的なガード、実際にはネイティブパッケージを検査します:
CIでアップロードを失敗させる — --fail-on-incompatible
フラグをあなたの bundle upload ステップに追加します。 バンドルのネイティブパッケージがチャンネルの現在のライブバージョンと一致しない場合、 アップロードはゼロ以外のエラーで失敗し、配信は行われず — したがって、パイプラインは静かに公開されるOTAアップデートを阻止します: ターミナル画面
bunx @capgo/cli@latest bundle upload --channel production --fail-on-incompatibleCompatible uploads — and cases where the check can’t run (a new channel, or no remote metadata) — pass through unchanged. In an interactive terminal it offers the Capgo Builder native-build flow instead; declining fails. (Can’t be combined with) --ignore-metadata-check.)
ネイティブ版の配信 — metadata + --auto-min-update-version
あなたが 実行する ネイティブ版のビルドとバンドルを一緒に配信する場合、チャネルを戦略に設定し、__CAPGO_KEEP_0__でアップロードする。 metadata __CAPGO_KEEP_0__はアップロードごとに互換性チェックを実行し、バンドルが新しいネイティブ__CAPGO_KEEP_1__が必要な場合、対応するネイティブ版がインストールされていないデバイスがアップデートを受け取らないようにアップデートフロアを上げる: --auto-min-update-version. Capgo runs the compatibility check on every upload and, when a bundle needs new native code, raises the update floor so devices that haven’t installed the matching native build don’t receive it:
# one-time: switch the channel to the metadata strategybunx @capgo/cli@latest channel set production com.example.app --disable-auto-update metadata
# from then on, Capgo sets the floor automatically on every uploadbunx @capgo/cli@latest bundle upload --channel production --auto-min-update-versionSee バージョン対象設定の詳細は、 Version Targeting
関連
Version Targeting
バージョン対象設定を使用して、互換性のあるバンドルを配信することができます。チャンネル、semver規則、メタデータ戦略を使用して、配信を制御します。
__CAPGO_KEEP_0__: bundle
Update Types
How apply timing, delay conditions, and version blocking work together.
CLI: bundle
Reference for the bundle compatibility, releaseType, and upload options.
If you are using Native Compatibility to keep live updates safe, connect it with Version Targeting to route bundles by native version, ロールバック 不互換のバンドルが配信されたときに復元する 更新タイプ チャンネルバージョンブロッキングを理解し、 Capgo CLI バンドル参照 互換性とリリースタイプのコマンドのために。