Mobile App Wiki

Mobile App Wiki

mobileapp.wiki

Ana Sayfa

Kategoriler

mobileapp.wiki

Mobile App Wiki

Mobil uygulama geliştirme bilgi tabanı

GizlilikAna SayfaSitemapRSS
© 2026 mobileapp.wiki
Ana Sayfa/Geliştirme/Environment Management (.env, Secrets)
Geliştirme3 dk okuma

Environment Management (.env, Secrets)

Mobil uygulamalarda ortam degiskeni ve secret yonetimi. Dev/staging/prod ayrimi, EAS Secrets, CI/CD entegrasyonu ve guvenlik rehberi.

environmentenvsecretseas secretsdotenvexpo configci cdbuildconfiginfo.pliststagingproduction

İçindekiler

Neden Ortam Yonetimi Önemli?Dev / Staging / Production Ayrimi.env Dosya YonetimiSecret GuvenligiGit'e Secret Commit EtmeNe Gizlenmeli?EAS Secrets (Expo)Expo Config Plugins ile Ortam DegiskenleriReact Native'de Ortam DegiskenleriWeb'den Farkireact-native-configKritik FarkiOS Info.plist ve Android BuildConfigCI/CD'de Secret InjectionGitHub ActionsEAS BuildBest Practicesİlgili Konular

Neden Ortam Yonetimi Önemli?

Her ciddi projede en az uc ortam vardir: development, staging ve production. Her ortamin farkli API URL'leri, farkli veritabani baglantilari ve farkli API key'leri olur. Bu degiskenleri kod icine yazmak hem guvenlik riski olusturur hem de ortamlar arasi gecisi zorlastirir.

Dev / Staging / Production Ayrimi

  • Development: Yerel makine, mock servisler, debug açık (API_URL=http://localhost:8000)
  • Staging: Production kopyasi, gerçek API'ler ama test verileri, QA ortami
  • Production: Canli kullanicilar, hata toleransi minimum, debug kapalı

.env Dosya Yonetimi

Proje kokunde ortam basina ayri .env dosyalari oluştur:

  • .env.development (yerel gelistirme)
  • .env.staging (test ortami)
  • .env.production (canli ortam)
  • .env.example (tum degiskenlerin listesi, gerçek degerler yok, git'e commit edilir)

.env.example yeni katilan gelistiriciler icin rehber gorevi gorur. Icinde API_URL=your_api_url_here gibi placeholder'lar bulunur.

Secret Guvenligi

Git'e Secret Commit Etme

.gitignore'da su satirlar mutlaka olmali: .env, .env.local, .env.development, .env.staging, .env.production, *.keystore, *.jks

Git gecmisi kalicidir, silsen bile erisilir. Push edilen secret mutlaka rotate edilmeli. Populer botlar açık repo'lari tarayarak API key'leri dakikalar icinde calar.

Ne Gizlenmeli?

  • Gizli: API secret key'ler, DB sifreleri, signing key'ler, webhook secret'lar
  • Public olabilir: Firebase public key, Analytics ID, public URL'ler

Mobil uygulamada client-side'a konan HER deger reverse engineering ile okunabilir. Gercekten gizli degerleri backend'de tut, client'a verme.

EAS Secrets (Expo)

  • eas secret:create ile secret ekle, eas secret:list ile listele
  • Build sirasinda environment variable olarak inject edilir
  • process.env.SECRET_NAME ile erisirsin
  • Secret'lar EAS sunucularinda sifrelenmis saklanir
  • Takim uyelerinin yetkileri yonetilebilir
  • Profil bazli farkli secret tanimlanabilir

Expo Config Plugins ile Ortam Degiskenleri

app.json yerine app.config.js kullanarak dinamik yapilandirma yap:

  • process.env degerlerini oku
  • Ortama gore farkli bundle ID, uygulama adi veya ikon belirle
  • Extra alani ile runtime'da erisilebilir degerler tanimla
  • Constants.expoConfig.extra uzerinden runtime'da oku
  • Dikkat: Bu degerler binary'ye gomulur, gizli bilgi koyma

React Native'de Ortam Degiskenleri

Web'den Farki

Web'de NEXT_PUBLIC_ prefix'i ile client'a acilan degerler vardir. React Native'de boyle bir mekanizma yok, tum env degiskenleri build zamaninda cozumlenir.

react-native-config

  • .env dosyasini okur, build zamaninda inject eder
  • Ortam basina farkli .env secimi destekler
  • Config.API_URL seklinde kullanilir

Kritik Fark

  • Web'de bazi degerler sunucuda kalir (private), bazilari client'a gider
  • Mobile'da build zamaninda inject edilen her deger APK/IPA icinde okunabilir
  • Hassas key'leri mobile build'e koyma, backend proxy kullan

iOS Info.plist ve Android BuildConfig

PlatformYapilandirmaErisim
iOSInfo.plist + Xcode schemesBundle.main.infoDictionary
Androidbuild.gradle + product flavorsBuildConfig.FIELD_NAME
Expoapp.config.js + extraConstants.expoConfig.extra
RN Barereact-native-config + .envConfig.FIELD_NAME

iOS'ta User-Defined build settings ile plist'e deger aktarilir. Android'de product flavors ile ortam basina farkli applicationId, ikon ve degerler tanimlanir.

CI/CD'de Secret Injection

GitHub Actions

  • Repository Settings > Secrets and variables > Actions
  • YAML'da secrets.API_KEY seklinde referans ver
  • Environment bazli secret tanimlanabilir

EAS Build

  • eas secret:create ile tanimla
  • eas.json icinde build profilleri ile env ayrimi yap

Best Practices

  • CI/CD platformunun native secret yonetimini kullan
  • Secret'lari log'a yazma (maskeleme aktif olsun)
  • Secret rotation periyodik yap (90 gun onerilir)
  • Minimum yetki prensibi uygula

Ortam yonetimi "sonra hallederiz" denilen ama sorun cikinca en cok zaman kaybi yaratan konudur. Bastan dogru kur, sonra rahat et.

İlgili Konular

  • Keystore & App Signing (Android)
  • React Native

Bu makaleyi nasıl buldunuz?

Paylaş

← Önceki

React Native

Sonraki →

Flutter

İlgili Makaleler

React Native

Meta'nın JavaScript tabanlı cross-platform framework'ü React Native rehberi. iOS ve Android native uygulama geliştirme, Expo ve New Architecture.

Flutter

Google'ın Dart tabanlı cross-platform UI toolkit'i Flutter rehberi. Tek codebase ile iOS, Android, Web ve Desktop uygulama geliştirme stratejileri.

Expo

React Native için hızlı geliştirme platformu Expo rehberi. EAS Build, OTA güncelleme, cloud build, managed workflow ve SDK modülleri detayları.

CI/CD (Mobil)

Mobil uygulamalar için CI/CD pipeline rehberi. EAS Build, Fastlane, Bitrise, Codemagic ve GitHub Actions ile sürekli entegrasyon ve dağıtım.

Code Signing (iOS)

iOS uygulama imzalama süreci rehberi. Certificate ve provisioning profile yönetimi, automatic ve manual signing, Fastlane Match ve CI/CD entegrasyonu.