.env File mobilfejlesztésben: mi ez, célja és működési elve

Szerző: IT Sectr Megjelenés: 2026-05-31 Olvasási idő: 9 perc

A .env fájl egyszerű kulcs-érték formátumban tárolja a környezeti változókat, és elválasztja a konfigurációt az alkalmazás forráskódjától. A The Twelve-Factor App (2011) szerint a konfigurációt szigorúan el kell választani a kódtól, és a .env fájlok ennek a megközelítésnek a szabványává váltak. .env File lehetővé teszi különböző API-kulcsok, szerver URL-ek és build flag-ek értékeinek behelyettesítését a projekt újrafordítása nélkül.

Főbb pontok

  • .env File — szöveges fájl környezeti változókkal KEY=VALUE formátumban, a projekt gyökerében elhelyezve.
  • Twelve-Factor App a konfiguráció környezeti változókban való tárolását ajánlja, nem a kódban.
  • Biztonság — a .env soha ne kerüljön Git-be; a fájl hozzáadásra kerül a .gitignore-hoz.
  • Betöltő könyvtárak — Androidban gradle-dotenv, iOS-ben Config.xcconfig, Flutterben flutter_dotenv használatos.
  • Végrehajtási környezet — a .env értékei a build fázisban kerülnek behelyettesítésre, nem az alkalmazás futása közben.

Mi az a .env File és mire való

.env File egy konfigurációs fájl, amelyben a környezeti változók egyszerű KEY=VALUE szöveges formátumban vannak tárolva. Minden sor egy változót tartalmaz: a kulcs nevét és annak értékét egyenlőségjellel elválasztva.

A .env fájlok megoldják a modern fejlesztés alapvető problémáját: a különböző környezetek (helyi, teszt, éles) teljesen eltérő beállításokat igényelnek. Az API szerver URL-je a helyi gépen http://localhost:8080, az éles szerveren — https://api.production.com. Ha ezek az értékek közvetlenül az alkalmazás kódjába vannak ágyazva, minden más környezethez tartozó build a forráskód módosítását igényli.

A konfigurációnak az alkalmazás fő kódján kívüli tárolásának gyakorlatát a The Twelve-Factor App (2011) manifestum standardizálta, amely a környezeti változókat jelölte meg az alkalmazás konfigurálásának egyetlen helyes módjaként. A JetBrains Developer Ecosystem (2024) felmérése szerint a mobil fejlesztők több mint 67%-a használ .env fájlokat a projektjeiben.

A mobilfejlesztés számára a .env további előnyt nyújt: az értékek a build fázisban kerülnek behelyettesítésre a Gradle (Android) vagy xcconfig (iOS) segítségével, lehetővé téve külön build-ek létrehozását fejlesztéshez, teszteléshez és éles környezethez a forráskód módosítása nélkül.

A .env különösen hasznos csapatmunkában: minden fejlesztő létrehozza a saját helyi .env fájlját a saját környezetének beállításaival (helyi adatbázis elérési útja, debug API-kulcsok), a közös beállítások pedig a .env.example fájlban rögzítésre kerülnek a repository-ban. Ez kiküszöböli azt a helyzetet, amikor egy git pull után a fejlesztő build-je elromlik egy olyan környezeti változó hiánya miatt, amelyről nem tudott. Az új csapattag egyszerűen átmásolja a .env.example fájlt .env-be, és kitölti a saját helyi értékeit.

A .env File szintaxisa és szerkezete

A .env formátuma rendkívül egyszerű: minden sor egy változó KEY=VALUE formában. Az egyenlőségjel körüli szóközök általában figyelmen kívül vannak hagyva, de a legtöbb könyvtárban az érték részének tekintik őket, ezért jobb elkerülni őket.

Alapvető írási szabályok

A megjegyzések # jellel kezdődnek — az utána lévő teljes sor figyelmen kívül van hagyva. Az üres sorok szintén kihagyásra kerülnek. Ha az érték szóközöket tartalmaz, dupla vagy szimpla idézőjelek közé kerül.

env
# Fő környezeti beállítások
APP_NAME=MyMobileApp
APP_ENV=development

# API konfiguráció
API_BASE_URL=http://localhost:3000/api
API_TIMEOUT=30000

# Érzékeny adatok
DB_PASSWORD=secret_password_123
JWT_SECRET=your_jwt_secret_key

Értéktípusok és escape-elés

A .env-ben minden változó string, de a betöltő könyvtárak konvertálhatják őket a szükséges típusra. Speciális karakterek escape-eléséhez backslash és idézőjelek használatosak. Ha az érték a # jelet tartalmazza a szöveg részeként, azt \# formában kell escape-elni.

  • Stringek — idézőjel nélkül vagy idézőjelben: KEY=value vagy KEY="value with spaces"
  • Számok — idézőjel nélkül írandók: PORT=8080
  • Logikai értékek — true/false stringek: DEBUG=true
  • Többsoros — backslash a sor végén: KEY=line1\
    line2
  • Behelyettesítés — néhány parserben: DB_URL=${DB_HOST}:${DB_PORT}

A .env betöltésekor a könyvtárak változó-interpolációt végezhetnek — egyes kulcsok értékeit másokba helyettesíthetik be. Például a DATABASE_URL=postgres://${DB_USER}:${DB_PASS}@localhost/db változó kinyitja a DB_USER és DB_PASS értékeket ugyanabból a fájlból.

A .env File integrálása mobil projektekbe

A .env csatlakoztatásának módja a platformtól függ. Android Gradle plugineket, iOS xcconfig konfigurációs fájlokat, a többplatformos megoldások, mint a Flutter pedig speciális könyvtárakat használnak.

Android és Gradle: BuildConfig beállítása

Androidban a .env a gradle-dotenv plugin segítségével töltődik be. A plugin beolvassa a .env fájlt a projekt gyökeréből, és hozzáadja az értékeket a BuildConfig-hoz, amelyek ezután Kotlin vagy Java kódban generált mezőkön keresztül érhetők el.

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

android {
    buildFeatures {
        buildConfig = true
    }
}

kotlin {
    // Hozzáférés a kódban: BuildConfig.API_BASE_URL
    buildConfigField("String", "API_BASE_URL",
        "\"" + dotenv.get("API_BASE_URL") + "\"")
}

iOS és Xcode: Config csatlakoztatása

iOS-ben a környezeti változókat általában xcconfig fájlokon keresztül konfigurálják. A .env Swift-ben történő betöltéséhez a DotEnv könyvtárat vagy az Info.plist beépített mechanizmusát használják egyedi kulcsokkal.

swift
// .env betöltése Swift projektben
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 és Dart: flutter_dotenv könyvtár

A Flutter számára létezik a flutter_dotenv csomag, amely az alkalmazás inicializálásakor betölti a változókat a .env fájlból. A .env fájl a projekt gyökerébe kerül, és a változók a dotenv osztályon keresztül érhetők el.

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

// main.dart — betöltés indításkor
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));
}

Mindhárom megközelítés közös elvet követ: a .env a build fázisban vagy az alkalmazás indításakor töltődik be, az értékek cache-elődnek és generált konstansokon keresztül használódnak a kódban. Ez megakadályozza az érzékeny adatok repository-ba kerülését.

A React Native esetében a react-native-config csomag használatos, amely a build fázisban automatikusan létrehozza a BuildConfig osztályt Androidhoz és a konstansokat az Info.plist-ben iOS-hez egyetlen .env fájlból a projekt gyökerében. Ez különösen kényelmes az Expo vagy bare workflow-t használó startupok számára: egyetlen .env a gyökér szintjén elegendő, és minden platform ugyanazokat a környezeti változókat kapja a konfigurációk duplikálása nélkül.

A .env File biztonsága és legjobb gyakorlatai

Minden előnye ellenére a .env nem teljes értékű megoldás titkok tárolására éles környezetben. Alapvető védelmi szintet nyújt, de helytelen használat esetén bizalmas adatok szivárgásához vezethet.

Védelem .gitignore segítségével

A legfontosabb szabály — a .env soha ne kerüljön a verziókezelő rendszerbe. A fájl a létrehozás után azonnal hozzáadásra kerül a .gitignore-hoz, és csak a .env.example minta fájl kerül a repository-ba üres vagy fiktív értékekkel.

env
# .env.example — commitolva a repository-ba
APP_NAME=
APP_ENV=development
API_BASE_URL=http://localhost:3000
API_TIMEOUT=30000
# DB_PASSWORD — még a példában se tüntesd fel!
# JWT_SECRET — még a példában se tüntesd fel!
env
# .gitignore
# Dotenv fájlok
.env
.env*.local

Alternatívák éles környezethez

Éles projektekhez professzionális titokkezelő megoldások használata ajánlott. .env éles környezetben csak akkor megengedett, ha a fájl a szerver document-root-ján kívül található és szigorú hozzáférési jogosultságokkal rendelkezik.

  • AWS Secrets Manager — felhőalapú titoktárolás kulcsrotációval és hozzáférési auditálással
  • Google Secret Manager — Google Cloud szolgáltatás API-kulcsok és jelszavak tárolására
  • HashiCorp Vault — eszköz dinamikus titkokkal és szerveroldali titkosítással
  • Firebase Remote Config — felhőkonfiguráció A/B teszteléssel mobil alkalmazásokhoz
  • GitLab CI/CD Variables — beépített titoktároló build pipeline-okhoz

A Snyk State of Open Source Security (2024) szerint a .env fájlok repository-n keresztüli szivárgása a megkérdezett vállalatok körében az API-kulcsok felfedésével kapcsolatos összes incidens több mint 12%-áért volt felelős. Külön titokkezelő használata lehetővé teszi ennek a kockázatnak a nullára csökkentését.

További védelem érhető el pre-commit hook-ok bevezetésével az olyan eszközök használatával, mint a husky és a lint-staged, amelyek ellenőrzik, hogy a fejlesztő véletlenül hozzáadta-e a .env fájlt a commithoz. Az olyan eszközök, mint a git-secrets (AWS) és a talisman, minden commit-ot átvizsgálnak API-kulcs, token és jelszó minták után, és blokkolják a commit-ot észlelés esetén. CI pipeline-okhoz ajánlott a detect-secrets ellenőrzés hozzáadása — egy automatikus szkenner, amely még fejlesztői hiba esetén sem engedi a .env fájlt a repository-ba.

Gyakran Ismételt Kérdések

Kell-e commitolni a .env fájlt Git-be?

Nem, a .env fájlt nem szabad Git-be commitolni. A fájl érzékeny adatokat tartalmaz, és hozzá kell adni a .gitignore-hoz. Helyette a .env.example fájl kerül a repository-ba az összes szükséges változó sablonjával.

Mi a különbség a .env és a .env.example között?

.env — a tényleges fájl éles értékekkel, amely soha nem kerül commitolásra. A .env.example fájl ugyanazokat a kulcsokat tartalmazza, de üres vagy fiktív értékekkel — ez mintaként kerül a repository-ba új fejlesztők számára.

Használható-e a .env éles környezetben?

Igen, de további védelem nélkül nem ajánlott. Ha a .env éles szerveren kerül használatra, a fájlnak a webszerver document-root-ján kívül kell elhelyezkednie 600-as hozzáférési jogosultsággal (csak tulajdonos). Kritikus projektekhez a titokkezelők előnyösebbek.

Hogyan töltsem be a .env fájlt Android projektben?

A gradle-dotenv plugin (co.uzzu.dotenv) segítségével. A plugin beolvassa a .env fájlt a projekt gyökeréből, és exportálja az értékeket a BuildConfig-ba. A változók a kódban BuildConfig.VARIABLE_NAME formában érhetők el a fordítási fázisban.

Támogatja a .env a változó-interpolációt?

Igen, sok parser támogatja az interpolációt ${VAR_NAME} formátumban. Például a URL=${HOST}:${PORT} behelyettesíti a HOST és PORT értékeket ugyanabból a fájlból. Ez a funkció azonban az adott betöltő könyvtártól függ.

Összefoglaló

  • .env File — egyszerű szöveges formátum környezeti változók tárolására, elválasztva a konfigurációt az alkalmazás kódjától.
  • Twelve-Factor App megalapozta a konfiguráció környezeti változókban való tárolását a modern alkalmazásfejlesztés szabványaként.
  • Integráció mobil projektekbe a gradle-dotenv plugin (Android), xcconfig (iOS) vagy flutter_dotenv (Flutter) segítségével történik.
  • Biztonság a .env .gitignore-hoz adásával és a .env.example használatával biztosítható a repository-ban.
  • Éles környezet professzionális megoldásokat igényel — AWS Secrets Manager, Google Secret Manager vagy HashiCorp Vault.
  • Értékek behelyettesítése a build fázisban történik a BuildConfig-on (Android) vagy Info.plist-en (iOS) keresztül, a forráskód módosítása nélkül.
  • Szivárgási kockázat — az API-kulcsokkal kapcsolatos incidensek 12%-a a .env repository-ba commitolásához köthető (Snyk, 2024), ezért az automatikus ellenőrzés CI-ben kötelező.

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is