Konfiguration
Einleitung
Nylo Website v7 verwendet ein sicheres Umgebungskonfigurationssystem. Ihre Umgebungsvariablen werden in einer .env-Datei gespeichert und dann in eine generierte Dart-Datei (env.g.dart) verschlüsselt, die in Ihrer App verwendet wird.
Dieser Ansatz bietet:
- Sicherheit: Umgebungswerte werden XOR-verschlüsselt in der kompilierten App
- Typsicherheit: Werte werden automatisch in geeignete Typen umgewandelt
- Build-Time-Flexibilität: Verschiedene Konfigurationen für Entwicklung, Staging und Produktion
Die .env-Datei
Die .env-Datei im Stammverzeichnis Ihres Projekts enthält Ihre Konfigurationsvariablen:
# Environment configuration
APP_KEY=your-32-character-secret-key
APP_NAME="My App"
APP_ENV="developing"
APP_DEBUG=true
APP_URL="https://myapp.com"
API_BASE_URL="https://api.myapp.com"
ASSET_PATH="assets"
DEFAULT_LOCALE="en"
Verfügbare Variablen
| Variable | Beschreibung |
|---|---|
APP_KEY |
Erforderlich. 32-Zeichen-Geheimschlüssel für die Verschlüsselung |
APP_NAME |
Ihr Anwendungsname |
APP_ENV |
Umgebung: developing oder production |
APP_DEBUG |
Debug-Modus aktivieren (true/false) |
APP_URL |
Die URL Ihrer App |
API_BASE_URL |
Basis-URL für API-Anfragen |
ASSET_PATH |
Pfad zum Assets-Ordner |
DEFAULT_LOCALE |
Standard-Sprachcode |
Umgebungskonfiguration generieren
Nylo Website v7 erfordert die Generierung einer verschlüsselten Umgebungsdatei, bevor Ihre App auf Umgebungswerte zugreifen kann.
Schritt 1: APP_KEY generieren
Generieren Sie zunächst einen sicheren APP_KEY:
metro make:key
Dies fügt einen 32-Zeichen-APP_KEY zu Ihrer .env-Datei hinzu.
Schritt 2: env.g.dart generieren
Generieren Sie die verschlüsselte Umgebungsdatei:
metro make:env
Dies erstellt lib/bootstrap/env.g.dart mit Ihren verschlüsselten Umgebungsvariablen.
Ihre Umgebung wird automatisch registriert, wenn Ihre App startet -- Nylo.init(env: Env.get, ...) in main.dart erledigt dies für Sie. Keine zusätzliche Einrichtung erforderlich.
Nach Änderungen neu generieren
Wenn Sie Ihre .env-Datei ändern, generieren Sie die Konfiguration neu:
metro make:env --force
Das Flag --force überschreibt die vorhandene env.g.dart.
Werte abrufen
Der empfohlene Weg zum Zugriff auf Umgebungswerte ist über Konfigurationsklassen. Ihre Datei lib/config/app.dart verwendet getEnv(), um Umgebungswerte als typisierte statische Felder bereitzustellen:
// lib/config/app.dart
final class AppConfig {
static final String appName = getEnv('APP_NAME', defaultValue: 'Nylo');
static final String appEnv = getEnv('APP_ENV', defaultValue: 'developing');
static final bool appDebug = getEnv('APP_DEBUG', defaultValue: false);
static final String apiBaseUrl = getEnv('API_BASE_URL');
}
Dann greifen Sie in Ihrem App-Code über die Konfigurationsklasse auf die Werte zu:
// Anywhere in your app
String name = AppConfig.appName;
bool isDebug = AppConfig.appDebug;
String apiUrl = AppConfig.apiBaseUrl;
Dieses Muster hält den Umgebungszugriff in Ihren Konfigurationsklassen zentralisiert. Der getEnv()-Helfer sollte innerhalb von Konfigurationsklassen verwendet werden, nicht direkt im App-Code.
Konfigurationsklassen erstellen
Sie können benutzerdefinierte Konfigurationsklassen für Drittanbieter-Dienste oder funktionsspezifische Konfigurationen mit Metro erstellen:
metro make:config RevenueCat
Dies erstellt eine neue Konfigurationsdatei unter lib/config/revenue_cat_config.dart:
final class RevenueCatConfig {
// Add your config values here
}
Beispiel: RevenueCat-Konfiguration
Schritt 1: Fügen Sie die Umgebungsvariablen zu Ihrer .env-Datei hinzu:
REVENUECAT_API_KEY="appl_xxxxxxxxxxxxx"
REVENUECAT_ENTITLEMENT_ID="premium"
Schritt 2: Aktualisieren Sie Ihre Konfigurationsklasse, um diese Werte zu referenzieren:
// lib/config/revenue_cat_config.dart
import 'package:nylo_framework/nylo_framework.dart';
final class RevenueCatConfig {
static final String apiKey = getEnv('REVENUECAT_API_KEY');
static final String entitlementId = getEnv('REVENUECAT_ENTITLEMENT_ID', defaultValue: 'premium');
}
Schritt 3: Generieren Sie Ihre Umgebungskonfiguration neu:
metro make:env --force
Schritt 4: Verwenden Sie die Konfigurationsklasse in Ihrer App:
import '/config/revenue_cat_config.dart';
// Initialize RevenueCat
await Purchases.configure(
PurchasesConfiguration(RevenueCatConfig.apiKey),
);
// Check entitlements
if (entitlement.identifier == RevenueCatConfig.entitlementId) {
// Grant premium access
}
Dieser Ansatz hält Ihre API-Schlüssel und Konfigurationswerte sicher und zentralisiert, was die Verwaltung verschiedener Werte über Umgebungen hinweg erleichtert.
Variablentypen
Werte in Ihrer .env-Datei werden automatisch geparst:
| .env-Wert | Dart-Typ | Beispiel |
|---|---|---|
APP_NAME="My App" |
String |
"My App" |
DEBUG=true |
bool |
true |
DEBUG=false |
bool |
false |
VALUE=null |
null |
null |
EMPTY="" |
String |
"" (leerer String) |
Umgebungsvarianten
Erstellen Sie verschiedene Konfigurationen für Entwicklung, Staging und Produktion.
Schritt 1: Umgebungsdateien erstellen
Erstellen Sie separate .env-Dateien:
.env # Development (default)
.env.staging # Staging
.env.production # Production
Beispiel .env.production:
APP_KEY=production-secret-key-here
APP_NAME="My App"
APP_ENV="production"
APP_DEBUG=false
APP_URL="https://myapp.com"
API_BASE_URL="https://api.myapp.com"
Schritt 2: Umgebungskonfiguration generieren
Generierung aus einer bestimmten Umgebungsdatei:
# For production
metro make:env --file=".env.production" --force
# For staging
metro make:env --file=".env.staging" --force
Schritt 3: App erstellen
Erstellen Sie die App mit der entsprechenden Konfiguration:
# Development
flutter run
# Production build
metro make:env --file=.env.production --force
flutter build ios
flutter build appbundle
Build-Time-Injektion
Für erhöhte Sicherheit können Sie den APP_KEY zur Build-Zeit injizieren, anstatt ihn im Quellcode einzubetten.
Generierung mit --dart-define-Modus
metro make:env --dart-define
Dies generiert env.g.dart ohne den eingebetteten APP_KEY.
Build mit APP_KEY-Injektion
# iOS
flutter build ios --dart-define=APP_KEY=your-secret-key
# Android
flutter build appbundle --dart-define=APP_KEY=your-secret-key
# Run
flutter run --dart-define=APP_KEY=your-secret-key
Dieser Ansatz hält den APP_KEY aus Ihrem Quellcode heraus, was nützlich ist für:
- CI/CD-Pipelines, bei denen Geheimnisse injiziert werden
- Open-Source-Projekte
- Erhöhte Sicherheitsanforderungen
Best Practices
.envniemals in die Versionskontrolle committen - Fügen Sie sie zur.gitignorehinzu.env-exampleverwenden - Committen Sie eine Vorlage ohne sensible Werte- Nach Änderungen neu generieren - Führen Sie immer
metro make:env --forcenach Änderung der.envaus - Verschiedene Schlüssel pro Umgebung - Verwenden Sie eindeutige APP_KEYs für Entwicklung, Staging und Produktion