Um iOS-Apps an Testern zu verteilen, verwenden Sie TestFlight (interne Tester sofort, externe Tester nach einer kurzen Beta-App-Überprüfung) oder einen ad-hoc-Build für registrierte Geräte. Für Android verwenden Sie einen Google Play-Testtrack (intern, geschlossen oder offen), Play-Interne-App-Teilung für einmalige Links oder teilen Sie eine signierte APK über Firebase App Distribution oder einen direkten Download. Welche Methode richtig ist, hängt davon ab, wer Ihre Tester sind, wie viele es gibt und ob der Build durch die Infrastruktur des Stores gehen muss.
Dieses Leitfaden vergleicht jede Option, zeigt, wie jede aufgesetzt werden kann für ein Capacitor-App, und listet die Fehler, die Tester typischerweise antreffen.
Die Auswahl einer Methode
| Verfahren | Plattform | Höchstzahl Tester | Überprüfung vor der Bereitstellung an Tester | Benötigt Tester | Beste Wahl |
|---|---|---|---|---|---|
| TestFlight interne | iOS | 100 Teammitglieder | Nein | App Store Connect-Benutzer, TestFlight-App | Dein Team |
| TestFlight extern | iOS | 10,000 | Beta App Review (erste Build einer Version) | E-Mail-Einladung oder öffentlicher Link, TestFlight-App | Beta-Nutzer, Kunden |
| Ad-hoc | iOS | 100 Geräte pro Gerätetyp pro Jahr | Nein | Registrierte UDID, Entwicklermodus | Kleine QA-Team, keine Apple-Überprüfung |
| Play interne Testung | Android | 100 | Keine vollständige Überprüfung, meist verfügbar in Minuten | Google-Konto auf E-Mail-Liste | Ihr Team |
| Play geschlossene Testphase | Android | E-Mail-Listen oder Google-Gruppen | Ja | Google-Konto, Opt-in-Link | Beta-User, die 12-Testanforderung |
| Play offene Testphase | Android | Unbegrenzt oder begrenzt | Ja | Opt-in auf der Liste | Öffentliche Beta |
| Play interne App-Teilung | Android | Jeder mit dem Link | Nein | Google-Konto, Einstellung aktiviert | Rasche QA-Builds, jede Version code |
| Firebase App Distribution | Beide | Groß | Nein | E-Mail-Einladung; iOS benötigt registrierte UDID | Cross-plattform-Test |
| Direkter APK-Link | Android | Jeder | Nein | Unbekannte Quellen zulassen | Schnelle internen Tests |
Regeln der Hand:
- Das gleiche Build, das Sie in den Store liefern werden? Verwenden Sie TestFlight- und Play-Tracks. Der Binär-Tester verwendet ist der Binär, der beworben wird.
- Tagliche QA-Builds? Interne Tests in beiden Stores oder Firebase App Distribution.
- Muss eine Web-Schichts-Änderung in Minuten getestet werden? Verschicken Sie ein live update in einen Testkanal anstatt einer neuen Binärdatei.
Bevor Sie verteilen: Signieren
Jeder Testbuild muss signiert werden.
- iOS Testbuilds verwenden entweder einen App Store Connect Profil (TestFlight) oder einen Ad Hoc Profil (direkter Install). Beide verwenden ein Apple-Distributionssiegel. Siehe iOS-Zertifikate und Bereitstellungsprofile erklärt.
- Android Für Play-Tracks sind die Builds AABs, die mit Ihrem Upload-Schlüssel signiert sind. Für direkte Installationen benötigen Sie ein APK, das mit einem beliebigen Release-Schlüssel signiert ist. Ein Debug-APK installiert sich auch, verhält sich jedoch anders (debugbar, unterschiedliche Signierung) und kann später nicht durch Ihren Play-Build aktualisiert werden.
iOS: TestFlight
Ein Build hochladen
Von Xcode: Produkt > Archivieren, dann Verteilen Sie die App > App Store Connect > Hochladen. Aus der Befehlszeile oder CI exportieren Sie ein .ipa und laden Sie es mit einem App Store Connect API-Schlüssel hoch, oder lassen Sie ein Cloud-Build-Service es tun.
Seit April 2026 müssen Uploads mit Xcode 26 oder später erstellt werden.
Hinzufügen Sie diesen Schlüssel zu ios/App/App/Info.plist Wenn Ihr App nur standardmäßige HTTPS-Verschlüsselung verwendet, damit App Store Connect für jeden Build die Exportklausel nicht ständig fragt:
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
Die Verarbeitung dauert von wenigen Minuten bis etwa eine Stunde. Sie erhalten eine E-Mail, wenn das Build fertig ist.
Interne Testung
- Öffnen Sie in App Store Connect Ihre App, TestFlight > Interne Testung, und erstellen Sie eine Gruppe.
- Hinzufügen Sie Teammitglieder. Sie müssen über einen App Store Connect-Rollen (Admin, App Manager, Entwickler, Marketing… ) verfügen. Bis zu 100 Personen.
- Enable Automatische Verteilung so geht jeder neue Build in die Gruppe.
- Testern laden das TestFlight App aus dem App Store laden und die Einladung annehmen.
App aus dem App Store und akzeptieren Sie die Einladung.
Außenstehende Testen
- TestFlight > Außenprüfung > + TestFlight > Außertesten > +
- um eine Gruppe zu erstellen. öffentlicher Link Die Build zur Gruppe hinzufügen und die
- Fügen Sie das Build zum Gruppe hinzu und füllen Sie Testinformation (was zu testen, Feedback-E-Mail, Beschreibung der Beta-App und Demo-Anmeldeinformationen, falls erforderlich).
- Für Beta-App-Überprüfung. Die erste Build jeder Version wird überprüft, meist innerhalb eines Tages. Spätere Builds derselben Version gehen oft ohne vollständige Überprüfung aus.
Die externe Testung unterstützt bis zu 10.000 Tester. Die Tester können Screenshot mit Feedback direkt aus TestFlight senden, die Sie in App Store Connect sehen.
TestFlight beschränkt sich auf
- Builds verfallen nach 90 Tagen.
- Die Tester benötigen iOS-Versionen, die von Ihrer Build unterstützt werden (Capacitor 8 erfordert iOS 15 oder später).
- Testflights-Builds verwenden die Produktions-App-Store-Zertifizierung, daher verwenden sie die production APNs-Umgebung.
- In-App-Käufe in TestFlight verwenden den Sandbox und werden nicht berechnet.
iOS: Ad-hoc-Verteilung
Ad-hoc-Builds installieren direkt auf Geräten, die Sie in der Apple-Entwickler-Portal registriert haben, ohne TestFlight oder Apple-Überprüfung.
- Erheben Sie die UDID jedes Testers. Testers können es auf ihrem eigenen Telefon mit dem iOS UDID Finder, oder Sie können es aus Finder oder Xcode lesen, wenn das Gerät angeschlossen ist.
- Registrieren Sie die Geräte in Zertifikate, Identifikatoren & Profile > Geräte.
- Erstellen Sie ein Ad Hoc -Provisioning-Profil, das diese Geräte enthält, und laden Sie es herunter.
- Bauen Sie ein
.ipaDistribute App > Release Testing Verteilen App > Freigabe-Testen, welches der neue Name für Ad Hoc ist. - Install it:
- Ziehen Sie
.ipaOder hoste es mit einem Xcode > Fenster > Geräte und Simulator. - Hosten Sie es mit einem
itms-servicesmanifest über HTTPS, damit Tester auf einen Link klicken können. Dienste wie Firebase App Distribution tun das für Sie.
- Ziehen Sie
- Auf iOS 16 und später installieren Sie
.ipavom Mac (Xcode oder Apple Configurator) aus Entwicklermodus auf dem Gerät (Einstellungen > Datenschutz & Sicherheit). Installationen von eineritms-servicesLink benötigen es nicht. Siehe wie man den Entwicklermodus auf iOS aktiviert.
Bei der Hinzufügung eines neuen Testers bedeutet dies, die UDID des Testers zu registrieren, das Profil neu zu generieren und neu zu bauen. Geräteslots (100 pro Geräefamilie) werden nur dann zurückgesetzt, wenn Ihr Mitgliedsjahr neu beginnt, also Geräte nicht leichtfertig registrieren.
Android: Google Play-Testspuren
Die Google Play Console bietet drei Testspuren plus Produktionsumgebung. Alle benötigen ein AAB, das mit Ihrem Upload-Schlüssel signiert ist.
Interne Testung
- Testen > Interne Testung > Testerteam: erstellen Sie eine E-Mail-Liste (bis zu 100 Adressen).
- Neue Version erstellen, das AAB hochladen, die Versionshinweise hinzufügen, speichern und ausrollen.
- Kopieren Sie den Opt-in-Link und senden Sie es an Tester. Diese akzeptieren und installieren es aus dem Google Play Store.
Internationale Veröffentlichungen stehen in der Regel innerhalb von Minuten zur Verfügung und warten nicht auf eine vollständige Überprüfung. Die erste Veröffentlichung einer neuen App kann länger dauern, während Google die App verarbeitet.
Abgeschlossene Tests
Abgeschlossene Tracks werden überprüft und unterstützende E-Mail-Listen oder Google-Gruppen verwendet. Dies ist der Track, den Sie benötigen für die 12 Tester für 14 Tage Regel, die sich auf persönliche Entwicklerkonten anwendet, die nach dem 13. November 2023 erstellt wurden, bevor der Zugriff auf die Produktion erfolgt ist. Die Verwendung eines Google-Gruppen macht es leicht für Tester, sich anzumelden. Details finden Sie in wie Sie Apple- und Google Play-Entwicklerkonten erstellen.
Offene Tests
Jeder kann sich von Ihrem Play-Listing anschließen. Verwenden Sie es für eine öffentliche Beta, sobald Ihr Store-Listing abgeschlossen ist. Die Rückmeldung von offenen Testern ist privat und beeinflusst nicht Ihre öffentliche Bewertung.
Unsere Anleitung zur Android-Betaversionstestung vergleicht die Tracks im Detail.
Android: In-app-Teilung
Die In-app-Teilung ist die schnellste Möglichkeit, ein APK oder AAB auf einem Gerät über den Play Store zu erhalten, ohne Version code-Regeln und ohne Überprüfung.
- In der Play Console öffnen Sie In-app-Teilung (unter Testing) und fügen Sie Upload-Tools hinzu.
- Upload an APK or AAB. You get a link.
- Die Tester öffnen die Play Store-App, gehen in die Einstellungen, tippen auf die Play Store-Version sieben Mal, um die Entwickler-Einstellungen zu enthüllen, und aktivieren Sie In-app-Teilung.
- Die Tester öffnen den Link und installieren.
Es ist nützlich für die QA von Pull-Request-Builds, da die Versionsnummern nicht erhöht werden müssen.
Android: direkter APK und Firebase App Distribution
Direkter APK
Bauen Sie eine signierte Release-APK. Ein neuer Capacitor Projekt hat keine release signier-Konfiguration, also assembleRelease would produce an unsigned APK that won’t install. Add a signingConfigs.release block (Sicherheitsdateipfad und -passwörter, normalerweise aus) key.properties) to android/app/build.gradle und Punkt buildTypes.release.signingConfig Direkter APK
bun run build
bunx cap sync android
cd android && ./gradlew assembleRelease
Share android/app/build/outputs/apk/release/app-release.apk through a link. Testers allow their browser or file manager to install unknown apps and open the file. If they already have a Play Store version installed, they must uninstall it first because the signatures differ. You can also install over USB with adb install -r app-release.apk (siehe) Wie man die Entwickleroptionen auf Android aktiviert).
Ab dem 30. September 2026 installieren nur zertifizierte Android-Geräte in Brasilien, Indonesien, Singapur und Thailand Apps, deren Paketname von einem verifizierten Entwickler registriert ist. Eine globale Rollout-Pläne für 2027. Wenn Ihre Tester in diesen Ländern sind, registrieren Sie den Paketnamen im Android-Entwickler-Konsolen oder im Play-Konsolen. Installationen über adb werden nicht betroffen.
Firebase App Distribution
Firebase App Distribution funktioniert für beide Plattformen, sendet E-Mail-Einladungen und verfolgt, wer welche Version installiert hat.
bun add -g firebase-tools
firebase login
firebase appdistribution:distribute android/app/build/outputs/apk/release/app-release.apk \
--app 1:1234567890:android:abc123def456 \
--groups "qa-team" \
--release-notes "Fix checkout crash"
- Android-Tester installieren über den E-Mail-Link oder die App Tester App.
- iOS-Tester müssen sich immer noch in einem Ad-hoc- (oder Entwicklungs-) Profil befinden. App Distribution sammelt ihre UDIDs, wenn sie die Einladung akzeptieren, aber Sie registrieren sie und bauen sie selbst neu.
- AAB-Verteilung erfordert die Verknüpfung des Firebase-Projekts mit Google Play.
Cloud-Builds, die Testern einen Link übergeben
Wenn Sie nicht wollen, dass Sie Macs und Signieren auf jedem CI-Runner halten Capgo Build Erstellt Capacitor Apps im Cloud. Für Testbuilds kann es die Store-Submission auslassen und das Binärdatei auf eine zeitbegrenzte Download-Link mit einem QR-Code code hochladen:
# Android APK/AAB for testers, no Play upload
bunx @capgo/cli@latest build request com.example.app \
--platform android --no-playstore-upload --output-upload --output-retention 2d
# iOS ad hoc build (no App Store submission)
bunx @capgo/cli@latest build request com.example.app \
--platform ios --ios-distribution ad_hoc --output-upload
# iOS build uploaded to TestFlight for external groups
bunx @capgo/cli@latest build request com.example.app \
--platform ios --ios-testflight-groups "Beta Testers"
Add --output-record build.json und das Link in der CI lesen mit bunx @capgo/cli@latest build last-output --path build.json --field outputUrl um es in einen Pull-Request oder Chat einzuposten. Die Capgo Build-Docs listet alle Optionen auf.
Skip Rebuilding für Web-Änderungen
Die meisten Änderungen in einem Capacitor-App sind im Web-Schicht. Wiederaufbau und Neuverteilung eines Binärs für einen Text-Fix verschwendet einen Tag der TestFlight-Verarbeitung und -Überprüfung. Mit Capgo Live-Updates, Testern bleibt die installierte Version und Sie pushen neue JavaScript-Bundles in einen Testkanal:
bunx @capgo/cli@latest bundle upload --channel beta
Sie können sogar jedem Pull-Request seinen eigenen Kanal geben und QA zwischen ihnen auf der gleichen installierten App umschalten. Siehe Jeden Pull-Request in eine installierbare Vorschau umwandeln.
Troubleshooting
“Keine Installation möglich” auf iOS ad hoc. Der Geräte-UDID ist nicht im Profil enthalten oder das Profil ist abgelaufen. Überprüfen Sie mit security cms -D -i profile.mobileprovision.
Die App öffnet sich und schließt sich sofort auf iOS. Der Entwickler-Modus ist aus (ad-hoc/Entwicklerversionen), oder das Profil ist abgelaufen.
TestFlight-Build steckt in „Verarbeitung“. Warten Sie bis zu einer Stunde. Wenn es fehlschlägt, enthält der E-Mail-Bericht den Grund, oft eine fehlende Verwendungsbeschreibung-String ("NSCameraUsageDescription TestFlight „Mangelnde Einhaltung“.
TestFlight „Mangelnde Einhaltung“ Beantworte die Exportklauselfrage in App Store Connect oder füge sie hinzu ITSAppUsesNonExemptEncryption to Info.plist.
Android „Die App wurde nicht installiert“. Aus einer anderen Signatur ist bereits eine Version installiert, oder das APK ist unsigniert oder beschädigt. Entferne die bestehende App.
Der Tester sieht die App im Play Store nicht nach der Opt-in. Warte ein paar Minuten, stelle sicher, dass sie mit der eingeladenen Konto angemeldet sind und überprüfe, ob die Veröffentlichung auf dem Track und in ihrem Land verfügbar ist.
“Version code bereits verwendet” beim Hochladen. Bump versionCode in android/app/build.gradle. Die interne App-Teilung ist die Ausnahme.
Push-Benachrichtigungen gelangen nicht in TestFlight. TestFlight verwendet die Produktionsumgebung von APNs. Überprüfe die aps-environment Zulassung und die Umgebungsinstellung deines Push-Anbieters.
Empfehlung für ein kleines Team
- TestFlight-Gruppe mit automatischer Verteilung, plus eine Play-Gruppe für interne Tests, für jede Merge zu
main. - A TestFlight-Gruppe für externe Tester und eine Play-Teststrecke für Beta-User, wöchentlich aktualisiert.
- Live-Updates auf einem
betaKanal für Web-Fixes zwischen Builds. - Wenn die Beta stabil ist, stelle die gleiche Build auf beiden Stores in Produktion um und folge dem Leitfaden für die erste App-Bewertung.