Archivo .env en desarrollo móvil: qué es, para qué sirve y principio de funcionamiento

Autor: IT Sectr Publicado: 2026-05-31 Tiempo de lectura: 9 min

El archivo .env almacena variables de entorno en un formato simple clave-valor y separa la configuración del código fuente de la aplicación. Según The Twelve-Factor App (2011), la configuración debe separarse estrictamente del código, y los archivos .env se han convertido en el estándar de este enfoque. .env File permite inyectar diferentes valores de claves API, URL de servidores y banderas de compilación sin recompilar el proyecto.

Puntos clave

  • .env File — un archivo de texto con variables de entorno en formato KEY=VALUE, ubicado en la raíz del proyecto.
  • Twelve-Factor App recomienda almacenar la configuración en variables de entorno, no en el código.
  • Seguridad — .env nunca debe llegar a Git; el archivo se agrega a .gitignore.
  • Bibliotecas cargadoras — en Android se usa gradle-dotenv, en iOS — Config.xcconfig, en Flutter — flutter_dotenv.
  • Entorno de ejecución — los valores de .env se sustituyen en la etapa de compilación, no durante la ejecución de la aplicación.

Qué es .env File y para qué sirve

.env File es un archivo de configuración que almacena variables de entorno en un formato de texto simple KEY=VALUE. Cada línea contiene una variable: el nombre de la clave y su valor, separados por un signo igual.

Los archivos .env resuelven un problema fundamental del desarrollo moderno: diferentes entornos (local, pruebas, producción) requieren configuraciones completamente distintas. La URL del servidor API en una máquina local es http://localhost:8080, en un servidor de producción es https://api.production.com. Si estos valores están codificados directamente en el código de la aplicación, cada compilación para un entorno diferente requiere cambiar el código fuente.

La práctica de almacenar la configuración fuera del código principal de la aplicación fue estandarizada en el manifiesto The Twelve-Factor App (2011), que identificó las variables de entorno como la única forma correcta de configurar una aplicación. Según la encuesta JetBrains Developer Ecosystem (2024), más del 67% de los desarrolladores móviles usan archivos .env en sus proyectos.

Para el desarrollo móvil, .env brinda una ventaja adicional: los valores se sustituyen en la etapa de compilación a través de Gradle (Android) o xcconfig (iOS), lo que permite crear compilaciones separadas para desarrollo, staging y producción sin cambiar el código fuente.

.env es especialmente útil al trabajar en equipo: cada desarrollador crea su propio .env local con configuraciones para su entorno (ruta a la BD local, claves API de depuración), mientras que las configuraciones comunes se fijan en .env.example en el repositorio. Esto elimina la situación en la que después de un git pull la compilación de un desarrollador se rompe por falta de una variable de entorno que desconocía. Un nuevo miembro del equipo simplemente copia .env.example a .env y completa sus valores locales.

Sintaxis y estructura de .env File

El formato .env es extremadamente simple: cada línea es una variable con la forma KEY=VALUE. Los espacios alrededor del signo igual generalmente se ignoran, pero en la mayoría de las bibliotecas se consideran parte del valor, por lo que es mejor evitarlos.

Reglas básicas de escritura

Los comentarios comienzan con el carácter # — toda la línea después de él se ignora. Las líneas vacías también se omiten. Si el valor contiene espacios, se encierra entre comillas dobles o simples.

env
# Configuraciones básicas del entorno
APP_NAME=MyMobileApp
APP_ENV=development

# Configuración de API
API_BASE_URL=http://localhost:3000/api
API_TIMEOUT=30000

# Datos sensibles
DB_PASSWORD=secret_password_123
JWT_SECRET=your_jwt_secret_key

Tipos de valores y escape

Todas las variables en .env son cadenas, pero las bibliotecas cargadoras pueden convertirlas al tipo necesario. Para escapar caracteres especiales se usan barras invertidas y comillas. Si un valor contiene el carácter # como parte del texto, debe escaparse como \#.

  • Cadenas — sin comillas o entre comillas: KEY=value o KEY="value with spaces"
  • Números — se escriben sin comillas: PORT=8080
  • Valores booleanos — cadenas true/false: DEBUG=true
  • Multilínea — barra invertida al final de la línea: KEY=line1\
    line2
  • Sustitución — en algunos analizadores: DB_URL=${DB_HOST}:${DB_PORT}

Al cargar .env, las bibliotecas pueden realizar interpolación de variables — sustituir los valores de unas claves dentro de otras. Por ejemplo, la variable DATABASE_URL=postgres://${DB_USER}:${DB_PASS}@localhost/db expandirá DB_USER y DB_PASS del mismo archivo.

Integración de .env File en proyectos móviles

La forma de conectar .env depende de la plataforma. Android usa plugins de Gradle, iOS — archivos de configuración xcconfig, y las soluciones multiplataforma como Flutter — bibliotecas especializadas.

Android y Gradle: configuración de BuildConfig

En Android, .env se carga a través del plugin gradle-dotenv. El plugin lee .env de la raíz del proyecto y agrega los valores a BuildConfig, después de lo cual están disponibles en el código Kotlin o Java a través de campos generados.

kotlin
// build.gradle.kts (app level)
plugins {
    id("co.uzzu.dotenv") version "4.0.0"
}

android {
    buildFeatures {
        buildConfig = true
    }
}

kotlin {
    // Acceso en código: BuildConfig.API_BASE_URL
    buildConfigField("String", "API_BASE_URL",
        "\"" + dotenv.get("API_BASE_URL") + "\"")
}

iOS y Xcode: conexión de Config

En iOS, las variables de entorno generalmente se configuran a través de archivos xcconfig. Para cargar .env en Swift se usa la biblioteca DotEnv o el mecanismo integrado Info.plist con claves personalizadas.

swift
// Carga de .env en proyecto Swift
import DotEnv

struct AppConfig {
    static func load() {
        let env = DotEnv(Bundle.main)
        env.load()

        let apiURL = ProcessInfo.processInfo
            .environment["API_BASE_URL"] ??
            "https://default.api.com"
    }
}

Flutter y Dart: biblioteca flutter_dotenv

Para Flutter existe el paquete flutter_dotenv, que carga las variables de .env durante la inicialización de la aplicación. El archivo .env se coloca en la raíz del proyecto y las variables están disponibles a través de la clase dotenv.

dart
// pubspec.yaml
dependencies:
  flutter_dotenv: ^5.1

// main.dart — carga al inicio
import 'package:flutter_dotenv/flutter_dotenv.dart';

void main() async {
  await dotenv.load(fileName: '.env');
  var apiUrl = dotenv.get('API_BASE_URL');
  runApp(MyApp(baseUrl: apiUrl));
}

Los tres enfoques comparten un principio común: .env se carga en la etapa de compilación o al iniciar la aplicación, los valores se almacenan en caché y se usan en el código a través de constantes generadas. Esto evita que los datos sensibles lleguen al repositorio.

Para React Native se usa el paquete react-native-config, que en la etapa de compilación genera automáticamente una clase BuildConfig para Android y constantes en Info.plist para iOS a partir de un solo archivo .env en la raíz del proyecto. Esto es especialmente conveniente para startups que usan Expo o bare workflow: basta con un solo .env en el nivel raíz para que todas las plataformas reciban las mismas variables de entorno sin duplicar configuraciones.

Seguridad y mejores prácticas de .env File

A pesar de todas las ventajas, .env no es una solución completa para almacenar secretos en un entorno de producción. Proporciona un nivel básico de protección, pero si se usa incorrectamente, puede provocar fuga de datos confidenciales.

Protección mediante .gitignore

La regla más importante — .env nunca debe terminar en el sistema de control de versiones del repositorio. El archivo se agrega a .gitignore inmediatamente después de su creación, y solo se confirma en el repositorio el archivo de muestra .env.example con valores vacíos o ficticios.

env
# .env.example — se confirma en el repositorio
APP_NAME=
APP_ENV=development
API_BASE_URL=http://localhost:3000
API_TIMEOUT=30000
# DB_PASSWORD — ¡no especificar ni en el ejemplo!
# JWT_SECRET — ¡no especificar ni en el ejemplo!
env
# .gitignore
# Archivos Dotenv
.env
.env*.local

Alternativas para el entorno de producción

Para proyectos en producción, se recomienda usar soluciones profesionales de gestión de secretos. .env en producción solo es aceptable si el archivo está ubicado fuera del document-root del servidor y tiene permisos de acceso estrictos.

  • AWS Secrets Manager — almacenamiento en la nube de secretos con rotación de claves y auditoría de acceso
  • Google Secret Manager — servicio de Google Cloud para almacenar claves API y contraseñas
  • HashiCorp Vault — herramienta con secretos dinámicos y cifrado del lado del servidor
  • Firebase Remote Config — configuración en la nube con pruebas A/B para aplicaciones móviles
  • GitLab CI/CD Variables — almacenamiento integrado de secretos para pipelines de compilación

Según Snyk State of Open Source Security (2024), la filtración de archivos .env a través de repositorios fue la causa de más del 12% de todos los incidentes de divulgación de claves API entre las empresas encuestadas. El uso de un gestor de secretos dedicado reduce este riesgo a cero.

Se logra protección adicional mediante la implementación de hooks de pre-commit usando herramientas como husky y lint-staged, que verifican si el desarrollador agregó accidentalmente .env a un commit. Herramientas como git-secrets (AWS) y talisman escanean cada commit en busca de patrones de claves API, tokens y contraseñas, bloqueando el commit si se detectan. Para pipelines de CI, se recomienda agregar detect-secrets — un escáner automático que no permitirá que un archivo .env llegue al repositorio incluso si el desarrollador comete un error.

Preguntas frecuentes

¿Es necesario confirmar .env en Git?

No, .env no debe confirmarse en Git. El archivo contiene datos sensibles y debe agregarse a .gitignore. En su lugar, se coloca en el repositorio .env.example con una plantilla de todas las variables necesarias.

¿Cuál es la diferencia entre .env y .env.example?

.env es el archivo real con valores de producción que nunca se confirma. El archivo .env.example contiene las mismas claves pero con valores vacíos o falsos — se confirma en el repositorio como muestra para los nuevos desarrolladores.

¿Se puede usar .env en producción?

Sí, pero no se recomienda sin protección adicional. Si .env se usa en un servidor de producción, el archivo debe ubicarse fuera del document-root del servidor web con permisos de acceso 600 (solo propietario). Para proyectos críticos, son preferibles los gestores de secretos.

¿Cómo cargar .env en un proyecto Android?

A través del plugin gradle-dotenv (co.uzzu.dotenv). El plugin lee .env de la raíz del proyecto y exporta los valores a BuildConfig. Las variables están disponibles en el código como BuildConfig.VARIABLE_NAME en la etapa de compilación.

¿Admite .env la interpolación de variables?

Sí, muchos analizadores admiten interpolación en el formato ${VAR_NAME}. Por ejemplo, URL=${HOST}:${PORT} sustituirá los valores de HOST y PORT del mismo archivo. Sin embargo, esta capacidad depende de la biblioteca cargadora específica.

Resumen

  • .env File — un formato de texto simple para almacenar variables de entorno, separando la configuración del código de la aplicación.
  • Twelve-Factor App fundamentó el almacenamiento de configuración en variables de entorno como estándar del desarrollo de aplicaciones modernas.
  • Integración en proyectos móviles se realiza a través del plugin gradle-dotenv (Android), xcconfig (iOS) o flutter_dotenv (Flutter).
  • Seguridad se garantiza agregando .env a .gitignore y usando .env.example en el repositorio.
  • Producción requiere soluciones profesionales — AWS Secrets Manager, Google Secret Manager o HashiCorp Vault.
  • Sustitución de valores ocurre en la etapa de compilación a través de BuildConfig en Android o Info.plist en iOS, sin cambiar el código fuente.
  • Riesgo de fugas — el 12% de los incidentes con claves API están relacionados con la confirmación de .env en repositorios (Snyk, 2024), por lo que la verificación automática en CI es obligatoria.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también