Configurar flavors de Flutter para Android
Cómo crear flavors de compilación específicos para diferentes tipos de lanzamiento o entornos de desarrollo.
Esta guía muestra cómo crear flavors de Flutter para una aplicación de Android.
Resumen
#Un flavor de Flutter cuando se usa con Android representa un término unificado para varias características específicas de la plataforma. Por ejemplo, un flavor podría determinar qué icono, nombre de aplicación, clave de API, indicador de característica (feature flag) y nivel de registro se asocian con una versión específica de tu aplicación.
Si deseas crear flavors de Flutter para una aplicación de Android, puedes hacerlo en Flutter. En Android, un flavor de Flutter se denomina product flavor.
A continuación se ilustra un ejemplo de las
variantes de compilación
de Android que se crean cuando una aplicación de Android tiene
dos flavors de productos (staging, production) y dos tipos de
compilación (debug, release):
| Flavors de productos | Tipos de compilación | Variantes de compilación resultantes |
|---|---|---|
| staging | debug | stagingDebug stagingRelease |
| production | release | productionDebug productionRelease |
Configurar tus flavors de productos
#Completa los siguientes pasos para agregar dos flavors de productos de Android
llamados staging y production a un nuevo proyecto de Flutter
llamado flavors_example, y luego prueba tu proyecto
para asegurarte de que los flavors funcionen como se espera.
-
Crea un nuevo proyecto Flutter llamado
flavors_examplecon Kotlin como el lenguaje preferido de Android. Por defecto, el proyecto incluye los tipos de compilación de Androiddebugyrelease.consolaflutter create --android-language kotlin flavors_example -
Añade los flavors de productos llamados
stagingyproductional proyectoflavors_example.En el proyecto
flavors_example, navega al directorioandroid/app/y abrebuild.gradle.kts.Añade la propiedad
flavorDimensionsy las propiedadesproductFlavorsdentro del bloqueandroid {}. Asegúrate de que el bloqueandroid {}también contenga los tipos de compilación predeterminadosdebugyrelease:build.gradle.ktskotlinandroid { ... buildTypes { getByName("debug") {...} getByName("release") {...} } ... flavorDimensions += "default" productFlavors { create("staging") { dimension = "default" applicationIdSuffix = ".staging" } create("production") { dimension = "default" applicationIdSuffix = ".production" } } }
-
Para asegurarte de que has configurado todo correctamente, ejecuta tu aplicación en los flavors de productos de Android. No verás ninguna diferencia porque los ajustes de configuración no han cambiado, pero sí quieres asegurarte de que la aplicación pueda ejecutarse.
Inicia un emulador de Android o conecta un dispositivo físico con las opciones de desarrollador habilitadas.
En la consola, navega al directorio
flavors_examplee ingresa el siguiente comando para probar el flavorstaging:consolaflutter run --flavor stagingRepite el paso anterior para el flavor
production.
-
Si todo se ejecuta, estás listo para personalizar tus configuraciones. Para obtener más información, consulta Personalizar las configuraciones.
Iniciar un flavor
#Después de haber creado los flavors de productos para una aplicación de Android, puedes iniciar un flavor de producto específico a través de Flutter.
Puedes iniciar un flavor de producto con el CLI de Flutter utilizando los siguientes pasos:
-
Inicia un emulador de Android o conecta un dispositivo físico con las opciones de desarrollador habilitadas.
-
En la consola, navega al directorio
flavors_examplee ingresa el siguiente comando:
flutter (run | build <subcommand>) --flavor <flavor_name>
-
(run | build <subcommand>): Reemplaza esto con uno de los siguientes:run: Ejecuta la aplicación en modo debug.build: Builds either an APK or an appbundle.<subcommand>: Ya seaapkoappbundle.
-
<flavor_name>: Reemplaza esto con el nombre de tu flavor de producto de Android (por ejemplo:staging,production).
Ejemplo:
flutter build apk --flavor staging
Usar flavors en el código de Flutter
#Después de configurar tus flavors de productos, puedes cambiar el comportamiento de tu aplicación —como apuntar a diferentes endpoints de API o cambiar el tema— según el flavor activo.
El framework Flutter proporciona la constante appFlavor, que recupera el nombre del flavor actual como un
String. Este valor coincide con el nombre del flavor pasado a la opción --flavor durante el
proceso de flutter run o flutter build.
Acceder al flavor actual
#-
Importa la biblioteca services: Para acceder a la constante
appFlavor, agrega la siguiente importación a tu archivo Dart:dartimport 'package:flutter/services.dart'; -
Comprueba el valor del flavor: Utiliza la constante
appFlavoren la lógica de tu aplicación (a menudo enmain()) para manejar configuraciones específicas del flavor:dartvoid main() { // appFlavor will match the flavor name from build.gradle.kts if (appFlavor == 'production') { // Logic for production environment Config.apiUrl = 'https://api.flavors_example.com'; } else if (appFlavor == 'staging') { // Logic for staging environment Config.apiUrl = 'https://staging.api.flavors_example.com'; } runApp(const MyApp()); }
Personalizar las configuraciones
#Después de agregar flavors de productos, puedes personalizarlos para tu aplicación de Android.
Crear un nombre de visualización de la aplicación distinto
#Si tienes múltiples flavors de productos, un nombre de aplicación distinto puede identificar rápidamente qué flavor está utilizando tu aplicación desplegada.
Los siguientes pasos muestran cómo agregar nombres de visualización
de aplicaciones distintos para dos flavors de productos llamados staging y
production en un proyecto llamado flavors_example.
-
Actualiza
build.gradle.ktsen tu IDE:En el proyecto
flavors_example, navega al directorioandroid/app/y abrebuild.gradle.kts.En el bloque
flavorsDimension, agrega una propiedadresValue()llamadaapp_namea los flavors destagingyproduction:build.gradle.ktskotlinandroid { ... flavorDimensions += "default" productFlavors { create("staging") { dimension = "default" resValue( type = "string", name = "app_name", value = "Flavors staging") applicationIdSuffix = ".staging" } create("production") { dimension = "default" resValue( type = "string", name = "app_name", value = "Flavors production") applicationIdSuffix = ".production" } }
-
Actualiza
AndroidManifest.xmlen tu IDE:En el proyecto
flavors_example, navega aandroid/app/src/mainy abreAndroidManifest.xml.Reemplaza el valor de
android:labelcon@string/app_name.AndroidManifest.xmlxml<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <application android:label="@string/app_name" ... /> />
-
Inicia la aplicación para cada flavor de producto (
staging,production) y asegúrate de que el nombre de visualización de la aplicación haya cambiado para cada uno.Para iniciar un flavor de producto, consulta los pasos en Iniciar un flavor.
En el Emulador de Aplicaciones de Android, ve a la lista de aplicaciones. Deberías ver una para
Flavors p...yFlavors s....Para ver más información de
Flavors p...oFlavors s..., mantén presionado el icono de uno de ellos y seleccionaApp info.
Crear iconos distintos
#Si tienes múltiples flavors de productos, un icono distinto para cada configuración puede ayudarte a identificar rápidamente qué flavor está utilizando tu aplicación desplegada.
![]()
Los siguientes pasos muestran cómo agregar un icono distinto para dos
flavors de productos llamados staging y production en un
proyecto llamado flavors_example.
-
Prepara tus iconos:
Diseña tu icono de
staginge icono deproductionen la herramienta de diseño de tu elección.Genera versiones del icono de
stagingy del icono deproductionen los siguientes tamaños y en formatoPNG:- mipmap-mdpi (48x48 píxeles)
- mipmap-hdpi (72x72 píxeles)
- mipmap-xhdpi (96x96 píxeles)
- mipmap-xxhdpi (144x144 píxeles)
- mipmap-xxxhdpi (192x192 píxeles)
-
Crea directorios de recursos específicos para cada flavor:
Navega al directorio
android/app/src.Crea un directorio llamado
staging/res.Navega al directorio
staging/res.Crea los siguientes directorios
mipmapy mueve las versiones del icono destagingdentro de ellos:mipmap-mdpi/48x48_staging.pngmipmap-hdpi/72x72_staging.pngmipmap-xhdpi/96x96_staging.pngmipmap-xxhdpi/144x144_staging.pngmipmap-xxxhdpi/192x192_staging.png
Repite los pasos anteriores para los directorios e iconos del flavor
production.Renombra todos los iconos a
ic_launcher.png.
-
Doble verificación de las configuraciones en
AndroidManifest.xmlen tu IDE:En el proyecto
flavors_example, navega aandroid/app/src/mainy abreAndroidManifest.xml.Asegúrate de que el valor de
android:iconsea@mipmap/ic_launcher.
-
Inicia la aplicación para cada flavor de producto (
staging,production) y asegúrate de que el icono de la aplicación haya cambiado para cada uno. Para iniciar un flavor de producto, consulta los pasos en Iniciar un flavor.
Empaquetar assets
#Si tienes assets que solo se utilizan en un flavor específico
en tu aplicación, puedes configurarlos para que solo se empaqueten en
tu aplicación al iniciar ese flavor. Esto evita que el
tamaño de tu app bundle se infle con assets no utilizados. Para
empaquetar assets para cada flavor, añade el subcampo flavors
al campo assets en el pubspec de tu proyecto. Para obtener
más información, consulta el campo assets en
Opciones de pubspec de Flutter.
Establecer un flavor predeterminado
#Puedes hacer que tu aplicación use un flavor específico cuando
inicias tu aplicación sin especificar un flavor. Para hacer esto,
debes agregar el campo default-flavor al
pubspec de tu proyecto. Para obtener más información, consulta el campo default-flavor
en Opciones de pubspec de Flutter.
Añadir configuraciones de compilación únicas
#Si tienes configuraciones de compilación adicionales que te gustaría configurar para un flavor de producto de Android específico, consulta Configurar variantes de compilación de Android.
Aunque es posible establecer abiFilters en los flavors de productos, no
se recomienda. Prefiere configurar abiFilters en defaultConfig
cuando sea posible.
Al establecer abiFilters en los flavors de productos, pasa la opción
-Pdisable-abi-filtering=true al ejecutar flutter build o
flutter run.
Más información
#Para obtener más información sobre la creación y el uso de flavors, consulta los siguientes recursos:
A menos que se indique lo contrario, la documentación en este sitio refleja Flutter 3.44.0. Página actualizada por última vez el 18-06-2026. Ver código fuente oreportar un problema.