Passer à la navigation

Compatibilité native

Une mise à jour en temps réel Capgo remplace le bundle JavaScript de votre application. Configurez avec l'IA instantanément, mais il ne peut pas changer la nativement partie de votre application — les plugins Cordova Capacitor, les dépendances natives et la configuration de projet native qui sont compilés dans le fichier binaire installé. Lorsqu'un nouveau bundle attend des code natives que le fichier binaire installé n'a pas, le bundle est non-natif: Capgo peut toujours le livrer, mais il peut planter ou se comporter de manière anormale sur les appareils qui sont toujours en train de fonctionner avec la version native plus ancienne.

Cette page explique comment Capgo détecte la compatibilité native, ce que signifie une mise à jour incompatible pour vos utilisateurs, et comment livrer des changements natives de manière sûre.

Capgo peut envoyer des fichiers à partir du dossier de génération de votre build web. Si le changement ne concerne que l'HTML, le CSS, le JavaScript, les assets ou les packages pure-JavaScript intégrés à cet output, livre-le en tant que mise à jour en temps réel.

Utilisez une mise en production d'application native lorsque une modification met à jour capacitor.config.tsLa configuration du plugin est stockée dans Capacitor config, les plugins natifs ou les dépendances, Capacitor lui-même, ou les fichiers de projet iOS/Android. npx cap sync Une vérification pratique : si la modification doit mettre à jour le projet natif par npx cap copy ou

avant que les appareils installés puissent l'utiliser, traitez-la comme native.Ship with Capgo OTA?Envoyez avec __CAPGO_KEEP_0__ OTA ?
PourquoiLe HTML, le CSS, le JavaScript d'application, les images, les polices et autres actifs de build webOui
Ils sont chargés à partir du paquet web en temps de exécution.Les changements de package Pure-JavaScript encapsulés dans votre sortie webThe code généré JavaScript fait partie du bundle web.
capacitor.config.ts changementsNonLa configuration Capacitor est lue dans l'application native à l'étape de construction.
Ajouter, supprimer ou mettre à jour Capacitor / Cordova pluginsNonL'exécutaire natif installé doit contenir le code natif correspondant.
Les modifications des fichiers de projet iOS ou AndroidNonLes utilisateurs existants ont besoin d'un nouveau binaire provenant des magasins.

Capgo fournit des clients de mise à jour dédiés pour chaque runtime hybride :

PluginUtilisez lorsque
@capgo/capacitor-updaterCapacitor applications iOS/Android
@capgo/cordova-updaterApplications iOS 7+ / Android 13+ Cordova
@capgo/electron-updaterApplications Electron bureautiques

Les vérifications de compatibilité native s'appliquent quel que soit le plugin du client — elles comparant les dépendances natives enregistrées du paquet avec le code binaire installé.

Tout Capacitor application embarque deux couches :

  • Le binaire natif Les utilisateurs installent depuis l'App Store / Play Store. Il contient Capacitor, vos plugins natifs, et votre configuration native.
  • Le bundle JavaScript (votre application web) qui Capgo peut mettre à jour par Wi-Fi.

Une mise à jour en temps réel n'échange que la couche JavaScript. Si ce nouveau JavaScript appelle un plugin natif ou API qui n'est pas compilé dans le code binaire installé, l'appel échoue en temps de exécution — ce qui peut faire planter l'application ou briser silencieusement une fonctionnalité. En d'autres termes : Capgo ne peut pas mettre à jour les code natifs, donc un appareil exécutant la version native ancienne ne peut pas exécuter en toute sécurité un bundle qui a été construit contre de nouveaux code natifs.

Comment Capgo détecte la compatibilité

Sous-titre : Comment Capgo détecte la compatibilité

Lorsque vous téléchargez un bundle — ou que vous exécutez la vérification manuellement — Capgo compare les packages natifs dans votre projet local (vos plugins Cordova Capacitor et leurs versions) avec les packages natifs enregistrés pour le bundle actuellement en ligne sur le canal:

  • S'ils correspondent, la modification est uniquement JavaScript et sûr de naviguer en ligne.
  • Si un plugin a été ajouté, supprimé ou a changé de version, le bundle est incompatible avec le natif — ces changements ne prennent effet qu'une fois que les utilisateurs installent un nouveau binôme natif.
Fenêtre de terminal
bunx @capgo/cli@latest bundle compatibility com.example.app --channel production

Le CLI imprime une table de chaque package natif avec sa version locale, la version en direct sur le canal et un statut :

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

Pour les pipelines, bundle releaseType réduit la vérification en un seul mot :

Fenêtre de terminal
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

Gardez votre pipeline de mise en production sur ceci : envoyer une mise à jour en direct lorsque cela imprime OTAet déclenchez une construction native lorsque cela imprime native.

What une mise à jour incompatible signifie pour vos utilisateurs

Section intitulée “What une mise à jour incompatible signifie pour vos utilisateurs”

On les appareils qui fonctionnent toujours avec le binaire natif plus ancien, le code natif manquant peut provoquer des plantages ou des fonctionnalités cassées — même si l'actualisation a été téléchargée et appliquée avec succès. C'est pourquoi une mise à jour en direct peut être en direct et livrée, mais toujours casser l'application pour les utilisateurs existants, et pourquoi Capgo peut vous avertir lorsque le bundle incompatibles est en ligne.

le rôle de Capgo’s retour automatique peut attraper une erreur JavaScript lancée avant notifyAppReady() exécuter, mais ce n'est pas un substitut pour envoyer des code natifs compatibles — un désalignement qui plante plus tard, ou plante nativement, peut lui échapper.

Comment envoyer des changements natifs de manière sûre

Section intitulée « Comment envoyer des changements natifs de manière sûre »

Publiez une nouvelle build natif (la vraie solution)

Section intitulée « Publiez une nouvelle build natif (la vraie solution) »

Lorsqu'un bundle nécessite de nouveaux code natifs, construisez et soumettez une nouvelle version binaire sur l'App Store / Play Store (ou reconstruisez avec Capgo Cloud Build). Une fois que les utilisateurs mettent à jour la version binaire, les dépendances natives du bundle se mettent en ligne et la mise à jour en direct fonctionne correctement.

Si un bundle incompatibles est déjà en ligne, annulez-le.

Section intitulée “Annuler si un bundle incompatibles est déjà en ligne”

Si un bundle incompatibles est déjà actif sur un canal, rétablissez le canal à la dernière version compatible pour l'arrêter de le servir jusqu'à ce que la version native soit disponible. Consultez Rollbacks.

Deux garde-fous complémentaires, qui inspectent tous deux vos packages natives :

Échouez l'upload en CI — --fail-on-incompatible

Ajoutez la flag à votre bundle upload étape. Si les packages natives du bundle ne correspondent pas à la version actuellement en ligne du canal, l'upload échoue avec un code de sortie non nul et rien n'est expédié — afin que votre pipeline vous empêche de publier silencieusement une mise à jour OTA qui ne peut prendre effet que lorsque les utilisateurs installent une version native :

Fenêtre de terminal
bunx @capgo/cli@latest bundle upload --channel production --fail-on-incompatible

Les téléchargements compatibles — et les cas où la vérification ne peut pas s'exécuter (un nouveau canal, ou aucune métadonnée distante) — passent intactes. Dans un terminal interactif, il propose la mise en œuvre de flux de construction native du Capgo au lieu de cela ; refuser échoue. (Ne peut pas être combiné avec --ignore-metadata-check.)

Livraison par version native — metadata + --auto-min-update-version

Lorsque vous faites envoyer la construction native et le bundle ensemble, placez le canal sur la metadata stratégie et téléchargez avec --auto-min-update-versionCapgo exécute la vérification de compatibilité sur chaque téléchargement et, lorsqu'un bundle nécessite de nouvelles constructions natives code, élève le plan d'actualisation pour que les appareils qui n'ont pas installé la construction native correspondante ne reçoivent pas :

Fenêtre de terminal
# one-time: switch the channel to the metadata strategy
bunx @capgo/cli@latest channel set production com.example.app --disable-auto-update metadata
# from then on, Capgo sets the floor automatically on every upload
bunx @capgo/cli@latest bundle upload --channel production --auto-min-update-version

pour l'ensemble des options de ciblage. Section liée titrée « Section liée » Section liée

Section liée

Si vous utilisez Compatibilité native pour garder les mises à jour en direct en sécurité, connectez-la avec Ciblage de version pour router les bundles en fonction de la version native, Rollbacks pour récupérer lorsque des bundles incompatibles sont expédiés, Types d'actualisation pour comprendre le blocage de version par canal, et le Capgo CLI référence de bundle pour les commandes de compatibilité et de releaseType. for the compatibility and releaseType commands.