Breaking Changes
Diese Dokumentation erklärt, wie Sie Breaking Changes in Ihrer App mithilfe von versionierten Kanälen handhaben. Dieser Ansatz ermöglicht es Ihnen, verschiedene Versionen Ihrer App zu pflegen und gleichzeitig sicherzustellen, dass Benutzer kompatible Updates erhalten.
Beispielszenario
Section titled “Beispielszenario”Angenommen, Sie haben:
- App-Version 1.2.3 (alte Version) - verwendet Produktionskanal
- App-Version 2.0.0 (neue Version mit Breaking Changes) - verwendet v2-Kanal
- Live-Update 1.2.4 (kompatibel mit 1.2.3)
- Live-Update 2.0.1 (kompatibel mit 2.0.0)
Strategie: Immer defaultChannel für Major-Versionen verwenden
Section titled “Strategie: Immer defaultChannel für Major-Versionen verwenden”Empfohlener Ansatz: Legen Sie einen defaultChannel für jede Major-Version fest. Dies stellt sicher, dass Sie Updates immer an bestimmte Benutzergruppen pushen können, ohne auf dynamische Kanalzuweisung angewiesen zu sein.
// Version 1.x ReleasesdefaultChannel: 'v1'
// Version 2.x ReleasesdefaultChannel: 'v2'
// Version 3.x Releases (zukünftig)defaultChannel: 'v3'1. Kanal für neue Version erstellen
Section titled “1. Kanal für neue Version erstellen”# Kanal für Version 2.x erstellennpx @capgo/cli channel create v22. Capacitor-Konfiguration für Version 2.0.0 aktualisieren
Section titled “2. Capacitor-Konfiguration für Version 2.0.0 aktualisieren”Aktualisieren Sie Ihre Capacitor-Konfiguration, bevor Sie Version 2.0.0 für den App Store erstellen:
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { // ... weitere Optionen defaultChannel: 'v2' // Alle 2.0.0-Benutzer verwenden v2-Kanal } }};
export default config;3. Separate Code-Branches verwalten
Section titled “3. Separate Code-Branches verwalten”Erstellen Sie separate Git-Branches, um die Kompatibilität zwischen App-Versionen zu gewährleisten:
# Branch für Version 1.x-Updates erstellen und pflegengit checkout -b v1-maintenancegit push origin v1-maintenance
# Ihr Main-Branch setzt Entwicklung von Version 2.x fortgit checkout mainKritisch: Pushen Sie niemals JavaScript-Bundles an ältere Apps, die nativen Code/APIs erwarten, die sie nicht haben. Erstellen Sie Updates immer vom entsprechenden Branch:
- v1-maintenance Branch: Für Updates an 1.x Apps (Produktionskanal)
- main Branch: Für Updates an 2.x Apps (v2-Kanal)
4. Bundles an entsprechende Kanäle hochladen
Section titled “4. Bundles an entsprechende Kanäle hochladen”# Für 1.x Updates: Vom v1-maintenance Branch erstellengit checkout v1-maintenance# Nehmen Sie hier Ihre 1.x-kompatiblen Änderungen vornpx @capgo/cli bundle upload --channel production
# Für 2.x Updates: Vom Main-Branch erstellengit checkout main# Nehmen Sie hier Ihre 2.x-Änderungen vornpx @capgo/cli bundle upload --channel v25. Selbstzuweisung aktivieren
Section titled “5. Selbstzuweisung aktivieren”# Apps erlauben, sich selbst dem v2-Kanal zuzuweisennpx @capgo/cli channel set v2 --self-assign6. Im App Store bereitstellen
Section titled “6. Im App Store bereitstellen”Erstellen und stellen Sie Version 2.0.0 im App Store bereit. Alle Benutzer, die diese Version herunterladen (ob neue Benutzer oder bestehende Benutzer, die aktualisieren), werden automatisch den v2-Kanal verwenden, da dies im App-Bundle konfiguriert ist.
Skalierung auf zukünftige Versionen
Section titled “Skalierung auf zukünftige Versionen”Wenn Sie Version 3.0.0 mit weiteren Breaking Changes veröffentlichen:
# Kanal für Version 3.x erstellennpx @capgo/cli channel create v3// capacitor.config.ts für Version 3.0.0const config: CapacitorConfig = { // ... plugins: { CapacitorUpdater: { defaultChannel: 'v3' // Version 3.x-Benutzer } }};Jetzt können Sie Updates an jede Version pushen:
productionKanal → Version 1.x-Benutzerv2Kanal → Version 2.x-Benutzerv3Kanal → Version 3.x-Benutzer
7. Bereinigung (Nach Migration)
Section titled “7. Bereinigung (Nach Migration)”Sobald alle Benutzer auf Version 2.x migriert sind (rechnen Sie mit 3-4 Monaten):
- Entfernen Sie
defaultChannelaus Ihrer Capacitor-Konfiguration - Löschen Sie den v2-Kanal:
npx @capgo/cli channel delete v2- Löschen Sie den v1-maintenance Branch:
git branch -d v1-maintenancegit push origin --delete v1-maintenanceTesten Sie Updates in jedem Kanal gründlich vor der Bereitstellung
Version 1.x-Updates pflegen
Section titled “Version 1.x-Updates pflegen”Um Updates zu senden, die mit Version 1.x kompatibel sind:
- Zum v1-maintenance Branch wechseln:
git checkout v1-maintenance- Ihre Änderungen vornehmen und committen:
# 1.x-kompatible Änderungen vornehmengit add .git commit -m "Fix for v1.x"git push origin v1-maintenance- Zum Produktionskanal erstellen und hochladen:
npx @capgo/cli bundle upload --channel production