sábado, 13 de septiembre de 2025

Clona tu app Android con Flavors

Android Flavors

Android App build variant

Cada variante compilada representa a diferente version de tu applicacion. Por ejemplo tu podrias querer construir una version free de tu app con limite de contenido, y por el otro lado una version de pago que incluya más.

Configurar tipos de compilacion build type

Podemos crear y configurar tipos de compilación dentro de android del nivel de modulo archivo build.gradle.kts.

Cuando tu creas un nuevo modulo, Android Studio automaticamente crea los tipos de compilaciones bebug y release .

Se usa como si fuera este tipo de ambientes tipicos en web:

release  => produccion
debug    => test
stage    => development

Un buen ejemplo de como configurar tu build types:

buildTypes {  
    debug {  
        applicationIdSuffix = ".debug"  
        isDebuggable = true  
    }  
    release {  
        isMinifyEnabled = true  
        proguardFiles(  
            getDefaultProguardFile("proguard-android-optimize.txt"),  
            "proguard-rules.pro"  
        )  
    }  
}

De esta forma podras instalar tu app en debug y release posible instalar la app debug y relese en tu telefono

  • debug: com.anibalcopitan.okeypay.debug
  • release: com.anibalcopitan.okeypay

Configurar sabores flavors

Crear sabores o product flavors es similar a crear tipos de compilacion o build types. Para agregar los sabores agregamos el bloque productFlavor en el build configuration. Soporta las mismas propiedades que defaultConfig, porque defaultConfig en realidad pertenece a ProductFlavor class.

Lo que quiere decir que tu puedes cambiar la configuracion base para todos los sabores como por ejemplo applicationId.

Si quieres profundizar mas te dejo el link: Configure build variants

Clona tu app Android con Flavors OkeyPay y FastPay

Cómo lograr múltiples marcas con una sola aplicación. Tengo dos marcas:

  • OkeyPay (Marca principal)
  • FastPay

Lo traducimos a sabores/flavors en android porque:

  • El applicationId de cada flavor debe ser único.
  • No puedes tener OkeyPay y FastPay con el mismo com.anibalcopitan.okeypay.

Cómo quedaría tu build.gradle.kts

android {
    namespace = "com.anibalcopitan.okeypay"

    defaultConfig {
        applicationId = "com.anibalcopitan.okeypay"
        minSdk = 24
        targetSdk = 34
        versionCode = 1
        versionName = "1.0"
    }

    flavorDimensions += "brand"

    productFlavors {
        create("okeypay") {
            dimension = "brand"
            applicationId = "com.anibalcopitan.okeypay"
            resValue("string", "app_name", "OkeyPay Verifica")
        }
        create("fastpay") {
            dimension = "brand"
            applicationId = "com.anibalcopitan.fastpay"
            resValue("string", "app_name", "FastPay Verifica")
        }
    }
}

👉 Aquí:

  • okeypay conserva tu paquete original: com.anibalcopitan.okeypay.
  • fastpay crea uno nuevo: com.anibalcopitan.fastpay.
  • Cada uno tendrá su nombre de app, logo y colores propios.
Apps generados con android flavors

🔹 1. Estructura de carpetas

En tu proyecto, dentro del módulo app/, tendrás algo así:

app/
 └── src/
      ├── main/        <- recursos comunes (se usan en todos los flavors)
      ├── okeypay/     <- recursos exclusivos para OkeyPay
      │    └── res/
      │         ├── values/strings.xml
      │         ├── values/colors.xml
      │         └── drawable/logo.png
      └── fastpay/     <- recursos exclusivos para FastPay
           └── res/
                ├── values/strings.xml
                ├── values/colors.xml
                └── drawable/logo.png

🔹 2. Ejemplos concretos

📌 src/okeypay/res/values/strings.xml

<resources>
    <string name="app_name">OkeyPay</string>
</resources>

📌 Logos distintos: (imagenes dentro de la app o interfaz ui)

src/okeypay/res/drawable/logo.png
src/fastpay/res/drawable/logo.png

🔹 3. Android Studio con flavors

  • Cuando corres un flavor (okeypayDebug o fastpayDebug), Android Studio detecta automáticamente qué carpeta usar (src/okeypay/res o src/fastpay/res).
  • Si un recurso no existe en el flavor, toma el del src/main/res.

👉 O sea:

  • Si OkeyPay y FastPay usan el mismo layout, lo dejas en main.
  • Si el logo o el color cambia, lo pones en su carpeta específica.

✅ Conclusión

Usar product flavors en Android es la mejor forma de clonar tu aplicación y manejar múltiples marcas sin duplicar código.
Con esta técnica:

  • Mantienes una base de código única.
  • Creas fácilmente apps con diferente nombre, logo y colores.
  • Simplificas el desarrollo cuando necesitas manejar marcas blancas o versiones personalizadas.

En el ejemplo, OkeyPay y FastPay son dos aplicaciones distintas, pero nacen del mismo proyecto. Eso significa menos trabajo de mantenimiento y más flexibilidad para escalar tu negocio o lanzar nuevas marcas rápidamente. 🚀

No hay comentarios:

Publicar un comentario

Soy Aníbal 🐧💻. ¿Tienes una gran Idea/Proyecto?

¿Tienes un proyecto en mente o necesitas resolver un desafío técnico? Estoy aquí para ayudarte a encontrar la mejor solución. 🚀

💬 Hablemos sobre tu proyecto