Saltar al contenido principal

Comparativa: mejores plataformas CI/CD para apps Android en 2026

Compara plataformas de CI/CD para Android en 2026: GitHub Actions, GitLab, Bitrise, Codemagic, Appcircle, CircleCI, Azure DevOps y Capgo Build para builds de AAB.

Paquete de app Android pasando por pipelines CI/CD hacia las pistas de Google Play

La mejor plataforma de CI/CD para apps Android suele ser la que ya usas, porque los builds de Android solo necesitan Linux, Java, el SDK de Android y Gradle. Las diferencias entre plataformas aparecen en el build: cómo guardan tu keystore, cómo hacen el upload a los tracks de Google Play, cuánto acelera el caché de Gradle los builds repetidos y si la misma plataforma también gestiona iOS. Esta comparativa cubre GitHub Actions, GitLab CI, Bitrise, Codemagic, Appcircle, CircleCI, Azure DevOps y Capgo Build.

El flujo de release de Android en 2026

Todos los pipelines de Android hacen más o menos lo mismo:

  1. Instalar un JDK y el SDK de Android (o usar una imagen que ya los incluya).
  2. Ejecuta ./gradlew bundleRelease.
  3. Firmar el AAB con tu subir clave.
  4. Subirlo a un track de Play Console (interno, cerrado, abierto o producción) mediante la API de Google Play Developer.
  5. Opcionalmente, desplegarlo a un porcentaje de usuarios.

Reglas que todas las plataformas deben respetar:

  • El AAB es obligatorio para apps nuevas en Google Play, y Google vuelve a firmar los APK entregados con la clave de firma de la app que posee (Play App Signing).
  • El nivel objetivo de API sube cada año. Google aumenta el mínimo targetSdkVersion para actualizaciones cada agosto. Capacitor 8 ya apunta a API 36.
  • tamaños de página de 16 KB. Los dispositivos más nuevos usan páginas de memoria de 16 KB, y Play exige que las librerías nativas en apps actualizadas las soporten. Ver Páginas de 16 KB en Android para plugins de Capacitor.
  • JDK 21 es la base para proyectos de Capacitor 7 y 8 y versiones recientes de Android Gradle Plugin.

Matriz de funciones

Plataforma Runners Almacenamiento de keystore Subida a Play Caché de Gradle iOS también Modelo de precios
Acciones de GitHub Linux alojado, autoalojado Secretos cifrados fastlane, Gradle Play Publisher o acciones de la comunidad gradle/actions/setup-gradle Sí, runners de macOS Por minuto, Linux es el más barato; gratis para repos públicos
GitLab CI Linux alojado, autogestionado Variables CI/CD, archivos seguros fastlane, integración con Google Play cache: claves Sí, macOS beta Minutos de cómputo por plan
Bitrise Stacks de Linux alojados Archivos de firma de code gestionados Paso de despliegue en Google Play Pasos de caché integrados Sí Créditos por minuto de build
Codemagic Linux y Mac alojados Referencias de keystore con nombre Integrado, tracks y fracción de rollout Integrado Sí Planes por minuto o anuales
Appcircle Servidor alojado o self-hosted Almacén de identidades de firma Módulo de publicación Integrado Sí Niveles de plan, enterprise self-hosted
CircleCI Linux alojado (cimg/android), autoalojado Contextos y variables de entorno fastlane o scripts save_cache/restore_cache Sí Créditos por minuto
Azure DevOps Alojado por Microsoft, autoalojado Archivos seguros Tarea de la extensión de Google Play Cache@2 Sí Jobs en paralelo
Build de Capgo Gestionado por Capgo, invocado desde cualquier CI Enviado desde los secrets de tu CI en cada build Integrado, flags de track y status Caché de build por app Sí Minutos de build, ver precios

Xcode Cloud no está en la tabla porque solo compila para plataformas Apple. Capgo Build solo hace build de apps Capacitor; el resto de plataformas de aquí también compilan proyectos nativos en Kotlin y Java.

Plataforma por plataforma

Acciones de GitHub

Runners de Linux con Java y el SDK de Android preinstalado en ubuntu-latest, así que ./gradlew bundleRelease funciona tras actions/setup-java. gradle/actions/setup-gradle gestiona bien el caché de Gradle. Los tests de emulador corren en runners de Linux con KVM mediante community actions como reactivecircus/android-emulator-runner.

Firmar implica decodificar el keystore desde un secreto y pasar las contraseñas mediante propiedades de Gradle. El upload utiliza fastlane supply, el plugin Gradle Play Publisher o una community action. No se gestiona nada, pero tampoco hay nada oculto, y los minutos de Linux son los más baratos que encontrarás. Guía: Build automático de Capacitor Android con GitHub Actions.

GitLab CI

Lo mismo en GitLab: cualquier imagen Docker con el SDK de Android funciona en runners de Linux compartidos. Las funciones de Mobile DevOps de GitLab incluyen secure files para keystores y una integración con Google Play que expone la service account a los jobs, lo que elimina parte del boilerplate en las configuraciones de fastlane. Guía: Build automático de Capacitor para Android en GitLab.

Bitrise

El soporte de Android en Bitrise se centra en steps: Android Build, Android Sign, Google Play Deploy, además de steps de test y emulador. Los keystores se suben una vez en los settings de signing de code de la app. El step de Google Play Deploy soporta tracks y fracciones de staged rollout. Pagas con créditos, así que los builds de Android son más baratos que iOS pero más caros que un runner de Linux puro. Ideal para equipos mobile que buscan un editor de workflow basado en UI.

Codemagic

Codemagic almacena los keystores como referencias con nombre que codemagic.yaml apuntan a ellos, así que el archivo nunca aparece en tu repo ni en logs. El google_play bloque de publicación define el track, el porcentaje de rollout y si se envía como borrador. Compila Android nativo, Flutter, React Native, Ionic y Capacitor. La facturación es por minuto de build o plan anual fijo.

Appcircle

Appcircle almacena los keystores en su módulo de identidades de firma y publica en Google Play a través de su flujo de publicación, junto con la distribución a testers y una app store empresarial. La opción de Appcircle Server autoalojado es la principal razón por la que los equipos regulados lo eligen: code y las claves nunca salen de su red.

CircleCI

CircleCI publica cimg/android imágenes Docker con el SDK instalado, además de un orb de Android con helpers para pruebas de emulador y caché. La firma y la subida son scripts o fastlane. La facturación usa créditos, y los ejecutores Docker de Linux son las clases de recursos más baratas. Una opción razonable cuando CircleCI ya ejecuta el resto de tu stack.

Azure DevOps

Azure Pipelines tiene tareas de primera parte para cada paso: Gradle@3 para compilar, AndroidSigning@3 para firmar y zipalign, proteger los archivos para el keystore y la tarea de release de la extensión de Google Play para subidas a tracks y rollouts escalonados. El precio es por job en paralelo. Es el lugar natural para equipos que usaban los builds de Android de App Center.

Build de Capgo

Build de Capgo es un servicio de build para apps Capacitor al que llama tu CI. El job 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 build, firma con tu keystore, lee la versión más alta versionCode de Google Play, la incrementa y sube el AAB al track que elegiste. --android-release-status, --android-flavor, y --submit-to-store-review controlan el resto. Para builds de APK fuera de Google Play (dispositivos kiosk, MDM), --no-playstore-upload --output-upload devuelve un link de descarga en su lugar.

La configuración es guiada: bunx @capgo/cli@latest build init --platform android crea o importa el keystore, y puede provisionar la cuenta de servicio de Google Cloud y la invitación de Play Console con el inicio de sesión de Google, el paso en el que la mayoría de los equipos se equivoca al hacerlo a mano.

Para ser justos: Android es la plataforma donde Capgo Build ahorra menos, porque los runners de Linux son baratos en todas partes. Su valor en Android es la consistencia con el pipeline de iOS, los códigos de versión automáticos, sin mantenimiento de SDK de Android ni del JDK en CI, y el mismo CLI de envío actualizaciones en vivo para cambios solo de web. Una sola build tiene un límite de 10 minutos.

Problemas en Android y cómo los maneja cada plataforma

Pérdida de keystore

Antes, perder el keystore significaba que nunca más podrías actualizar la app. Con Play App Signing, el keystore que tienes es solo la clave de carga, y el soporte de Play Console puede registrar una nueva clave de carga. Aun así, mantén una copia de seguridad offline. Todas las plataformas de arriba guardan el keystore cifrado; el riesgo suele ser la copia en el portátil de un desarrollador. Si necesitas uno nuevo, el Generador de keystore para Android lo crea en el navegador.

Colisiones de versión code

Play rechaza una subida cuyo versionCode ya se había usado. Opciones: derivarlo del número de ejecución de CI (GitHub, GitLab, CircleCI), usar la variable de número de build de la plataforma (Bitrise, Codemagic, Appcircle) o dejar que Capgo Build lea el valor más reciente de Play y lo incremente.

Builds de Gradle lentos

Una Capacitor Android build desde cero descarga cientos de megabytes de dependencias. El caching ~/.gradle/caches y ~/.gradle/wrapper hace que los builds repetidos sean mucho más rápidos. Dale suficiente memoria a Gradle en gradle.properties (org.gradle.jvmargs=-Xmx4g) en runners alojados, y compila iOS y Android en jobs en paralelo en lugar de uno tras otro.

Actualizaciones de plugins y AGP

Las nuevas versiones de Android Gradle Plugin rompen plugins antiguos. Fija la versión de AGP en tu proyecto y actualiza en una rama. Los fixes específicos están en Corrige errores de build del plugin Capacitor con AGP 9 y Cómo resolver errores de build de Android en Capacitor.

Permisos de la service account de Play

“The caller does not have permission” es el error de upload más común. La service account debe estar invitada en Play Console en Usuarios y permisos con permisos de release para la app, y la API de Google Play Android Developer debe estar habilitada en su proyecto de Google Cloud. Las nuevas service accounts pueden tardar un poco antes de que la API las acepte.

Cómo elegir

Tu situación Ideal para ti
Solo Android, ya en GitHub o GitLab GitHub Actions o GitLab CI
Equipo nativo de Android que busca un editor visual de workflows Bitrise
Equipo multiplataforma que quiere keystores gestionados y publicación en Play mediante YAML Codemagic
Debe autoalojar todo Servidor de Appcircle o runners autoalojados
Proveniente de App Center, stack de Microsoft Azure DevOps
Tu app Capacitor, quieres Android e iOS con un solo CLI desde cualquier CI Build de Capgo

Para la misma decisión en iOS, lee Comparativa de plataformas CI/CD para apps de iOS. Para apps Capacitor en concreto, incluidas las live updates, consulta Comparativa de plataformas CI/CD para apps Capacitor.

Checklist rápido antes de migrar

  • Confirma que tienes el archivo keystore de upload y las dos contraseñas, y que el alias coincide.
  • Revisa en Play Console qué certificado está registrado como upload key y compara su SHA-1 con keytool -list -v -keystore release.jks.
  • Crea una service account dedicada para el nuevo CI en lugar de reutilizar una personal.
  • Asegúrate de que la nueva plataforma compile con JDK 21 para los proyectos Capacitor 8.
  • Sube una vez al track interno antes de cambiar los releases de producción.
Live updates para apps Capacitor

Cuando un bug de la capa web está en producción, publica el fix a través de Capgo en lugar de esperar días a la aprobación de la app store. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen el flujo de revisión habitual.

Lo último de nuestro blog

Capgo te da la información clave que necesitas para crear una app móvil realmente profesional.