Platform CI/CD Android terbaik sering kali adalah yang sudah Anda jalankan, karena pembangunan Android hanya memerlukan Linux, Java, Android SDK, dan Gradle. Perbedaan antar platform muncul di sekitar pembangunan: bagaimana mereka menyimpan kunci keamanan Anda, bagaimana mereka mengunggah ke Google Play tracks, bagaimana caching Gradle membuat pembangunan ulang lebih cepat, dan apakah platform yang sama juga mengelola iOS. Perbandingan ini mencakup GitHub Aksi, GitLab CI, Bitrise, Codemagic, Appcircle, CircleCI, Azure DevOps, dan Capgo Bangun.
Alur Rilis Android di 2026
Setiap pipeline Android melakukan hal yang sama secara kasar:
- Instal JDK dan Android SDK (atau gunakan gambar yang telah memiliki mereka).
- Run
./gradlew bundleRelease. - Tandatangani AAB dengan akun Anda Lakukan.
- Tunggalkan ke track Play Console (internal, tertutup, terbuka, atau produksi) melalui Google Play Developer API.
- Sign the AAB dengan tanda tangan Anda
Aturan yang harus dihormati oleh setiap platform:
- Aplikasi baru memerlukan AAB di Google Play, dan Google kemudian menandatangani ulang APK yang dikirim dengan kunci tanda tangan aplikasi yang dimilikinya (Play App Signing).
- Target tingkat API meningkat setiap tahun. Mengangkat ambang batas minimum
targetSdkVersionuntuk pembaruan setiap bulan Agustus. Capacitor 8 sudah mendukung API 36. - 16 KB ukuran halaman. Perangkat yang lebih baru menggunakan halaman memori 16 KB, dan Play memerlukan library native di aplikasi yang diperbarui untuk mendukungnya. Lihat Ukuran halaman 16 KB Android untuk Capacitor plugin.
- JDK 21 adalah dasar untuk Capacitor 7 dan 8 proyek dan versi Android Gradle Plugin yang lebih baru.
Tabel fitur
| Platform | Runner | Penggunaan kunci simpan | Upload ke Play | Penggunaan cache Gradle | iOS juga | Model Harga |
|---|---|---|---|---|---|---|
| GitHub Aksi | Tanah Linux, self-hosted | Rahasia yang Dikripsi | Aksi fastlane, Gradle Play Publisher, atau komunitas | gradle/actions/setup-gradle |
Iya, runner macOS | Per menit, Linux termurah; gratis untuk repositori publik |
| GitLab CI | Tanah Linux, self-managed | Variabel CI/CD, file yang aman | Aksi fastlane, integrasi Google Play | cache: Kunci |
Ya, macOS beta | Komputasi menit per tingkat |
| Bitrise | Stack Linux yang dihosting | Berkas code pengamanan yang diatur | Langkah Deploy Google Play | Langkah cache bawaan | Yes | Kredit per menit pembangunan |
| Codemagic | Linux dan Mac yang dihosting | Referensi keystore yang dinamis | Built-in, mengikuti dan peluncuran fraksi | Built-in | Ya | Per menit atau rencana tahunan |
| Appcircle | Server yang dihosting atau self-hosted | Gudang identitas tanda tangan | Modul publikasi | Built-in | Ya | Tingkat rencana, enterprise self-hosted |
| CircleCI | Linux Tuan Rumah (cimg/android), di-host sendiri |
Konteks dan variabel lingkungan | fastlane atau skrip | save_cache/restore_cache |
Ya | Biaya per menit |
| Azure DevOps | Ditawarkan oleh Microsoft, self-hosted | Azure DevOps | Microsoft-hosted, di-host sendiri | Cache@2 |
Ya | File yang aman |
| Capgo Pembangunan | Capgo-dikelola, dipanggil dari CI mana saja | Dikirim dari rahasia CI per build | Dibangun secara internal, track dan status flag | Penggandaan cache per aplikasi | Iya | Menit pembangunan, lihat harga |
Xcode Cloud tidak ada di tabel karena hanya membangun platform Apple. Capgo Pembangunan hanya membangun aplikasi Capacitor; platform lain di sini membangun proyek Kotlin dan Java native juga.
Platform demi platform
GitHub Aksi
Runner Linux dengan Java dan Android SDK yang sudah terinstal pada ubuntu-latestJadi, ./gradlew bundleRelease berfungsi setelah actions/setup-java. gradle/actions/setup-gradle mengelola caching Gradle dengan baik. Pengujian emulator berjalan pada pengguna Linux dengan KVM melalui aksi komunitas seperti reactivecircus/android-emulator-runner.
Menandatangani berarti mendekripsi keystore dari rahasia dan melewati kata sandi melalui properti Gradle. Mengunggah menggunakan fastlane supply, plugin Penerbit Play Gradle, atau aksi komunitas. Tidak ada yang diatur, tetapi tidak ada yang disembunyikan juga, dan menit Linux adalah yang termurah Anda akan menemukan. Panduan: Automatic Capacitor Android build with GitHub Actions.
GitLab CI
Same story on GitLab: any Docker image with the Android SDK works on shared Linux runners. GitLab’s Mobile DevOps features include secure files for keystores and a Google Play integration that exposes the service account to jobs, which removes some boilerplate from fastlane setups. Guide: Automatic Capacitor Android build on GitLab.
Bitrise
Bitrise’s Android support centers on steps: Android Build, Android Sign, Google Play Deploy, plus test and emulator steps. Keystores are uploaded once in the app’s code signing settings. The Google Play Deploy step supports tracks and staged rollout fractions. You pay in credits, so Android builds are cheaper than iOS but still more than a raw Linux runner. Good for mobile teams that want a UI-driven workflow editor.
Codemagic
Codemagic menyimpan keystore sebagai referensi yang dinamai codemagic.yaml tidak pernah muncul di repositori atau log Anda. google_play publishing block sets the track, rollout fraction, and whether to submit as draft. It builds native Android, Flutter, React Native, Ionic, and Capacitor. Billing is per build minute or a fixed annual plan.
Appcircle
Appcircle stores keystores in its signing identities module and publishes to Google Play through its publish flow, alongside tester distribution and an enterprise app store. The self-hosted Appcircle Server option is the main reason regulated teams pick it: code and keys never leave their network.
Appcircle
CircleCI menerbitkan cimg/android Docker images with the SDK installed, plus an Android orb with helpers for emulator tests and caching. Signing and upload are scripts or fastlane. Billing uses credits, and Linux Docker executors are the cheapest resource classes. A reasonable choice when CircleCI already runs the rest of your stack.
Azure DevOps
Azure Pipelines memiliki tugas pertama pihak untuk setiap langkah: Gradle@3 Membangun, AndroidSigning@3 Tanda tangan dan unggah adalah skrip atau fastlane. Biaya menggunakan kredit, dan Linux Docker executor adalah kelas sumber yang paling murah. Pilihan yang wajar ketika CircleCI sudah menjalankan bagian lain dari stack Anda.
Capgo Pembangunan
Capgo Pembangunan layanan pembangunan untuk Capacitor aplikasi yang dipanggil oleh CI Anda. Tugas berjalan bun run build dan bunx cap sync android, kemudian:
bunx @capgo/cli@latest build request com.example.app \
--platform android \
--build-mode release \
--android-track internal
Capgo menjalankan Gradle pada mesin pembangunannya, menandatangani dengan keystore Anda, membaca versi tertinggi versionCode Dari Google Play dan meningkatkannya, dan mengunggah AAB ke jalur yang Anda pilih. --android-release-status, --android-flavor, and --submit-to-store-review control APK di luar Google Play (perangkat kiosk, MDM). --no-playstore-upload --output-upload mengembalikan sebuah tautan unduh.
Pengaturan diarahkan: bunx @capgo/cli@latest build init --platform android creates or imports the keystore, and can provision the Google Cloud service account and Play Console invite through Google sign-in, which is the step most teams get wrong by hand.
To be fair about it: Android is the platform where Capgo Build saves the least, because Linux runners are cheap everywhere. Its value on Android is consistency with the iOS pipeline, automatic version codes, no Android SDK or JDK upkeep in CI, and the same CLI shipping update hidup secara langsung untuk perubahan web saja. Satu build terbatas pada 10 menit.
Poin-poin Android dan bagaimana setiap platform mengatasi mereka
Kunci Keystore hilang
Menghilangkan kunci Keystore dahulu berarti Anda tidak bisa pernah memperbarui aplikasi lagi. Dengan Play App Signing, kunci Keystore yang Anda miliki hanya kunci unggah, dan dukungan Play Console dapat mendaftarkan kunci unggah baru. Namun, simpanlah backup offline. Setiap platform di atas menyimpan kunci Keystore yang terkripsi; risiko biasanya adalah salinan di laptop pengembang. Jika Anda membutuhkan yang segar, generator kunci Keystore Android membuatnya di browser.
Konflik versi code
Play menolak mengunggah file yang versionCode was already used. Options: derive it from the CI run number (GitHub, GitLab, CircleCI), use the platform’s build number variable (Bitrise, Codemagic, Appcircle), or let Capgo Build read the latest value from Play and increment it.
Kunci Keystore hilang
A cold Capacitor Android build downloads hundreds of megabytes of dependencies. Caching ~/.gradle/caches dan ~/.gradle/wrapper membuat build ulang menjadi lebih cepat. Berikan Gradle cukup memori di gradle.properties (org.gradle.jvmargs=-Xmx4g) pada mesin pengendali yang dihosting, dan bangun iOS dan Android secara bersamaan dalam pekerjaan paralel bukan satu demi satu.
Plugin dan AGP upgrade
Versi plugin Android Gradle yang baru memecahkan plugin yang lebih tua. Pin AGP di proyek Anda dan upgrade di cabang. Solusi spesifik ada di Perbaiki kesalahan pembangunan plugin Capacitor dengan AGP 9 dan Cara Mengatasi Kesalahan Pembangunan Android di Capacitor.
Kewenangan akun layanan Play
“Pemanggil tidak memiliki izin” adalah kesalahan unggah yang paling umum. Akun layanan harus diundang di Play Console di bawah Pengguna dan izin dengan hak rilis untuk aplikasi, dan pengembang Google Play Android API harus diaktifkan di proyek Cloud Google-nya. Akun layanan baru mungkin membutuhkan waktu sebelum API menerima mereka.
Bagaimana memilih
| Keadaan Anda | Sangat sesuai |
|---|---|
| Hanya Android, sudah menggunakan GitHub atau GitLab | GitHub Actions atau GitLab CI |
| Tim Android native yang ingin editor aliran kerja visual | Bitrise |
| Tim yang ingin menggunakan keamanan manajemen dan publikasi Play dalam YAML | Codemagic |
| Wajib meng-host semua secara mandiri | Appcircle Server atau runner yang di-host sendiri |
| Datang dari App Center, stack Microsoft | Azure DevOps |
| Aplikasi Capacitor, ingin Android dan iOS melalui satu CLI dari CI mana saja | Capgo Build |
Untuk sisi iOS dari keputusan yang sama, baca Mengadakan Perbandingan Platform CI/CD untuk Aplikasi iOS. Untuk aplikasi Capacitor secara khusus, termasuk pembaruan live, lihat Mengadakan Perbandingan Platform CI/CD untuk Aplikasi Capacitor.
Daftar Cek Segera Sebelum Migrasi
- Pastikan Anda memiliki file keystore unggah dan kedua kata sandi, serta bahwa alias sesuai.
- Periksa di Play Console mana sertifikat yang terdaftar sebagai kunci unggah, dan bandingkan SHA-1nya dengan
keytool -list -v -keystore release.jks. - Buatlah akun layanan khusus untuk CI baru daripada menggunakan akun pribadi yang sama.
- Pastikan platform baru membangun dengan JDK 21 untuk Capacitor 8 proyek.
- Jalankan satu unggah track internal sebelum mengganti rilis produksi.