Flusso di lavoro nativo + OTA
Canali di sviluppo e produzione, quando conservare --fail-on-incompatible, e come spedire una base nativa intenzionale.
Copia una richiesta di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Una Capgo live update sostituisce la tua app' pacchetto JavaScript istantemente, ma non può cambiare il native 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 incompatibile nativo: Capgo può ancora consegnarlo, ma potrebbe bloccarsi o comportarsi in modo anomalo su dispositivi che ancora eseguono la versione nativa più vecchia.
Questa pagina spiega come Capgo rileva la compatibilità nativa, cosa significa un aggiornamento incompatibile per i tuoi utenti e come inviare cambiamenti nativi in modo sicuro.
Capgo può inviare file dal tuo folder di output web generato. Se il cambiamento influisce solo su HTML, CSS, JavaScript, asset o pacchetti di JavaScript puri inclusi in quel output, invialo come live update.
Usa un rilascio di app nativa quando un cambiamento aggiorna capacitor.config.ts, la configurazione del plugin memorizzata in Capacitor config, plugin nativi o dipendenze, Capacitor stesso o file del progetto iOS/Android. Un controllo pratico: se il cambiamento deve aggiornare il progetto nativo attraverso npx cap sync o npx cap copy prima di installare i dispositivi possono utilizzarlo come nativo.
| Cambia | Consegnare con Capgo OTA? | Perché |
|---|---|---|
| HTML, CSS, JavaScript dell'applicazione, immagini, font e altri asset di costruzione web | Sì | Sono caricati dal bundle web in esecuzione. |
| Modifiche al pacchetto JavaScript puro raccolte nella tua output web | Sì | Il JavaScript generato fa parte del bundle web. |
capacitor.config.ts Le modifiche | No | Capacitor configura la applicazione nativa al momento della compilazione. |
| Aggiungere, rimuovere o aggiornare i plugin Capacitor / Cordova | No | Il binario nativo installato deve contenere il code nativo corrispondente. |
| Modifiche ai file del progetto iOS o Android | No | Gli utenti esistenti hanno bisogno di un nuovo binario dai negozi. |
Capgo fornisce client di aggiornamento dedicati per ogni runtime ibrido:
| Plugin | Usare quando |
|---|---|
@capgo/capacitor-updater | Capacitor app iOS/Android |
@capgo/cordova-updater | Cordova app iOS 7+ / Android 13+ |
@capgo/electron-updater | App Electron desktop |
Verifiche di compatibilità native si applicano indipendentemente dal plugin del client — confrontano le dipendenze native registrate del bundle con il binario installato.
Ogni Capacitor app viene distribuita in due layer:
Un live update sostituisce solo il layer JavaScript. Se il nuovo JavaScript chiama un plugin nativo o API che non è stato compilato nella versione binaria installata, la chiamata fallisce all'esecuzione — il che può far crashare l'app o rompere silenziosamente una funzionalità. In poche parole: Capgo non può aggiornare i code nativi, quindi un dispositivo che esegue la versione binaria nativa vecchia non può eseguire in sicurezza un pacchetto costruito contro nuovi code nativi.
Quando carichi un pacchetto — o esegui la verifica manualmente — Capgo confronta i pacchetti nativi nel tuo progetto locale (i tuoi Capacitor/Cordova plugin e le loro versioni) con i pacchetti nativi registrati per il pacchetto attualmente in distribuzione sul canale:
bunx @capgo/cli@latest bundle compatibility com.example.app --channel productionLa CLI stampa una tabella di ogni pacchetto nativo con la sua versione locale, la versione live sul canale e uno stato:
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 bundlePer pipeline, bundle releaseType collapsa il controllo in una sola parola:
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 buildBlocca il tuo flusso di rilascio su questo: invia un live update quando stampa OTAe attiva una costruzione nativa quando stampa native.
Su dispositivi ancora in esecuzione con binario nativo più vecchio, 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 rollback automatico può catturare un errore JavaScript lanciato prima notifyAppReady() Esegue le prove, ma non è un sostituto per la distribuzione di applicazioni native compatibili code.
Quando un bundle richiede nuove versioni native di code, costruisci e invia una nuova versione binaria su App Store / Play Store (o ricostruisci con Capgo Cloud Build). Una volta che gli utenti aggiornano la versione binaria, le dipendenze native del bundle si allineano e live update funziona correttamente.
Se un bundle incompatibile è già attivo su un canale, ripristina il canale alla versione compatibile più recente per fermare la distribuzione fino a quando non è disponibile la versione nativa. Vedi Ripristini.
Due guardiani complementari, entrambi dei quali effettuano effettivamente l'ispezione dei tuoi pacchetti nativi:
Fallire l'upload in CI — --fail-on-incompatible
Aggiungi la flag alla tua bundle upload passo. Se i pacchetti nativi del bundle non corrispondono alla versione attualmente in linea del canale, l'upload fallisce con un codice di uscita non zero e nulla viene spedito — in modo che il tuo pipeline non pubblichi un aggiornamento OTA in silenzio che non potrà avere effetto fino a quando gli utenti non installano una versione nativa:
bunx @capgo/cli@latest bundle upload --channel production --fail-on-incompatibleConsegne compatibili — e casi in cui il controllo non può essere eseguito (un nuovo canale, o nessuna metadata remota) — passano invariati. In un terminale interattivo offre al suo posto il flusso di costruzione nativa del Capgo Builder; rifiutare fallisce. (Non può essere combinato con --ignore-metadata-check.)
Consegna della porta da versione nativa — metadata + --auto-min-update-version
Quando desideri fa invia la costruzione nativa e il bundle insieme, metti il canale sulla metadata strategy e caricamento con --auto-min-update-versionEsegui Capgo il controllo di compatibilità su ogni caricamento e, quando un bundle richiede nuove librerie native code, solleva il livello di aggiornamento in modo che i dispositivi che non hanno installato la versione nativa corrispondente non ricevano l'aggiornamento:
# 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-versionVedi Versione di riferimento per l'intero set di opzioni di targeting.
Flusso di lavoro nativo + OTA
Canali di sviluppo e produzione, quando conservare --fail-on-incompatible, e come spedire una base nativa intenzionale.
Auto OTA o Nativo
Cavo bundle releaseType nel GitHub Azioni o GitLab affinché CI selezioni live update rispetto a Capgo Build.
Versione di riferimento
Spedisci solo pacchetti compatibili utilizzando canali, regole di semver e la strategia di metadati.
Ripristini
Ritorna a un canale al build compatibile più recente se un pacchetto incompatibile è stato pubblicato.
Tipi di Aggiornamento
Come funziona l'applicazione di condizioni di ritardo e blocco di versione insieme.
CLI: pacchetto
Riferimento per la compatibilità del pacchetto, releaseType e le opzioni di caricamento.
Se stai utilizzando Compatibilità nativa per mantenere gli aggiornamenti live sicuri, collega il Target di versione per route bundle con versione nativa, Rollbacks per recuperare quando un bundle incompatibile viene distribuito, Tipi di Aggiornamento per comprendere il blocco della versione del canale e il Capgo CLI riferimento al bundle per i comandi di compatibilità e releaseType.