Mobile App WikiMobile App Wiki
WikiApp DiscoverDiscuss

Wiki

    mobileapp.wiki

    Wiki

    • ASO17
    • Monetizasyon14
    • Mağaza Politikaları20
    • Metrikler15
    • Geliştirme25
    • Pazarlama15
    • Hukuk9
    • UI/UX14
    • Test & QA10
    • Altyapı10

    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.

    Environment Management (.env, Secrets)

    İç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 içeriği nasıl buldunuz?

    Paylaş

    ← Önceki

    React Native

    Sonraki →

    Flutter

    İlgili İçerikler

    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.

    Android Kapalı Test

    Android Kapalı Test hizmeti için androidtesti.com platformunu ziyaret edin.

    androidtesti.com