Mobil inkişafda .env File: bu nədir, məqsədi və iş prinsipi

Müəllif: IT Sectr Dərc olunub: 2026-05-31 Oxuma vaxtı: 9 dəq

.env faylı ətraf dəyişənlərini sadə açar-dəyər formatında saxlayır və konfiqurasiyanı tətbiqin mənbə kodundan ayırır. The Twelve-Factor App (2011) məlumatlarına görə, konfiqurasiya koddan ciddi şəkildə ayrılmalıdır və .env faylları bu yanaşmanın standartına çevrilmişdir. .env File layihəni yenidən kompilyasiya etmədən API açarları, server URL və kompilyasiya bayraqlarının müxtəlif dəyərlərini əvəz etməyə imkan verir.

Əsas məqamlar

  • .env File — layihənin kökündə yerləşən, KEY=VALUE formatında ətraf dəyişənləri olan mətn faylı.
  • Twelve-Factor App konfiqurasiyanı koddan deyil, ətraf dəyişənlərində saxlamağı tövsiyə edir.
  • Təhlükəsizlik — .env heç vaxt Git-ə daxil olmamalıdır; fayl .gitignore-a əlavə olunur.
  • Yükləmə kitabxanaları — Android-də gradle-dotenv, iOS-da Config.xcconfig, Flutter-də flutter_dotenv istifadə olunur.
  • İcra mühiti — .env dəyərləri tətbiqin işləməsi zamanı deyil, kompilyasiya mərhələsində əvəz olunur.

.env File nədir və nə üçün lazımdır

.env File ətraf dəyişənlərinin sadə KEY=VALUE mətn formatında saxlandığı konfiqurasiya faylıdır. Hər sətir bir dəyişəni ehtiva edir: açar adı və onun dəyəri bərabər işarəsi ilə ayrılır.

.env faylları müasir inkişafın fundamental problemini həll edir: müxtəlif mühitlər (lokal, test, istehsal) tamamilə fərqli parametrlər tələb edir. Lokal maşındakı API server URL-i http://localhost:8080, istehsal serverində — https://api.production.com. Əgər bu dəyərlər birbaşa tətbiq koduna yazılıbsa, hər fərqli mühit üçün hər kompilyasiya mənbə kodunun dəyişdirilməsini tələb edir.

Konfiqurasiyanın tətbiqin əsas kodundan kənarda saxlanması təcrübəsi The Twelve-Factor App (2011) manifestində standartlaşdırılmışdır və ətraf dəyişənlərini tətbiqi konfiqurasiya etməyin yeganə düzgün yolu kimi göstərmişdir. JetBrains Developer Ecosystem (2024) sorğusuna görə, mobil tərtibatçıların 67%-dən çoxu layihələrində .env fayllarından istifadə edir.

Mobil inkişaf üçün .env əlavə üstünlük verir: dəyərlər Gradle (Android) və ya xcconfig (iOS) vasitəsilə kompilyasiya mərhələsində əvəz olunur ki, bu da mənbə kodunu dəyişdirmədən inkişaf, stecinq və istehsal üçün ayrıca kompilyasiyalar yaratmağa imkan verir.

.env xüsusilə komanda işində faydalıdır: hər bir tərtibatçı öz mühiti üçün lokal .env yaradır (lokal DB yolu, debug API açarları), ümumi parametrlər isə depoda .env.example-da saxlanılır. Bu, git pull-dan sonra tərtibatçının bilmədiyi ətraf dəyişəni çatışmazlığı səbəbindən kompilyasiyanın sınması vəziyyətini aradan qaldırır. Yeni komanda üzvü sadəcə .env.example-ı .env-ə kopyalayır və öz lokal dəyərlərini doldurur.

.env File-in sintaksisi və strukturu

.env formatı maksimum dərəcədə sadədir: hər sətir KEY=VALUE şəklində bir dəyişəndir. Bərabər işarəsi ətrafındakı boşluqlar adətən nəzərə alınmır, lakin əksər kitabxanalarda dəyərin bir hissəsi hesab olunur, ona görə də onlardan qaçmaq daha yaxşıdır.

Yazılışın əsas qaydaları

Şərhlər # simvolu ilə başlayır — ondan sonra bütün sətir nəzərə alınmır. Boş sətirlər də keçilir. Əgər dəyər boşluqlar ehtiva edirsə, qoşa və ya tək dırnaq işarələrinə alınır.

env
# Əsas mühit parametrləri
APP_NAME=MyMobileApp
APP_ENV=development

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

# Həssas məlumatlar
DB_PASSWORD=secret_password_123
JWT_SECRET=your_jwt_secret_key

Dəyər növləri və ekranlaşdırma

.env-də bütün dəyişənlər sətirlərdir, lakin yükləmə kitabxanaları onları lazımi tipə çevirə bilər. Xüsusi simvolları ekranlaşdırmaq üçün tərs kəsiklər və dırnaq işarələri istifadə olunur. Əgər dəyər mətnin bir hissəsi kimi # simvolu ehtiva edirsə, onu \# kimi ekranlaşdırmaq lazımdır.

  • Sətirlər — dırnaqsız və ya dırnaq içərisində: KEY=value və ya KEY="value with spaces"
  • Ədədlər — dırnaqsız yazılır: PORT=8080
  • Məntiqi dəyərlər — true/false sətirləri: DEBUG=true
  • Çoxsətirli — sətir sonunda tərs kəsik: KEY=line1\
    line2
  • Əvəzetmə — bəzi parserlərdə: DB_URL=${DB_HOST}:${DB_PORT}

.env yüklənərkən kitabxanalar dəyişən interpolasiyasını həyata keçirə bilər — bir açarların dəyərlərini digərlərinin içərisinə əvəz edə bilər. Məsələn, DATABASE_URL=postgres://${DB_USER}:${DB_PASS}@localhost/db dəyişəni eyni fayldan DB_USER və DB_PASS dəyərlərini açacaqdır.

.env File-in mobil layihələrə inteqrasiyası

.env-i qoşmaq üsulu platformadan asılıdır. Android Gradle plaginlərindən, iOS — xcconfig konfiqurasiya fayllarından, Flutter kimi çarpaz-platforma həlləri isə ixtisaslaşmış kitabxanalardan istifadə edir.

Android və Gradle: BuildConfig-in qurulması

Android-də .env gradle-dotenv plaquini vasitəsilə yüklənir. Plagin .env-i layihənin kökündən oxuyur və dəyərləri BuildConfig-ə əlavə edir, bundan sonra onlar Kotlin və ya Java kodunda yaradılmış sahələr vasitəsilə əlçatan olur.

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

android {
    buildFeatures {
        buildConfig = true
    }
}

kotlin {
    // Kodda giriş: BuildConfig.API_BASE_URL
    buildConfigField("String", "API_BASE_URL",
        "\"" + dotenv.get("API_BASE_URL") + "\"")
}

iOS və Xcode: Config-in qoşulması

iOS-da ətraf dəyişənləri adətən xcconfig faylları vasitəsilə konfiqurasiya olunur. .env-i Swift-də yükləmək üçün DotEnv kitabxanası və ya xüsusi açarlarla Info.plist-in daxili mexanizmi istifadə olunur.

swift
// Swift layihəsində .env-in yüklənməsi
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 və Dart: flutter_dotenv kitabxanası

Flutter üçün tətbiqin işə salınması zamanı .env-dən dəyişənləri yükləyən flutter_dotenv paketi mövcuddur. .env faylı layihənin kökünə yerləşdirilir və dəyişənlər dotenv sinfi vasitəsilə əlçatan olur.

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

// main.dart — başlanğıcda yükləmə
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));
}

Hər üç yanaşma ümumi prinsipi birləşdirir: .env kompilyasiya mərhələsində və ya tətbiqin startında yüklənir, dəyərlər keşlənir və yaradılmış sabitlər vasitəsilə kodda istifadə olunur. Bu, həssas məlumatların depoya daxil olmasının qarşısını alır.

React Native üçün react-native-config paketi istifadə olunur ki, o da kompilyasiya mərhələsində bir .env faylından Android üçün BuildConfig sinfi və iOS üçün Info.plist-də sabitlər avtomatik yaradır. Bu, Expo və ya bare workflow istifadə edən startaplar üçün xüsusilə əlverişlidir: kök səviyyəsində bir .env kifayətdir və bütün platformalar eyni ətraf dəyişənlərini alır.

.env File-in təhlükəsizliyi və ən yaxşı təcrübələr

Bütün üstünlüklərə baxmayaraq, .env istehsal mühitində sirlərin saxlanması üçün tam hüquqlu həll deyil. O, əsas qoruma səviyyəsini təmin edir, lakin düzgün istifadə olunmadıqda məxfi məlumatların sızmasına səbəb ola bilər.

.gitignore vasitəsilə qorunma

Ən vacib qayda — .env heç vaxt versiya nəzarət sisteminə daxil olmamalıdır. Fayl yaradıldıqdan dərhal sonra .gitignore-a əlavə olunur, depoya isə yalnız boş və ya uydurma dəyərləri olan nümunə faylı .env.example göndərilir.

env
# .env.example — depoya committ edilir
APP_NAME=
APP_ENV=development
API_BASE_URL=http://localhost:3000
API_TIMEOUT=30000
# DB_PASSWORD — nümunədə belə göstərilmir!
# JWT_SECRET — nümunədə belə göstərilmir!
env
# .gitignore
# Dotenv faylları
.env
.env*.local

İstehsal mühiti üçün alternativlər

İstehsal layihələri üçün sirlərin idarə olunması üçün peşəkar həllərdən istifadə etmək tövsiyə olunur. .env istehsalda yalnız fayl serverin document-root-dan kənarda yerləşərsə və ciddi giriş hüquqlarına malik olarsa icazəlidir.

  • AWS Secrets Manager — açar rotasiyası və giriş auditi ilə bulud sirlər anbarı
  • Google Secret Manager — API açarları və şifrələrin saxlanması üçün Google Cloud xidməti
  • HashiCorp Vault — dinamik sirlər və server tərəfində şifrləmə ilə alət
  • Firebase Remote Config — mobil tətbiqlər üçün A/B testi ilə bulud konfiqurasiyası
  • GitLab CI/CD Variables — kompilyasiya boru kəmərləri üçün daxili sirlər anbarı

Snyk State of Open Source Security (2024) məlumatlarına görə, .env fayllarının depo vasitəsilə sızması sorğuda iştirak edən şirkətlər arasında API açarlarının açıqlanması ilə bağlı bütün hadisələrin 12%-dən çoxunun səbəbi olmuşdur. Ayrıca sirlər menecerinin istifadəsi bu riski sıfıra endirməyə imkan verir.

Əlavə qorunma pre-commit hook larının tətbiqi ilə əldə olunur — huskylint-staged kimi alətlər tərtibatçının təsadüfən .env-i committə əlavə edib-etmədiyini yoxlayır. git-secrets (AWS) və talisman kimi alətlər hər committi API açarı, token və şifrə nümunələrinə görə skan edir, aşkarlandıqda committi bloklayır. CI boru kəmərləri üçün detect-secrets yoxlamasını əlavə etmək tövsiyə olunur — tərtibatçının səhvi halında belə .env faylının depoya düşməsinə imkan verməyən avtomatik skaner.

Tez-tez verilən suallar

.env-i Git-ə committ etmək lazımdırmı?

Xeyr, .env Git-ə committ edilməməlidir. Fayl həssas məlumatlar ehtiva edir və .gitignore-a əlavə olunmalıdır. Onun əvəzinə depoya bütün lazımi dəyişənlərin şablonu olan .env.example yerləşdirilir.

.env və .env.example arasında fərq nədir?

.env — heç vaxt committ edilməyən real dəyərləri olan fayldır. .env.example faylı eyni açarları ehtiva edir, lakin boş və ya uydurma dəyərlərlə — yeni tərtibatçılar üçün nümunə kimi depoya committ edilir.

.env istehsalda istifadə oluna bilərmi?

Bəli, lakin əlavə qoruma olmadan tövsiyə edilmir. Əgər .env istehsal serverində istifadə olunursa, fayl serverin document-root-dan kənarda yerləşməli və 600 giriş hüququna (yalnız sahib) malik olmalıdır. Kritik layihələr üçün sirlər menecerləri daha üstündür.

Android layihəsində .env-i necə yükləmək olar?

gradle-dotenv (co.uzzu.dotenv) plaquini vasitəsilə. Plagin .env-i layihənin kökündən oxuyur və dəyərləri BuildConfig-ə ixrac edir. Dəyişənlər kompilyasiya mərhələsində kodda BuildConfig.VARIABLE_NAME kimi əlçatan olur.

.env dəyişən interpolasiyasını dəstəkləyirmi?

Bəli, bir çox parser ${VAR_NAME} formatında interpolasiyanı dəstəkləyir. Məsələn, URL=${HOST}:${PORT} eyni fayldan HOST və PORT dəyərlərini əvəz edəcək. Lakin bu funksionallıq konkret yükləmə kitabxanasından asılıdır.

Xülasə

  • .env File — ətraf dəyişənlərini saxlamaq üçün sadə mətn formatı, konfiqurasiyanı tətbiq kodundan ayırır.
  • Twelve-Factor App konfiqurasiyanın ətraf dəyişənlərində saxlanmasını müasir tətbiqlərin inkişaf standartı kimi əsaslandırmışdır.
  • İnteqrasiya mobil layihələrdə gradle-dotenv (Android), xcconfig (iOS) və ya flutter_dotenv (Flutter) vasitəsilə həyata keçirilir.
  • Təhlükəsizlik .env-in .gitignore-a əlavə edilməsi və depoda .env.example istifadəsi ilə təmin olunur.
  • İstehsal peşəkar həllər tələb edir — AWS Secrets Manager, Google Secret Manager və ya HashiCorp Vault.
  • Dəyər əvəzetməsi Android-də BuildConfig və ya iOS-da Info.plist vasitəsilə kompilyasiya mərhələsində, mənbə kodunu dəyişmədən baş verir.
  • Risk — API açarları ilə bağlı hadisələrin 12%-i .env-in depoya committ edilməsi ilə əlaqədardır (Snyk, 2024), buna görə CI-da avtomatik yoxlama məcburidir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun