Liefere nur kompatible Bundles mit Hilfe von Kanälen, semver-Regeln und der Metadatenstrategie.
Rückgänge
Ein Setup-Vorschlag mit den Installationsanweisungen und der vollständigen Markdown-Guideline für diesen Plugin kopieren.
Ein Capgo lebendes Update ersetzt sofort Ihre App’s JavaScript-Bundle jedoch kann es die native Teil Ihrer App – die Capacitor/Cordova-Plugins, native Abhängigkeiten und native Projekt-Konfiguration, die in das installierte Binärdatei kompiliert wurden. Wenn ein neues Bundle native code erwartet, die die installierte Binärdatei nicht hat, ist das Bundle native-inkompatibel: Capgo kann es trotzdem liefern, es kann jedoch auf Geräten, die noch die ältere native Build laufen, abstürzen oder sich ungewöhnlich verhalten.
Diese Seite erklärt, wie Capgo native Kompatibilität detektiert, was eine inkompatible Aktualisierung für Ihre Benutzer bedeutet und wie Sie native Änderungen sicher ausliefern können.
Jedes Capacitor-App wird in zwei Schichten geliefert:
Ein Live-Update ersetzt nur die JavaScript-Schicht. Wenn das neue JavaScript eine native Plugin oder API aufruft, das nicht in der installierten Binärdatei kompiliert wurde, schlägt die Aufrufanfrage bei der Ausführung fehl – was das Programm zum Absturz oder stillschweigend zu einem fehlerhaften Feature führen kann. Kurz gesagt: Capgo kann native code nicht aktualisieren, daher kann ein Gerät, das die alte native Version läuft, nicht sicher ein Bundle ausführen, das gegen neue native code gebaut wurde.
Wenn Sie ein Bundle hochladen – oder die Überprüfung manuell durchführen – vergleicht Capgo die native Packages in Ihrem lokalen Projekt (Ihre Capacitor/Cordova-Plugins und ihre Versionen) mit den native Packages, die für das Bundle aktuell auf dem Kanal:
bunx @capgo/cli@latest bundle compatibility com.example.app --channel productionDie CLI druckt eine Tabelle jedes natives Paket mit seiner lokalen Version, der Version live auf dem Kanal und einem Status:
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 bundleFür Pipelines: bundle releaseType faltet die Überprüfung in ein einzelnes Wort zusammen:
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 buildGeben Sie Ihrem Release-Pipeline eine Schranke: Verschicken Sie ein Live-Update, wenn es druckt, und lösen Sie ein natives Build aus, wenn es druckt OTAWas bedeutet ein inkompatibles Update für Ihre Benutzer? native.
Bei Geräten, die noch das ältere native Binärdateilaufen, kann das fehlende native code zu Crashes oder gebrochenen Funktionen führen — obwohl die Aktualisierung heruntergeladen und angewendet wurde „mit Erfolg“. Dies ist der Grund, warum eine Live-Update live und ausgeliefert werden kann, aber trotzdem den App für bestehende Benutzer kaputt machen kann, und warum Capgo Sie warnen kann, wenn ein inkompatibles Bundle live geht.
Capgo’s automatische Rückschaltung kann einen JavaScript-Fehler fangen, der vor dem Ausführen geworfen wurde notifyAppReady() läuft zwar, ist aber kein Ersatz für die Bereitstellung von kompatiblen nativen code — ein Mismatch, das später abstürzt oder natively abstürzt, kann daran vorbeikommen
Wenn ein Bundle neue native code benötigt, bauen und submiten Sie eine neue Binärdatei in den App Store / Play Store (oder rebuilden Sie mit Capgo Cloud Build). Sobald die Benutzer die Binärdatei aktualisieren, passen die native Abhängigkeiten des Bundles und die Live-Update läuft richtig ab
Wenn ein inkompatibles Bundle bereits auf einem Kanal aktiv ist, kehren Sie den Kanal zur letzten kompatiblen Build zurück, um es bis die native Build raus ist, nicht mehr zu liefern. Siehe Rückgänge.
Zwei komplementäre Wächter, die beide tatsächlich Ihre native Pakete überprüfen:
Führen Sie die Upload-Verarbeitung in CI — --fail-on-incompatible
Fügen Sie die Flagge Ihrem bundle upload Schritt. Wenn die Bundle-native-Pakete nicht mit der Version des Kanals übereinstimmen, die derzeit live ist, schlägt der Upload mit einer nicht Nullen-Exit-Status und wird nichts verschifft — — also stoppt Ihre Pipeline Sie daran, einen OTA-Update stillschweigend zu veröffentlichen, der nicht wirksam werden kann, bis die Benutzer eine native Build installieren: Terminalfenster
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.)
Gate lieferung durch native Version — metadata + --auto-min-update-version
Wenn Sie tun den native Build und das Bundle zusammen schicken, setzen Sie den Kanal auf die metadata Strategie und laden Sie mit --auto-min-update-version. Capgo führt die Kompatibilitätsprüfung auf jedem Upload durch und legt, wenn ein Bundle neue native code benötigt, den Update-Floor an, damit Geräte, die noch nicht die passende native Version installiert haben, sie nicht erhalten:
# 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-versionVersion Zielsetzung für die vollständige Liste der Zielsetzungsoptionen. Zugehörige
Liefere nur kompatible Bundles mit Hilfe von Kanälen, semver-Regeln und der Metadatenstrategie.
Rückgänge
Version Zielsetzung
Revert einen Kanal auf die letzte kompatible Build, wenn ein inkompatibles Bundle live ging.
Update Arten
Wie funktionieren die Anwendungen von Timing, Verzögerung und Versionsblockierung zusammen.
CLI: Bundle
Referenz für die Kompatibilität des Bundles, releaseType und Upload-Optionen.
Wenn Sie Native Kompatibilität verwenden um live Updates sicher zu halten, verbinden Sie es mit Version-Zielsystem um Bundles nach nativer Version zu routen, Wenn Sie Native Kompatibilität verwenden, um live Updates sicher zu halten, verbinden Sie es mit Version-Zielsystem, um Bundles nach nativer Version zu routen, Rollbacks um wiederherzustellen, wenn ein inkompatibles Bundle ausgeliefert wird, Update Arten um die Kanalversion zu blockieren, und die Capgo CLI Bundle-Referenz für die Kompatibilität und die releaseType-Befehle.