La mejor plataforma de CI/CD para aplicaciones Android a menudo es la que ya ejecutas, porque los compilados de Android solo necesitan Linux, Java, el Android SDK, y Gradle. Las diferencias entre plataformas se manifiestan alrededor de la construcción: cómo almacenan su keystore, cómo suben a Google Play tracks, cómo hace que el caché de Gradle haga que las compilaciones repetidas sean más rápidas, y si la misma plataforma también maneja iOS. Esta comparación cubre GitHub Acciones, GitLab CI, Bitrise, Codemagic, Appcircle, CircleCI, Azure DevOps, y Capgo Construcción.
El flujo de liberación de Android en 2026
Cada pipeline de Android hace aproximadamente lo mismo:
- Instale un JDK y el Android SDK (o utilice una imagen que los tenga).
- Ejecutar
./gradlew bundleRelease. - Firma el AAB con tu subir clave.
- Subirlo a un track de la Consola de Play (interna, cerrada, abierta o de producción) a través del desarrollador de Google Play API.
- Rollear a una porcentaje de usuarios de forma opcional.
Opcionalmente, puede desplegar a un porcentaje de usuarios.
- Las reglas que cada plataforma debe respetar son: en Google Play, y Google vuelve a firmar los APKs entregados con la clave de firma de la aplicación que posee (Play App Signing).
- Nivel objetivo API aumenta anualmente. El nivel de __CAPGO_KEEP_0__ objetivo aumenta anualmente.
targetSdkVersionpara actualizaciones cada agosto. Capacitor 8 ya apunta a API 36. - 16 KB tamaños de página. Dispositivos más nuevos usan páginas de memoria de 16 KB, y Play requiere bibliotecas nativas en aplicaciones actualizadas para soportarlas. Tamaño de página de Android 16 KB para plugins Capacitor.
- JDK 21 Es la base para Capacitor 7 y 8 y proyectos recientes de Android Gradle Plugin.
Matriz de características
| Plataforma | Ejecutores | Almacenamiento de keystore | Subida a Play | Caché de Gradle | iOS también | Modelo de precios |
|---|---|---|---|---|---|---|
| GitHub Acciones | Linux alojado, Linux autoalojado | Secretos cifrados | fastlane, Gradle Play Publisher o acciones de la comunidad | gradle/actions/setup-gradle |
Sí, ejecutores de macOS | Por minuto, Linux más barato; gratuito para repositorios públicos |
| GitLab CI | Linux alojado, Linux autoadministrado | Variables CI/CD, archivos seguros | Acciones de fastlane, integración de Google Play | cache: Claves |
Sí, macOS beta | Minutos de cálculo por nivel |
| Bitrise | Estacks de Linux hospedados | Archivos de firma de code gestionados | Paso de despliegue de Google Play | Pasos de caché integrados | Sí | Créditos por minuto de construcción |
| Codemagic | Linux y Mac hospedados | Linux y Mac hospedados | Integrado, rastrea y rollout fracción | Integrado | Sí | Por minuto o planes anuales |
| Appcircle | Servidor alojado o autoalojado | Almacén de identidad de firma | Módulo de publicación | Integrado | Sí | Niveles de plan, autoalojado empresarial |
| CircleCI | Servidor Linux (cimg/android), self-hosted |
Contextos y variables de entorno | Contextos y variables de entorno | save_cache/restore_cache |
Yes | Créditos por minuto |
| Créditos por minuto | Microsoft-hosted, autoadministrado | Microsoft-hosted, auto-hospedado | Tarea de extensión de Google Play | Cache@2 |
Yes | Trabajos paralelos |
| Capgo Construcción | Capgo-administrado, llamado desde cualquier CI | Enviado desde tus secretos de CI por construcción | Integrado, rastrear y banderas de estado | Caché de construcción por aplicación | Sí | Minutos de construcción, ve precios |
Xcode Cloud no está en la tabla porque solo construye plataformas de Apple. Capgo Construcción solo construye aplicaciones Capacitor; cada otra plataforma aquí construye proyectos nativos de Kotlin y Java también.
Plataforma por plataforma
GitHub Acciones
Corredores de Linux con Java y el Android SDK preinstalado en ubuntu-latestEntonces, ./gradlew bundleRelease funciona después de actions/setup-java. gradle/actions/setup-gradle maneja bien la caché de Gradle. Los tests de emulador se ejecutan en ejecutores de Linux con KVM a través de acciones de la comunidad como reactivecircus/android-emulator-runner.
Firma significa descodificar el keystore desde un secreto y pasar contraseñas a través de propiedades de Gradle. Subir utiliza fastlane supply, el plugin de Gradle Play Publisher o una acción de la comunidad. No se gestiona nada, pero tampoco se oculta nada, y los minutos de Linux son los más baratos que encontrarás. Guía: Construcción automática de Android con Capacitor y GitHub en Actions.
CI de GitLab
La misma historia en GitLab: cualquier imagen de Docker con Android SDK funciona en ejecutores de Linux compartidos. Las características de DevOps móviles de GitLab incluyen archivos seguros para keystore y una integración de Google Play que expone la cuenta de servicio a las tareas, lo que elimina algunas plantillas de fastlane. Guía: Construcción automática de Android en GitLab con Capacitor.
Bitrise
El soporte de Android de Bitrise se centra en pasos: Construcción de Android, Signar Android, Desplegar en Google Play, más pasos de prueba y emulador. Los keystore se suben una vez en la configuración de firma de la aplicación code. El paso de Desplegar en Google Play admite pistas y fracciones de lanzamiento en etapas. Se paga en créditos, por lo que las construcciones de Android son más baratas que iOS pero aún más que un ejecutor de Linux crudo. Bueno para equipos móviles que quieren un editor de flujo de trabajo dirigido por interfaz de usuario.
Codemagic
Codemagic almacena keystore como referencias nombradas que codemagic.yaml no apunta a, por lo que el archivo nunca aparece en tu repositorio o registros. 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.
CircleCI publica
CircleCI publica 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 tiene tareas de primera parte para cada paso: Gradle@3 para construir, AndroidSigning@3 to sign and zipalign, secure files for the keystore, and the Google Play extension’s release task for track uploads and staged rollouts. Pricing is per parallel job. It is the natural landing spot for teams that used App Center’s Android builds.
Capgo Construcción
Capgo Construcción Es un servicio de compilación para aplicaciones Capacitor que tu CI llama. El trabajo se ejecuta bun run build y bunx cap sync android, luego:
bunx @capgo/cli@latest build request com.example.app \
--platform android \
--build-mode release \
--android-track internal
Capgo ejecuta Gradle en sus máquinas de construcción, firma con su keystore, lee el número más alto versionCode de Google Play y lo incrementa, y sube el AAB al track que elegiste. --android-release-status, --android-flavor, y --submit-to-store-review controla el resto. Para construcciones de APK fuera de Google Play (dispositivos de kiosk, MDM), --no-playstore-upload --output-upload devuelve un enlace de descarga en su lugar.
La configuración está guiada: bunx @capgo/cli@latest build init --platform android crea o importa el keystore, y puede proveer la cuenta de servicio de Google Cloud y la invitación a la consola de Play a través de la autenticación de Google, lo que es el paso que más equipos se equivocan al hacerlo a mano.
To ser justo: Android es la plataforma donde Capgo Build ahorra menos, porque los ejecutores de Linux son baratos en todas partes. Su valor en Android es la consistencia con la pila de iOS, códigos de versión automáticos, sin mantenimiento de SDK o JDK en CI, y el mismo CLI de envío actualizaciones en vivo para cambios solo en web. Un solo build está limitado a 10 minutos.
Puntos débiles de Android y cómo cada plataforma los maneja
Pérdida de keystore
La pérdida del keystore solía significar que nunca podrías actualizar la aplicación de nuevo. Con Play App Signing, el keystore que tienes es solo la clave de carga, y el soporte de la consola de Play puede registrar una nueva clave de carga. Sin embargo, mantén un respaldo offline. Cada plataforma anterior almacena el keystore cifrado; el riesgo suele ser la copia en el portátil del desarrollador. Si necesitas uno nuevo, el generador de keystore de Android crea uno en el navegador.
Colisiones de versión code
La carga de Play rechaza una carga cuya versionCode ya se había utilizado. Opciones: derivarlo de el número de ejecución de CI (GitHub, GitLab, CircleCI), usar la variable de número de build del plataforma (Bitrise, Codemagic, Appcircle), o dejar que Capgo Build lea el último valor de Play y lo incremente.
Gradle construye lentamente
A un Capacitor Android build frío descarga cientos de megabytes de dependencias. Caching ~/.gradle/caches y ~/.gradle/wrapper acelera mucho las compilaciones repetidas. Proporciona a Gradle suficiente memoria en gradle.properties (org.gradle.jvmargs=-Xmx4g) en ejecutores hospedados, y construye iOS y Android en trabajos de paralelo en lugar de uno después del otro.
Plugin y actualizaciones de AGP
Nuevas versiones del plugin de Gradle para Android rompen los plugins antiguos. Pinche la versión de AGP en su proyecto y actualice en una rama. Soluciona errores de construcción de plugin Capacitor con AGP 9 y Cómo resolver errores de construcción de Android en Capacitor.
Permisos de cuenta de servicio de Play
“El llamante no tiene permiso” es el error de carga más común. La cuenta de servicio debe ser invitada en la Consola de Play bajo Usuarios y permisos con derechos de liberación para la aplicación, y el desarrollador de Android de Google Play API debe estar habilitado en su proyecto de Cloud de Google. Las nuevas cuentas de servicio pueden tardar un poco antes de que el API las acepte.
Cómo elegir
| Su situación | Buena opción |
|---|---|
| Solo Android, ya en GitHub o GitLab | GitHub Actions o GitLab CI |
| Equipo de Android nativo que busca un editor de flujo de trabajo visual | Bitrise |
| Equipo de múltiples plataformas que quiere claves administradas y publicación en Play en YAML | Codemagic |
| Deberá hospedar todo por sí mismo | Appcircle Server o ejecutores auto-hospedados |
| Proveniente de App Center, stack de Microsoft | Azure DevOps |
| Capacitor aplicación, desean Android e iOS a través de un CLI desde cualquier CI | Capgo Construcción |
Para el lado iOS de la misma decisión, lee Comparar plataformas CI/CD para aplicaciones iOS. Para aplicaciones Capacitor específicamente, incluyendo actualizaciones en vivo, vea Comparar plataformas CI/CD para aplicaciones Capacitor.
Una lista rápida antes de migrar
- Confirme que tiene el archivo de keystore de carga y ambos contraseñas, y que el alias coincide.
- Verifique en el Console de Play qué certificado está registrado como la clave de carga, y compare su SHA-1 con
keytool -list -v -keystore release.jks. - Cree una cuenta de servicio dedicada para el nuevo CI en lugar de reutilizar una personal.
- Asegúrese de que la nueva plataforma construye con JDK 21 para proyectos Capacitor 8.
- Ejecuta una carga interna antes de cambiar a versiones de producción.