Zum Hauptinhalt springen

Die besten CI/CD-Plattformen für Android-Apps 2026 im Vergleich

Android-CI/CD-Plattformen im Vergleich 2026: GitHub Actions, GitLab, Bitrise, Codemagic, Appcircle, CircleCI, Azure DevOps und Capgo Build für AAB-Builds.

Android-App-Bundle auf dem Weg durch CI/CD-Pipelines zu Google Play-Tracks

Die beste CI/CD-Plattform für Android-Apps ist oft die, die ihr bereits nutzt, denn Android-Builds brauchen nur Linux, Java, das Android SDK und Gradle. Die Unterschiede zwischen den Plattformen zeigen sich beim Build: Wie sie euer Keystore speichern, wie sie zu Google Play-Tracks hochladen, wie schnell Gradle-Caching wiederholte Builds macht und ob dieselbe Plattform auch iOS abdeckt. Dieser Vergleich behandelt GitHub Actions, GitLab CI, Bitrise, Codemagic, Appcircle, CircleCI, Azure DevOps und Capgo Build.

Der Android-Release-Flow in 2026

Jede Android-Pipeline macht im Grunde dasselbe:

  1. Ein JDK und das Android SDK installieren (oder ein Image nutzen, das beides enthält).
  2. Ausführen ./gradlew bundleRelease.
  3. Die AAB mit deinem Key signieren, Upload-Key.
  4. und sie über die Google Play Developer API in einen Play-Console-Track (intern, geschlossen, offen oder Produktion) hochladen.
  5. Optional an einen Prozentsatz der Nutzer ausrollen.

Regeln, die jede Plattform einhalten muss:

  • AAB ist für neue Apps Pflicht, auf Google Play, und Google signiert die ausgelieferten APKs mit dem hinterlegten App-Signing-Key neu (Play App Signing).
  • Das Target-API-Level steigt jährlich. Google erhöht die Mindestanforderung targetSdkVersion für Updates jeden August. Capacitor 8 zielt bereits auf API 36 ab.
  • 16-KB-Seitengrößen. Neuere Geräte verwenden 16-KB-Speicherseiten, und Play verlangt, dass native Libraries in aktualisierten Apps sie unterstützen. Siehe Android 16-KB-Seitengröße für Capacitor Plugins.
  • JDK 21 ist die Basis für Capacitor 7- und 8-Projekte sowie aktuelle Android Gradle Plugin-Versionen.

Feature-Matrix

Plattform Runners Keystore-Speicherung Play-Upload Gradle-Cache Auch iOS Preismodell
GitHub Aktionen Gehostet Linux, Self-Hosted Verschlüsselte Secrets fastlane, Gradle Play Publisher oder Community-Actions gradle/actions/setup-gradle Ja, macOS-Runner Pro Minute, Linux am günstigsten; kostenlos für öffentliche Repos
GitLab CI Hosted Linux, selbst verwaltet CI/CD-Variablen, sichere Dateien fastlane, Google Play-Integration cache: Schlüssel Ja, macOS-Beta Compute-Minuten pro Plan
Bitrise Gehostete Linux-Stacks Verwaltete code Signing-Dateien Google Play Deploy-Schritt Integrierte Cache-Schritte Ja Credits pro Build-Minute
Codemagic Gehostetes Linux und Mac Benannte Keystore-Referenzen Integriert, Tracking und Rollout-Anteil Integriert Ja Minuten- oder Jahrespläne
Appcircle Hosted- oder Self-hosted-Server Signing-Identity-Store Publish-Modul Integriert Ja Plan-Stufen, Enterprise self-hosted
CircleCI Hosted Linux (cimg/android), self-hosted Contexts und Env Vars fastlane oder Scripts save_cache/restore_cache Ja Credits pro Minute
Azure DevOps Microsoft-gehostet, selbst gehostet Sichere Dateien Google Play-Erweiterungsaufgabe Cache@2 Ja Parallele Jobs
Capgo Build Von Capgo verwaltet, aufrufbar aus jeder CI Pro Build aus Ihren CI-Secrets gesendet Integriert, Tracking und Status-Flags Build-Cache pro App Ja Build-Minuten, siehe Preise

Xcode Cloud steht nicht in der Tabelle, weil es nur Apple-Plattformen baut. Capgo Build baut ausschließlich Capacitor-Apps; alle anderen Plattformen hier bauen auch native Kotlin- und Java-Projekte.

Plattform für Plattform

GitHub Aktionen

Linux-Runner mit Java und dem Android SDK vorinstalliert auf ubuntu-latest, also ./gradlew bundleRelease funktioniert nach actions/setup-java. gradle/actions/setup-gradle Gradle-Caching funktioniert gut. Emulator-Tests laufen auf Linux-Runnern mit KVM über Community-Actions wie reactivecircus/android-emulator-runner.

Signieren heißt: den Keystore aus einem Secret dekodieren und Passwörter über Gradle-Properties übergeben. Der Upload läuft über fastlane supply, das Gradle-Play-Publisher-Plugin oder eine Community-Action. Nichts wird verwaltet, aber auch nichts versteckt, und Linux-Minuten sind die günstigsten, die es gibt. Guide: Automatisierter Capacitor Android Build mit GitHub Actions.

GitLab CI

Dasselbe bei GitLab: Jedes Docker-Image mit dem Android SDK funktioniert auf geteilten Linux-Runnern. Die Mobile-DevOps-Features von GitLab umfassen Secure Files für Keystores und eine Google-Play-Integration, die den Service Account für Jobs bereitstellt, was etwas Boilerplate aus fastlane-Setups spart. Guide: Automatischer Capacitor Android-Build auf GitLab.

Bitrise

Die Android-Unterstützung von Bitrise basiert auf Steps: Android Build, Android Sign, Google Play Deploy sowie Test- und Emulator-Steps. Keystores werden einmalig in den code-Signing-Einstellungen der App hochgeladen. Der Google Play Deploy Step unterstützt Tracks und gestaffelte Rollout-Anteile. Die Abrechnung erfolgt über Credits, daher sind Android-Builds günstiger als iOS, aber dennoch teurer als ein roher Linux-Runner. Gut für Mobile-Teams, die einen UI-gesteuerten Workflow-Editor wünschen.

Codemagic

Codemagic speichert Keystores als benannte Referenzen, codemagic.yaml auf die verwiesen wird, sodass die Datei nie in deinem Repository oder Logs auftaucht. Der google_play Publishing-Block legt den Track, den Rollout-Anteil und fest, ob als Entwurf eingereicht wird. Es baut native Android-, Flutter-, React-Native-, Ionic- und Capacitor-Apps. Die Abrechnung erfolgt pro Build-Minute oder über einen festen Jahresplan.

Appcircle

Appcircle speichert Keystores in seinem Signing-Identities-Modul und veröffentlicht über seinen Publish-Flow bei Google Play, ergänzt durch Tester-Distribution und einen Enterprise-App-Store. Die selbst gehostete Appcircle-Server-Option ist der Hauptgrund, warum regulierte Teams es wählen: code und Keys verlassen nie ihr Netzwerk.

CircleCI

CircleCI veröffentlicht cimg/android Docker-Images mit installiertem SDK, plus ein Android-Orb mit Helfern für Emulator-Tests und Caching. Signing und Upload laufen über Skripte oder fastlane. Die Abrechnung erfolgt über Credits, und Linux-Docker-Executors sind die günstigsten Resource-Klassen. Eine sinnvolle Wahl, wenn CircleCI bereits den Rest deines Stacks betreibt.

Azure DevOps

Azure Pipelines bietet First-Party-Tasks für jeden Schritt: Gradle@3 zum Build, AndroidSigning@3 zum Signieren und Zipalignen, zum Sichern der Keystore-Dateien sowie für die Release-Aufgabe der Google-Play-Erweiterung für Track-Uploads und gestaffelte Rollouts. Die Abrechnung erfolgt pro parallelem Job. Es ist der natürliche Anlaufpunkt für Teams, die zuvor die Android-Builds von App Center genutzt haben.

Capgo Build

Capgo Build ist ein Build-Service für Capacitor-Apps, den Ihre CI aufruft. Der Job führt aus bun run build und bunx cap sync android, dann:

bunx @capgo/cli@latest build request com.example.app \
  --platform android \
  --build-mode release \
  --android-track internal

Capgo führt Gradle auf seinen Build-Maschinen aus, signiert mit Ihrem Keystore und liest die höchste versionCode Version von Google Play, erhöht sie und lädt die AAB auf den von Ihnen gewählten Track hoch. --android-release-status, --android-flavor, und --submit-to-store-review den Rest zu steuern. Für APK-Builds außerhalb von Google Play (Kiosk-Geräte, MDM) --no-playstore-upload --output-upload gibt stattdessen einen Download-Link zurück.

Das Setup ist geführte: bunx @capgo/cli@latest build init --platform android erstellt oder importiert den Keystore und kann den Google-Cloud-Service-Account sowie die Play-Console-Einladung per Google Sign-in bereitstellen – der Schritt, den die meisten Teams von Hand falsch machen.

Fairerweise: Android ist die Plattform, auf der Capgo Build am wenigsten spart, weil Linux-Runner überall günstig sind. Der Wert auf Android liegt in der Konsistenz mit der iOS-Pipeline, automatischen Versionscodes, keinem Wartungsaufwand für Android SDK oder das JDK in der CI und demselben CLI-Shipping Live-Updates für reine Web-Änderungen. Ein einzelner Build ist auf 10 Minuten begrenzt.

Android-Pain-Points und wie die einzelnen Plattformen damit umgehen

Keystore-Verlust

Der Verlust des Keystores bedeutete früher, dass man die App nie wieder updaten konnte. Mit Play App Signing ist der Keystore, den du hältst, nur noch der Upload-Key, und der Play-Console-Support kann einen neuen registrieren. Trotzdem: Leg ein Offline-Backup an. Alle oben genannten Plattformen speichern den Keystore verschlüsselt; das Risiko ist meist die Kopie auf dem Laptop eines Entwicklers. Wenn du einen neuen brauchst, Android Keystore Generator erstellt ihn im Browser.

Kollisionen bei Version code

Play lehnt einen Upload ab, dessen versionCode bereits verwendet wurde. Optionen: aus der CI-Run-Nummer ableiten (GitHub, GitLab, CircleCI), die Build-Number-Variable der Plattform nutzen (Bitrise, Codemagic, Appcircle) oder Capgo Build den aktuellen Wert aus Play lesen und hochzählen lassen.

Langsame Gradle-Builds

Ein kalter Capacitor Android-Build lädt Hunderte Megabytes an Abhängigkeiten herunter. Caching ~/.gradle/caches und ~/.gradle/wrapper beschleunigt wiederholte Builds erheblich. Stellen Sie sicher, dass Gradle gradle.properties (org.gradle.jvmargs=-Xmx4g) auf gehosteten Runnern und iOS sowie Android in parallelen Jobs statt nacheinander zu bauen.

Plugin- und AGP-Updates

Neue Android Gradle Plugin-Versionen brechen ältere Plugins. Pinne AGP in deinem Projekt und aktualisiere auf einem Branch. Konkrete Fixes findest du in Capacitor Plugin-Build-Fehler mit AGP 9 beheben und Android Build-Fehler in Capacitor beheben.

Berechtigungen für Play-Servicekonten

„The caller does not have permission“ ist der häufigste Upload-Fehler. Das Servicekonto muss in der Play Console unter „Benutzer und Berechtigungen“ mit Release-Rechten für die App eingeladen werden, und der Google Play Android Developer API muss in seinem Google-Cloud-Projekt aktiviert sein. Neue Servicekonten können eine Weile brauchen, bis der API sie akzeptiert.

Die richtige Wahl treffen

Deine Situation Ideal geeignet
Nur Android, bereits auf GitHub oder GitLab GitHub Actions oder GitLab CI
Native Android-Team, das einen visuellen Workflow-Editor will Bitrise
Cross-Platform-Team, das Managed Keystores und Play-Publishing in YAML möchte Codemagic
Alles muss selbst gehostet werden Appcircle Server oder self-hosted Runner
Umstieg von App Center, Microsoft-Stack Azure DevOps
Capacitor-App: Sie wollen Android und iOS über eine einzige CLI von jeder CI aus Capgo Build

Für die iOS-Seite derselben Entscheidung lesen Sie CI/CD-Plattformen für iOS-Apps im Vergleich. Speziell für Capacitor-Apps, einschließlich Live Updates, siehe Vergleich von CI/CD-Plattformen für Capacitor-Apps.

Eine kurze Checkliste vor der Migration

  • Stellen Sie sicher, dass Sie die Upload-Keystore-Datei und beide Passwörter haben und dass der Alias übereinstimmt.
  • Prüfe in der Play Console, welches Zertifikat als Upload-Schlüssel registriert ist, und vergleiche dessen SHA-1 mit keytool -list -v -keystore release.jks.
  • Erstelle ein dediziertes Service-Konto für die neue CI, anstatt ein persönliches zu verwenden.
  • Stelle sicher, dass die neue Plattform mit JDK 21 für Capacitor 8-Projekte baut.
  • Mach einen Upload im internen Track, bevor du Production-Releases umstellst.
Live-Updates für Capacitor-Apps

Wenn ein Bug im Web-Layer live ist, liefere den Fix über Capgo aus, statt Tage auf die App-Store-Freigabe zu warten. Nutzer bekommen das Update im Hintergrund, während native Änderungen im normalen Review-Prozess bleiben.

Neues aus unserem Blog

Capgo gibt dir die besten Insights, um eine wirklich professionelle Mobile App zu erstellen.