Platform CI/CD terbaik untuk aplikasi Android sering kali adalah yang sudah Anda gunakan, karena build Android hanya butuh Linux, Java, Android SDK, dan Gradle. Perbedaan antar platform terlihat pada proses build: cara menyimpan keystore, cara upload ke track Google Play, seberapa cepat Gradle caching mempercepat build berulang, dan apakah platform tersebut juga mendukung iOS. Perbandingan ini mencakup GitHub Actions, GitLab CI, Bitrise, Codemagic, Appcircle, CircleCI, Azure DevOps, dan Capgo Build.
Alur rilis Android di 2026
Setiap pipeline Android melakukan hal yang kurang lebih sama:
- Instal JDK dan Android SDK (atau gunakan image yang sudah menyediakannya).
- Jalankan
./gradlew bundleRelease. - Tanda tangani AAB dengan unggah kunci.
- Upload ke track Play Console (internal, closed, open, atau production) melalui Google Play Developer API.
- Opsional, rilis ke persentase pengguna tertentu.
Aturan yang wajib dipatuhi setiap platform:
- AAB wajib untuk aplikasi baru di Google Play, dan Google menandatangani ulang APK yang dikirim dengan app signing key miliknya (Play App Signing).
- Level target API naik setiap tahun. Google menaikkan batas minimum
targetSdkVersionuntuk pembaruan setiap Agustus. Capacitor 8 sudah menargetkan API 36. - Ukuran halaman 16 KB. Perangkat yang lebih baru menggunakan halaman memori 16 KB, dan Play mensyaratkan pustaka native di aplikasi yang diperbarui untuk mendukungnya. Lihat Ukuran halaman 16 KB Android untuk plugin Capacitor.
- JDK 21 adalah baseline untuk proyek Capacitor 7 dan 8 serta versi Android Gradle Plugin terbaru.
Matriks fitur
| Platform | Runners | Penyimpanan Keystore | Upload Play | Cache Gradle | iOS juga | Model harga |
|---|---|---|---|---|---|---|
| Aksi GitHub | Linux hosted, self-hosted | Secrets terenkripsi | fastlane, Gradle Play Publisher, atau community actions | gradle/actions/setup-gradle |
Ya, macOS runners | Per menit, Linux termurah; gratis untuk repo publik |
| GitLab CI | Linux hosted, self-managed | Variabel CI/CD, secure files | fastlane, integrasi Google Play | cache: key |
Ya, macOS beta | Menit komputasi per tier |
| Bitrise | Stack Linux hosted | File signing code terkelola | Langkah Deploy Google Play | Langkah cache bawaan | Ya | Kredit per menit build |
| Codemagic | Linux dan Mac hosted | Referensi keystore bernama | Bawaan, melacak dan fraksi rollout | Bawaan | Ya | Paket per menit atau tahunan |
| Appcircle | Server hosted atau self-hosted | Penyimpanan identitas penandatanganan | Modul publikasi | Bawaan | Ya | Tier paket, enterprise self-hosted |
| CircleCI | Linux yang dihosting (cimg/android), self-hosted |
Contexts dan env vars | fastlane atau script | save_cache/restore_cache |
Ya | Kredit per menit |
| Azure DevOps | Microsoft-hosted, self-hosted | File aman | Tugas ekstensi Google Play | Cache@2 |
Ya | Job paralel |
| Build Capgo | Dikelola Capgo, dipanggil dari CI mana pun | Dikirim dari secrets CI Anda per build | Bawaan, track dan status flags | Cache build per aplikasi | Ya | Menit build, lihat harga |
Xcode Cloud tidak ada di tabel karena hanya membangun platform Apple. Capgo Build hanya membangun aplikasi Capacitor; semua platform lain di sini juga membangun proyek native Kotlin dan Java.
Platform demi platform
Aksi GitHub
Runner Linux dengan Java dan Android SDK terpasang di ubuntu-latest, jadi ./gradlew bundleRelease berfungsi setelah actions/setup-java. gradle/actions/setup-gradle menangani caching Gradle dengan baik. Uji emulator berjalan di runner Linux dengan KVM melalui aksi komunitas seperti reactivecircus/android-emulator-runner.
Signing berarti mendekode keystore dari secret dan meneruskan kata sandi melalui properti Gradle. Upload menggunakan fastlane supply, plugin Gradle Play Publisher, atau aksi komunitas. Tidak ada yang dikelola, tetapi tidak ada yang disembunyikan, dan menit Linux adalah yang termurah yang akan Anda temukan. Panduan: Build Android Capacitor otomatis dengan GitHub Actions.
GitLab CI
Cerita yang sama di GitLab: image Docker apa pun dengan Android SDK bekerja di runner Linux bersama. Fitur Mobile DevOps GitLab mencakup file aman untuk keystore dan integrasi Google Play yang mengekspos service account ke job, yang menghilangkan beberapa boilerplate dari setup fastlane. Panduan: Build Android Capacitor otomatis di GitLab.
Bitrise
Dukungan Android Bitrise berfokus pada steps: Android Build, Android Sign, Google Play Deploy, ditambah steps untuk test dan emulator. Keystore diunggah sekali di pengaturan signing code aplikasi. Step Google Play Deploy mendukung tracks dan fraksi staged rollout. Anda membayar dalam bentuk kredit, jadi build Android lebih murah daripada iOS, tetapi tetap lebih mahal daripada runner Linux mentah. Cocok untuk tim mobile yang ingin editor workflow berbasis UI.
Codemagic
Codemagic menyimpan keystore sebagai referensi bernama yang codemagic.yaml ditunjuk, sehingga file tidak pernah muncul di repository atau logs Anda. Blok google_play publishing mengatur track, fraksi rollout, dan apakah akan dikirim sebagai draft. Membangun native Android, Flutter, React Native, Ionic, dan Capacitor. Penagihan per menit build atau paket tahunan tetap.
Appcircle
Appcircle menyimpan keystore di modul signing identities dan menerbitkan ke Google Play melalui alur publish-nya, berdampingan dengan distribusi tester dan enterprise app store. Opsi Appcircle Server self-hosted adalah alasan utama tim yang diatur memilihnya: code dan kunci tidak pernah meninggalkan jaringan mereka.
CircleCI
CircleCI menerbitkan cimg/android image Docker dengan SDK terinstal, ditambah orb Android dengan helper untuk test emulator dan caching. Signing dan upload berupa script atau fastlane. Penagihan menggunakan kredit, dan eksekutor Docker Linux adalah kelas sumber daya termurah. Pilihan yang masuk akal jika CircleCI sudah menjalankan sisa stack Anda.
Azure DevOps
Azure Pipelines memiliki task pihak pertama untuk setiap langkah: Gradle@3 untuk build, AndroidSigning@3 untuk sign dan zipalign, mengamankan file keystore, serta task rilis ekstensi Google Play untuk upload track dan staged rollout. Harganya dihitung per parallel job. Ini adalah tempat pendaratan alami bagi tim yang sebelumnya menggunakan build Android di App Center.
Build Capgo
Build Capgo adalah layanan build untuk aplikasi Capacitor yang dipanggil oleh CI Anda. Job tersebut menjalankan bun run build dan bunx cap sync android, lalu:
bunx @capgo/cli@latest build request com.example.app \
--platform android \
--build-mode release \
--android-track internal
Capgo menjalankan Gradle di mesin build-nya, menandatangani dengan keystore Anda, membaca versi tertinggi versionCode dari Google Play dan meningkatkannya, lalu mengunggah AAB ke track yang Anda pilih. --android-release-status, --android-flavor, dan --submit-to-store-review mengontrol sisanya. Untuk build APK di luar Google Play (perangkat kiosk, MDM), --no-playstore-upload --output-upload mengembalikan tautan download.
Setup dipandu: bunx @capgo/cli@latest build init --platform android membuat atau mengimpor keystore, dan dapat memprovision akun layanan Google Cloud serta undangan Play Console melalui sign-in Google, yaitu langkah yang paling sering salah dilakukan secara manual oleh tim.
Untuk adil: Android adalah platform di mana Capgo Build menghemat paling sedikit, karena runner Linux murah di mana-mana. Nilainya di Android adalah konsistensi dengan pipeline iOS, kode versi otomatis, tidak perlu pemeliharaan Android SDK atau JDK di CI, dan pengiriman CLI yang sama live updates untuk perubahan web-only. Satu build dibatasi 10 menit.
Masalah Android dan cara tiap platform menanganinya
Kehilangan keystore
Hilangnya keystore dulu berarti aplikasi tidak bisa di-update lagi. Dengan Play App Signing, keystore yang Anda pegang hanyalah upload key, dan dukungan Play Console dapat mendaftarkan upload key baru. Tetap simpan backup offline. Semua platform di atas menyimpan keystore terenkripsi; risikonya biasanya salinan di laptop developer. Jika Anda butuh yang baru, yang Generator keystore Android membuatnya di browser.
Konflik versi code
Play menolak upload yang versionCode sudah pernah digunakan. Opsi: turunkan dari nomor run CI (GitHub, GitLab, CircleCI), gunakan variabel nomor build platform (Bitrise, Codemagic, Appcircle), atau biarkan Capgo Build membaca nilai terbaru dari Play dan menambahkannya.
Build Gradle yang lambat
Build Android Capacitor yang cold mengunduh ratusan megabyte dependensi. Caching ~/.gradle/caches dan ~/.gradle/wrapper membuat build berulang jadi jauh lebih cepat. Berikan memori Gradle yang cukup di gradle.properties (org.gradle.jvmargs=-Xmx4g) pada hosted runners, dan build iOS serta Android dalam job paralel alih-alih satu per satu.
Upgrade plugin dan AGP
Versi baru Android Gradle Plugin merusak plugin lama. Pin AGP di proyek Anda dan upgrade lewat branch. Perbaikan spesifiknya ada di Perbaiki error build plugin Capacitor dengan AGP 9 dan Cara mengatasi error build Android di Capacitor.
Izin service account Play
“The caller does not have permission” adalah error upload paling umum. Service account harus diundang di Play Console pada bagian Users and permissions dengan hak release untuk aplikasi, dan Google Play Android Developer API harus diaktifkan di proyek Google Cloud-nya. Service account baru bisa butuh waktu sebelum API menerimanya.
Cara memilih
| Situasi Anda | Cocok untuk |
|---|---|
| Hanya Android, sudah pakai GitHub atau GitLab | GitHub Actions atau GitLab CI |
| Tim Native Android yang butuh editor workflow visual | Bitrise |
| Tim cross-platform yang butuh managed keystore dan Play publishing via YAML | Codemagic |
| Wajib self-host semuanya | Appcircle Server atau self-hosted runners |
| Pindah dari App Center, stack Microsoft | Azure DevOps |
| aplikasi Capacitor, ingin Android dan iOS melalui satu CLI dari CI mana pun | Build Capgo |
Untuk sisi iOS dari keputusan yang sama, baca Membandingkan platform CI/CD untuk aplikasi iOS. Khusus untuk aplikasi Capacitor, termasuk live updates, lihat Membandingkan platform CI/CD untuk aplikasi Capacitor.
Checklist singkat sebelum Anda bermigrasi
- Pastikan Anda memiliki file keystore upload dan kedua kata sandinya, serta alias yang cocok.
- Periksa di Play Console sertifikat mana yang terdaftar sebagai upload key, lalu bandingkan SHA-1-nya dengan
keytool -list -v -keystore release.jks. - Buat service account khusus untuk CI baru, jangan pakai ulang akun pribadi.
- Pastikan platform baru build dengan JDK 21 untuk proyek Capacitor 8.
- Lakukan satu upload ke internal track sebelum beralih ke rilis produksi.