Fichier .env dans le développement mobile : ce que c'est, son objectif et principe de fonctionnement

Auteur : IT Sectr Publié le : 2026-05-31 Temps de lecture : 9 min

Le fichier .env stocke les variables d'environnement dans un format simple clé-valeur et sépare la configuration du code source de l'application. Selon The Twelve-Factor App (2011), la configuration doit être strictement séparée du code, et les fichiers .env sont devenus la norme de cette approche. .env File permet d'injecter différentes valeurs de clés API, d'URL de serveur et de flags de compilation sans recompiler le projet.

Points clés

  • .env File — un fichier texte avec des variables d'environnement au format KEY=VALUE, situé à la racine du projet.
  • Twelve-Factor App recommande de stocker la configuration dans des variables d'environnement plutôt que dans le code.
  • Sécurité — .env ne doit jamais se retrouver dans Git ; le fichier est ajouté à .gitignore.
  • Bibliothèques de chargement — sous Android, on utilise gradle-dotenv, sous iOS — Config.xcconfig, sous Flutter — flutter_dotenv.
  • Environnement d'exécution — les valeurs du .env sont substituées à l'étape de compilation, pas pendant l'exécution de l'application.

Qu'est-ce que .env File et pourquoi en avez-vous besoin

.env File est un fichier de configuration qui stocke les variables d'environnement dans un format texte simple KEY=VALUE. Chaque ligne contient une variable : le nom de la clé et sa valeur, séparés par un signe égal.

Les fichiers .env résolvent un problème fondamental du développement moderne : différents environnements (local, test, production) nécessitent des configurations complètement différentes. L'URL du serveur API sur une machine locale est http://localhost:8080, sur un serveur de production c'est https://api.production.com. Si ces valeurs sont codées en dur directement dans le code de l'application, chaque compilation pour un environnement différent nécessite de modifier le code source.

La pratique de stocker la configuration en dehors du code principal de l'application a été standardisée dans le manifeste The Twelve-Factor App (2011), qui a identifié les variables d'environnement comme la seule façon correcte de configurer une application. Selon l'enquête JetBrains Developer Ecosystem (2024), plus de 67% des développeurs mobiles utilisent des fichiers .env dans leurs projets.

Pour le développement mobile, .env offre un avantage supplémentaire : les valeurs sont substituées à l'étape de compilation via Gradle (Android) ou xcconfig (iOS), permettant de créer des compilations séparées pour le développement, le staging et la production sans modifier le code source.

.env est particulièrement utile en travail d'équipe : chaque développeur crée son propre .env local avec des paramètres pour son environnement (chemin vers la BD locale, clés API de débogage), tandis que les paramètres communs sont fixés dans .env.example dans le dépôt. Cela élimine la situation où après un git pull, la compilation d'un développeur échoue à cause d'une variable d'environnement manquante qu'il ignorait. Un nouveau membre de l'équipe copie simplement .env.example en .env et remplit ses valeurs locales.

Syntaxe et structure du fichier .env

Le format .env est extrêmement simple : chaque ligne est une variable sous la forme KEY=VALUE. Les espaces autour du signe égal sont généralement ignorés, mais dans la plupart des bibliothèques, ils sont considérés comme faisant partie de la valeur, donc il est préférable de les éviter.

Règles d'écriture de base

Les commentaires commencent par le caractère # — toute la ligne après est ignorée. Les lignes vides sont également sautées. Si la valeur contient des espaces, elle est mise entre guillemets doubles ou simples.

env
# Paramètres d'environnement de base
APP_NAME=MyMobileApp
APP_ENV=development

# Configuration API
API_BASE_URL=http://localhost:3000/api
API_TIMEOUT=30000

# Données sensibles
DB_PASSWORD=secret_password_123
JWT_SECRET=your_jwt_secret_key

Types de valeurs et échappement

Toutes les variables dans .env sont des chaînes, mais les bibliothèques de chargement peuvent les convertir au type nécessaire. Pour échapper les caractères spéciaux, on utilise des antislashs et des guillemets. Si une valeur contient le caractère # comme partie du texte, il doit être échappé comme \#.

  • Chaînes — sans guillemets ou entre guillemets : KEY=value ou KEY="value with spaces"
  • Nombres — écrits sans guillemets : PORT=8080
  • Valeurs booléennes — chaînes true/false : DEBUG=true
  • Multiligne — antislash en fin de ligne : KEY=line1\
    line2
  • Substitution — dans certains analyseurs : DB_URL=${DB_HOST}:${DB_PORT}

Lors du chargement de .env, les bibliothèques peuvent effectuer une interpolation de variables — substituer les valeurs de certaines clés à l'intérieur d'autres. Par exemple, la variable DATABASE_URL=postgres://${DB_USER}:${DB_PASS}@localhost/db développera DB_USER et DB_PASS à partir du même fichier.

Intégration du fichier .env dans les projets mobiles

La méthode de connexion de .env dépend de la plateforme. Android utilise des plugins Gradle, iOS — des fichiers de configuration xcconfig, et les solutions multiplateformes comme Flutter — des bibliothèques spécialisées.

Android et Gradle : configuration de BuildConfig

Sous Android, .env est chargé via le plugin gradle-dotenv. Le plugin lit .env à la racine du projet et ajoute les valeurs à BuildConfig, après quoi elles sont disponibles dans le code Kotlin ou Java via des champs générés.

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

android {
    buildFeatures {
        buildConfig = true
    }
}

kotlin {
    // Accès dans le code : BuildConfig.API_BASE_URL
    buildConfigField("String", "API_BASE_URL",
        "\"" + dotenv.get("API_BASE_URL") + "\"")
}

iOS et Xcode : connexion de Config

Sous iOS, les variables d'environnement sont généralement configurées via des fichiers xcconfig. Pour charger .env en Swift, on utilise la bibliothèque DotEnv ou le mécanisme intégré Info.plist avec des clés personnalisées.

swift
// Chargement de .env dans un projet 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 et Dart : bibliothèque flutter_dotenv

Pour Flutter, il existe le paquet flutter_dotenv, qui charge les variables depuis .env lors de l'initialisation de l'application. Le fichier .env est placé à la racine du projet et les variables deviennent disponibles via la classe dotenv.

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

// main.dart — chargement au démarrage
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));
}

Les trois approches partagent un principe commun : .env est chargé à l'étape de compilation ou au démarrage de l'application, les valeurs sont mises en cache et utilisées dans le code via des constantes générées. Cela empêche les données sensibles d'atteindre le dépôt.

Pour React Native, on utilise le paquet react-native-config, qui à l'étape de compilation génère automatiquement une classe BuildConfig pour Android et des constantes dans Info.plist pour iOS à partir d'un seul fichier .env à la racine du projet. C'est particulièrement pratique pour les startups qui utilisent Expo ou bare workflow : un seul .env au niveau racine suffit pour que toutes les plateformes reçoivent les mêmes variables d'environnement sans dupliquer les configurations.

Sécurité et meilleures pratiques du fichier .env

Malgré tous les avantages, .env n'est pas une solution complète pour stocker des secrets dans un environnement de production. Il fournit un niveau de protection de base, mais s'il est mal utilisé, il peut entraîner une fuite de données confidentielles.

Protection via .gitignore

La règle la plus importante — .env ne doit jamais se retrouver dans le système de contrôle de version du dépôt. Le fichier est ajouté à .gitignore immédiatement après sa création, et seul le fichier d'exemple .env.example avec des valeurs vides ou fictives est commité dans le dépôt.

env
# .env.example — commitée dans le dépôt
APP_NAME=
APP_ENV=development
API_BASE_URL=http://localhost:3000
API_TIMEOUT=30000
# DB_PASSWORD — ne pas spécifier même dans l'exemple !
# JWT_SECRET — ne pas spécifier même dans l'exemple !
env
# .gitignore
# Fichiers Dotenv
.env
.env*.local

Alternatives pour l'environnement de production

Pour les projets de production, il est recommandé d'utiliser des solutions professionnelles de gestion des secrets. .env en production n'est acceptable que si le fichier est situé en dehors du document-root du serveur et a des droits d'accès stricts.

  • AWS Secrets Manager — stockage cloud de secrets avec rotation de clés et audit d'accès
  • Google Secret Manager — service Google Cloud pour stocker les clés API et mots de passe
  • HashiCorp Vault — outil avec secrets dynamiques et chiffrement côté serveur
  • Firebase Remote Config — configuration cloud avec tests A/B pour applications mobiles
  • GitLab CI/CD Variables — stockage intégré de secrets pour pipelines de compilation

Selon Snyk State of Open Source Security (2024), la fuite de fichiers .env via les dépôts a été la cause de plus de 12% de tous les incidents de divulgation de clés API parmi les entreprises interrogées. L'utilisation d'un gestionnaire de secrets dédié réduit ce risque à zéro.

Une protection supplémentaire est obtenue en implémentant des hooks de pre-commit à l'aide d'outils comme husky et lint-staged, qui vérifient si un développeur a accidentellement ajouté .env à un commit. Des outils comme git-secrets (AWS) et talisman analysent chaque commit à la recherche de motifs de clés API, de jetons et de mots de passe, bloquant le commit en cas de détection. Pour les pipelines CI, il est recommandé d'ajouter detect-secrets — un scanner automatique qui ne laissera pas un fichier .env entrer dans le dépôt même si le développeur commet une erreur.

Questions fréquentes

Faut-il commiter .env dans Git ?

Non, .env ne doit pas être commité dans Git. Le fichier contient des données sensibles et doit être ajouté à .gitignore. À la place, on place dans le dépôt .env.example avec un modèle de toutes les variables nécessaires.

Quelle est la différence entre .env et .env.example ?

.env est le fichier réel avec les valeurs de production qui n'est jamais commité. Le fichier .env.example contient les mêmes clés mais avec des valeurs vides ou factices — il est commité dans le dépôt comme modèle pour les nouveaux développeurs.

Peut-on utiliser .env en production ?

Oui, mais ce n'est pas recommandé sans protection supplémentaire. Si .env est utilisé sur un serveur de production, le fichier doit être situé en dehors du document-root du serveur web avec des droits d'accès 600 (propriétaire uniquement). Pour les projets critiques, les gestionnaires de secrets sont préférables.

Comment charger .env dans un projet Android ?

Via le plugin gradle-dotenv (co.uzzu.dotenv). Le plugin lit .env à la racine du projet et exporte les valeurs dans BuildConfig. Les variables sont disponibles dans le code sous la forme BuildConfig.VARIABLE_NAME à l'étape de compilation.

.env prend-il en charge l'interpolation de variables ?

Oui, de nombreux analyseurs prennent en charge l'interpolation au format ${VAR_NAME}. Par exemple, URL=${HOST}:${PORT} substituera les valeurs de HOST et PORT du même fichier. Cependant, cette capacité dépend de la bibliothèque de chargement spécifique.

Résumé

  • .env File — un format texte simple pour stocker les variables d'environnement, séparant la configuration du code de l'application.
  • Twelve-Factor App a établi le stockage de la configuration dans des variables d'environnement comme standard du développement d'applications modernes.
  • Intégration dans les projets mobiles se fait via le plugin gradle-dotenv (Android), xcconfig (iOS) ou flutter_dotenv (Flutter).
  • Sécurité est assurée en ajoutant .env à .gitignore et en utilisant .env.example dans le dépôt.
  • Production nécessite des solutions professionnelles — AWS Secrets Manager, Google Secret Manager ou HashiCorp Vault.
  • Substitution des valeurs se produit à l'étape de compilation via BuildConfig sous Android ou Info.plist sous iOS, sans modifier le code source.
  • Risque de fuite — 12% des incidents de clés API sont liés au commit de .env dans les dépôts (Snyk, 2024), donc la vérification automatique dans CI est obligatoire.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi