Saltar al contenido principal
A
ArceApps

Versionado Semántico en Android: Mejores Prácticas para Desarrolladores

calendar_today
Versionado Semántico en Android: Mejores Prácticas para Desarrolladores

Introducción al Versionado Semántico

El versionado semántico (SemVer) es un sistema de versionado que utiliza un formato de tres números: MAJOR.MINOR.PATCH. En el contexto de Android, este sistema cobra especial importancia debido a las particularidades del ecosistema móvil y las políticas de Google Play Store.

¿Por qué es importante en Android?

Android maneja dos tipos de versiones diferentes:

  • versionName: Es la versión que ven los usuarios (ej: “1.2.3”)
  • versionCode: Es un número entero interno que Google Play usa para determinar actualizaciones

Configuración en build.gradle

android {
    compileSdk 34
    
    defaultConfig {
        applicationId "com.arceapps.miapp"
        minSdk 24
        targetSdk 34
        versionCode 10203  // Formato: MMmmpp
        versionName "1.2.3"
    }
}

Estrategias de versionCode

Una estrategia efectiva es usar el formato MMmmpp donde:

  • MM: Versión major (01-99)
  • mm: Versión minor (00-99)
  • pp: Versión patch (00-99)

Automatización con Gradle

Podemos automatizar el versionado usando propiedades de Gradle:

// version.properties
VERSION_MAJOR=1
VERSION_MINOR=2
VERSION_PATCH=3

// build.gradle
def versionPropsFile = file('version.properties')
def versionProps = new Properties()
versionProps.load(new FileInputStream(versionPropsFile))

def vMajor = versionProps['VERSION_MAJOR'].toInteger()
def vMinor = versionProps['VERSION_MINOR'].toInteger()
def vPatch = versionProps['VERSION_PATCH'].toInteger()

android {
    defaultConfig {
        versionCode vMajor * 10000 + vMinor * 100 + vPatch
        versionName "${vMajor}.${vMinor}.${vPatch}"
    }
}

Consideraciones para Google Play

Google Play Store tiene requisitos específicos:

App Bundle vs APK

Con Android App Bundle, Google genera múltiples APKs optimizados. Cada uno debe tener el mismo versionCode, pero Google maneja internamente los códigos específicos.

Canales de distribución

  • Interno: Para testing interno del equipo
  • Alpha: Para testing cerrado
  • Beta: Para testing abierto
  • Producción: Para usuarios finales

Integración con CI/CD

En un flujo de integración continua, podemos automatizar el versionado:

# GitHub Actions example
name: Build and Deploy
on:
  push:
    tags:
      - 'v*'

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Extract version
        run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_ENV
      
      - name: Update version
        run: |
          ./gradlew updateVersion -PnewVersion=$VERSION

Mejores Prácticas

1. Consistencia en el equipo

Establecer reglas claras sobre cuándo incrementar cada número:

  • MAJOR: Cambios incompatibles o rediseños completos
  • MINOR: Nuevas funcionalidades compatibles
  • PATCH: Corrección de bugs

2. Documentación automática

Generar changelogs automáticamente basados en commits y PRs:

## [1.2.3] - 2025-08-25
### Added
- Nueva funcionalidad de notificaciones push
- Soporte para modo oscuro

### Fixed
- Corrección de crash al rotar pantalla
- Mejora en la sincronización de datos

3. Testing por versiones

Implementar tests que verifiquen la compatibilidad entre versiones, especialmente para:

  • Migración de bases de datos
  • Formato de preferencias guardadas
  • APIs internas cambiadas

Herramientas Recomendadas

  • Gradle Version Plugin: Automatiza el incremento de versiones desde línea de comandos
  • Fastlane: Automatización completa del pipeline de despliegue
  • Semantic Release: Versionado automático basado en commits convencionales

Conclusión

El versionado semántico en Android requiere un enfoque híbrido que combine las mejores prácticas de SemVer con las particularidades de la plataforma. La clave está en la automatización y la consistencia en el equipo de desarrollo.

Implementar estas prácticas desde el inicio del proyecto ahorra tiempo y reduce errores en el futuro, especialmente cuando la aplicación crece en complejidad y número de usuarios.

Artículos relacionados

Automatización de Versionado con GitHub Actions: La Revolución del Desarrollador Android
Android 10 de diciembre de 2025

Automatización de Versionado con GitHub Actions: La Revolución del Desarrollador Android

Descubre cómo automatizar completamente el versionado de tu app Android con GitHub Actions: desde commits hasta Google Play Store, sin intervención manual.

Leer artículo arrow_forward
Semantic Versioning en CD/CI: La Ciencia Exacta del Despliegue Continuo
DevOps 5 de diciembre de 2025

Semantic Versioning en CD/CI: La Ciencia Exacta del Despliegue Continuo

Domina el versionado semántico en pipelines de CI/CD. Aprende a calcular versiones automáticamente y garantizar la trazabilidad total en tus despliegues Android.

Leer artículo arrow_forward
GitHub Actions para Google Play Store: La Guía Definitiva de CD en Android
GitHub Actions 30 de octubre de 2025

GitHub Actions para Google Play Store: La Guía Definitiva de CD en Android

Aprende a configurar un pipeline de Continuous Deployment robusto que compile, firme y publique tu App Android automáticamente en Google Play Store.

Leer artículo arrow_forward