Zum Inhalt springen

Veränderungen mit Auswirkungen auf die Kompatibilität

Diese Dokumentation erklärt, wie Sie bei Bruchänderungen in Ihrer App mit versionierten Kanälen umgehen können. Diese Vorgehensweise ermöglicht es Ihnen, verschiedene Versionen Ihrer App zu pflegen, während sichergestellt wird, dass Benutzer kompatible Updates erhalten.

Angenommen, Sie haben:

  • App-Version 1.2.3 (alte Version) - verwendet Produktionskanal
  • App-Version 2.0.0 (neue Version mit wichtigen Änderungen) - verwendet v2-Kanal
  • Live-Update 1.2.4 (kompatibel mit 1.2.3)
  • Live-Update 2.0.1 (kompatibel mit 2.0.0)

Strategie: Verwende immer defaultChannel für Hauptversionen

Abschnitt mit dem Titel “Strategie: Verwende immer defaultChannel für Hauptversionen”

Empfohlener Ansatz: Setze ein defaultChannel für jede Hauptversion. Dies sichert dir, dass du immer Updates an bestimmte Benutzergruppen pushen kannst, ohne dich auf dynamische Kanalzuweisungen zu verlassen.

// Version 1.x releases
defaultChannel: 'v1'
// Version 2.x releases
defaultChannel: 'v2'
// Version 3.x releases (future)
defaultChannel: 'v3'
Terminalfenster
# Create channel for version 2.x
npx @capgo/cli channel create v2

2. Aktualisieren Sie die Capacitor-Konfiguration für Version 2.0.0

Abschnitt mit dem Titel „2. Aktualisieren Sie die Capacitor-Konfiguration für Version 2.0.0“

Aktualisieren Sie Ihre Capacitor-Konfiguration, bevor Sie Version 2.0.0 für den App Store erstellen:

capacitor.config.ts
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.example.app',
appName: 'Example App',
plugins: {
CapacitorUpdater: {
// ... other options
defaultChannel: 'v2' // All 2.0.0 users will use v2 channel
}
}
};
export default config;

Erstellen Sie separate Git-Branches, um die Kompatibilität zwischen Anwendungsversionen aufrechtzuerhalten:

Terminalfenster
# Create and maintain a branch for version 1.x updates
git checkout -b v1-maintenance
git push origin v1-maintenance
# Your main branch continues with version 2.x development
git checkout main

Wichtig: Vermeiden Sie es, JavaScript-Bundles an ältere Apps zu pushen, die native code/APIs nicht unterstützen. Bauen Sie immer Updates von dem entsprechenden Branch aus:

  • v1-Wartungs-Branch: Für Updates an 1.x-Apps (Produktionskanal)
  • Haupt-Branch: Für Updates an 2.x-Apps (v2-Kanal)
Terminalfenster
# For 1.x updates: Build from v1-maintenance branch
git checkout v1-maintenance
# Make your 1.x compatible changes here
npx @capgo/cli bundle upload --channel production
# For 2.x updates: Build from main branch
git checkout main
# Make your 2.x changes here
npx @capgo/cli bundle upload --channel v2
Terminalfenster
# Allow apps to self-assign to v2 channel
npx @capgo/cli channel set v2 --self-assign

Hinweis

Wenn Sie Version 3.0.0 mit mehreren Änderungen veröffentlichen:

Terminal-Fenster
# Create channel for version 3.x
npx @capgo/cli channel create v3
// capacitor.config.ts for version 3.0.0
const config: CapacitorConfig = {
// ...
plugins: {
CapacitorUpdater: {
defaultChannel: 'v3' // Version 3.x users
}
}
};

Jetzt können Sie Updates für jede Version pushen:

  • production Kanal → Version 1.x-Benutzer
  • v2 Kanal → Benutzer der Version 2.x
  • v3 Kanal → Benutzer der Version 3.x

Nachdem alle Benutzer auf Version 2.x migriert sind (ca. 3-4 Monate):

  1. Löschen defaultChannel aus Ihrer Capacitor-Konfiguration
  2. Löschen Sie den Kanal v2:
Terminal-Fenster
npx @capgo/cli channel delete v2
  1. Löschen Sie den Zweig v1-maintenance:
Terminal-Fenster
git branch -d v1-maintenance
git push origin --delete v1-maintenance

Stellen Sie Updates immer gründlich in jedem Kanal vor der Bereitstellung auf die Probe

Um Updates abzusenden, die mit Version 1.x kompatibel sind:

  1. Wechseln Sie auf den v1-maintenance-Zweig:
Terminalfenster
git checkout v1-maintenance
  1. Machen Sie Ihre Änderungen und committen Sie:
Terminalfenster
# Make 1.x compatible changes
git add .
git commit -m "Fix for v1.x"
git push origin v1-maintenance
  1. Bauen und auf den Produktionskanal hochladen:
Terminalfenster
npx @capgo/cli bundle upload --channel production