Passer à la navigation principale

Ciblage de version

Envoyer chaque version native uniquement les bundles qu'elle peut exécuter

Les utilisateurs mettent à jour depuis la boutique à leur propre rythme, donc plusieurs versions natives de votre application sont en ligne en même temps. Capgo vérifie les dépendances natives de chaque bundle, bloque les mises à jour par règles de version et peut router chaque version native vers son propre canal.

Vérifiez la compatibilité native avant l'upload

La compatibilité du paquet compare les packages natives de votre projet avec le paquet en direct sur le canal. Ajoutez --fail-on-incompatible dans CI pour arrêter un upload qui nécessite un nouveau binaire.

Documents de compatibilité native

Fixez un plancher de version native sur chaque paquet

Mettez le canal sur la stratégie de métadonnées et uploadez avec --auto-min-update-version. Les appareils dont la version native est inférieure au plancher du paquet le sautent et conservent leur dernier paquet.

Documents de ciblage de version

Mise à jour bloquée entre les versions semver

--disable-auto-update major, minor, ou patch empêche un appareil de recevoir un paquet en dehors de sa ligne de version native. Ces règles ne comparant que les numéros de version ne inspectent pas les natives code.

Types de mise à jour et blocage de version

Un canal par version native

Fixez defaultChannel dans chaque build native Capacitor config, par exemple v2 ou v3. Chaque ligne obtient ses propres paquets, et une ligne plus ancienne peut rester sur son dernier paquet fonctionnel.

Documents de ciblage de version

Comment ça marche

Comment les équipes avec plusieurs versions natives délivrent avec Capgo

Une configuration CI qui permet au canal live update et au canal de magasin de fonctionner côte à côte. Chaque commande ci-dessous provient des Capgo CLI docs.

  1. Faites-vous construire une version native pour le commit ?

    build needed compare vos packages natives avec le canal. Il imprime oui et sort avec le code code 1 lorsque la mise à jour de magasin est requise, et non lorsque une live update est suffisante.

    npx @capgo/cli@latest build needed com.example.app --channel production
    build needed reference
  2. Switchez le canal vers la stratégie de métadonnées

    Faites-l’une fois. À partir de là, chaque bundle transporte une version native minimale et les appareils inférieurs à celle-ci ignorent le bundle.

    npx @capgo/cli@latest channel set production com.example.app \
      --disable-auto-update metadata
    Documentation de la ciblage de version
  3. Mises à jour en direct quotidiennes

    Keep --auto-min-update-version on every upload. --fail-on-incompatible stops the job if the bundle needs native code the channel does not have.

    npx @capgo/cli@latest bundle upload --channel production \
      --auto-min-update-version \
      --fail-on-incompatible
    Documentation de la compatibilité native
  4. Téléchargez le bundle pour une nouvelle version native

    Lorsque le nouveau binaire est disponible, téléchargez son bundle sans --fail-on-incompatible. Capgo augmente le seuil pour que les anciens builds l’ignorent, et les vérifications ultérieures se font par rapport aux nouveaux packages natives.

    npx @capgo/cli@latest bundle upload --channel production \
      --auto-min-update-version
    Flux de travail native et OTA

Migration vers Appflow

Provenant de Ionic Appflow ?

Appflow correspondait aux mises à jour natives pour vous. Dans Capgo, vous obtenez le même résultat avec les canaux et les règles de version :

  1. Créez un canal pour chaque ligne native, par exemple v1 et v2.
  2. Définissez la valeur par défaut de channel dans la configuration de chaque build natif à Capacitor sur son canal.
  3. Téléchargez chaque paquet dans le canal de la ligne native pour lequel il a été construit.
  4. Keep --auto-min-update-version on uploads so a bundle that needs newer native code skips older builds.
Guide de migration vers Appflow
Un canal par ligne native
// capacitor.config.ts in your 2.x native builds
plugins: {
  CapacitorUpdater: {
    defaultChannel: 'v2',
  },
},

# ship a fix to 2.x users only
npx @capgo/cli@latest bundle upload --channel v2 \
  --auto-min-update-version

# 1.x devices stay on their channel's current bundle

Situations courantes

Un nouveau plugin native

Votre version 2.0 ajoute un plugin de caméra. Téléchargez le paquet qui l'utilise avec --auto-min-update-version, et les appareils 1.x le sautent jusqu'à ce que les utilisateurs installent 2.0.

Documentation de compatibilité native

Exposition progressive

Envoyez un ensemble à une fraction d'un canal avec --rollout, observez les données d'installation et d'échec, puis promouvez-l’ou revenez en arrière.

Documentation des déploiements progressifs

Retrait d'une ancienne version

Arrêtez de télécharger sur le canal v1. Les appareils sur lui gardent leur dernier bundle fonctionnel tandis que v2 continue à recevoir des mises à jour.

Documentation de ciblage de version

Chaque ligne native pointe vers son propre canal

Exemple de mise en page avec trois versions natives dans la nature.

  • Native 3.x
    v3
    Nouveaux ensembles
  • Native 2.x
    v2
    Corrections
  • Native 1.x
    v1
    Aucun nouveau bundle

Fonctionnalités vers v3, corrections vers v2, et rien vers v1. Les appareils sur v1 conservent leur dernier bundle fonctionnel.

Applications construites avec Capacitor

Public apps must support old and new native versions

Les applications civiques, de santé et de prévisions peuvent supporter les anciennes versions Android et différentes générations de dispositifs. La ciblage de version garde chaque build natif sur le dernier bundle web compatible sans imposer un chemin d'actualisation unique pour tout le monde.

icône de l'application e-Título SOCIAL

e-Titre

Application d'identité civique avec une large compatibilité de dispositifs publics nécessite.

L'installation de Google Play
54,9M
Notation de magasin
4.8
icône de l'application Conecte SUS MÉDICAL

Conecte SUS

Health app where older and newer native shells may need different web bundles.

L'installation de Google Play
27,7M
Note de classement de l'application
4.6
Windy.com - icône de prévision météorologique WEATHER

Windy.com - Prévisions météorologiques

L'application météo où les performances du dispositif et de la carte peuvent varier en fonction de la version.

Installs sur Google Play
32,9M
Note de classement de l'application
4.7

Preuves de clients

Ce que les équipes qui utilisent Capgo disent

5.0/5 évalué par les équipes de développeurs 9,400+ équipes Lire les avis

no-tone @ Webincode

Développeur, Webincode

« L'être capable d'ajouter des identifiants de dispositif à certaines groupes et de faire passer les modifications à seulement certaines groupes est un vrai sauveur. »

Nate van Jole

CTO, Privé

« L'installation a pris moins d'une journée. Les déploiements basés sur le canal me permettent de tester sur mon propre appareil avant que les utilisateurs de production ne soient touchés. »

Portrait de Sergiu S

Sergiu S

Développeur principal, drivolino GmbH

« Le plugin de mise à jour Capgo Capacitor a complètement transformé notre façon de livrer les mises à jour. Ce qui prenait des jours ne prend plus que des minutes. »

FAQ

Questions sur les versions dans la nature

For teams supporting users who update the store app at different times.

What happens to users who never update the native app?

They keep receiving bundles that are compatible with their native version. With the metadata strategy, a bundle whose minimum native version is above theirs is skipped, and they stay on their current bundle.

Ciblage de version

Est-ce que --disable-auto-update est suffisamment majeur pour éviter les plantages ?

Non. Les règles de version ne comparent que les numéros de version, donc une modification native déployée dans une mise à jour mineure ou de correction va toujours être envoyée. Utilisez --fail-on-incompatible ou --auto-min-update-version, qui vérifient vos packages natives.

Compatibilité native

Comment le CI sait-il si une modification nécessite une mise à jour de magasin ?

Exécutez buildNeeded ou bundleReleaseType contre le canal. Les deux comparant les métadonnées des packages natives. Ils ne voient pas chaque modification sous ios/, android/ ou capacitor.config, donc bloquez ces chemins dans Git également.

Choisissez OTA ou build natif dans CI

Nous passons de Ionic Appflow. Pouvons-nous conserver les mises à jour correspondant aux versions ?

Oui. Utilisez un canal par ligne native avec defaultChannel, ou la stratégie de métadonnées avec --auto-min-update-version. Le guide de migration d'Appflow passe en revue la configuration.

Guide de migration d'Appflow

Qu'est-ce si un bundle incompatibles a déjà été envoyé ?

Pointez le canal vers le dernier bundle compatible de son historique, ou forcez le bundle intégré, et envoyez la build native. notifyAppReady() roule en arrière un bundle qui ne démarre pas, mais ce n'est pas un substitut pour des packages natives compatibles code.

Rétrogradations

Conservez chaque version native dans un ensemble qui peut s'exécuter

Configurez la stratégie de métadonnées et une vérification de compatibilité dans CI pendant la période d'essai gratuite de 14 jours. Pas de carte de crédit nécessaire.