
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 = ".debug"
applicationIdSuffix = true
isDebuggable }
{
release = true
isMinifyEnabled (
proguardFiles("proguard-android-optimize.txt"),
getDefaultProguardFile"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 = "com.anibalcopitan.okeypay"
namespace
{
defaultConfig = "com.anibalcopitan.okeypay"
applicationId = 24
minSdk = 34
targetSdk = 1
versionCode = "1.0"
versionName }
+= "brand"
flavorDimensions
{
productFlavors ("okeypay") {
create= "brand"
dimension = "com.anibalcopitan.okeypay"
applicationId ("string", "app_name", "OkeyPay Verifica")
resValue}
("fastpay") {
create= "brand"
dimension = "com.anibalcopitan.fastpay"
applicationId ("string", "app_name", "FastPay Verifica")
resValue}
}
}
👉 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.

🔹 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
ofastpayDebug
), Android Studio detecta automáticamente qué carpeta usar (src/okeypay/res
osrc/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