Middle
Wie ändert man das App-Symbol je nach Umgebung?
sobes.tech KI
Antwort von AI
Abhängig von der Umgebung (z.B. Dev, Staging, Prod) kann man verwenden:
- Separate Targets für jede Umgebung erstellen.
- Konfigurationsdateien (
.xcconfig) verwenden. - Benutzerdefinierte Schlüssel in
Info.plisthinzufügen.
Prozess:
- Kopieren Sie das Hauptziel der Anwendung für jede Umgebung.
- Ändern Sie in den Einstellungen des neuen Ziels
Info.plist Fileoder fügen Sie den SchlüsselCFBundleIconFileshinzu und geben Sie den Namen der Icon-Datei an. - Definieren Sie in den
.xcconfig-Dateien für jede Umgebung eine Variable, die auf die entsprechendeInfo.plistzeigt. - Stellen Sie in den Build-Einstellungen des Hauptziels
Info.plist Fileauf${INFO_PLIST_FILE}ein (wobeiINFO_PLIST_FILEeine Variable aus.xcconfigist).
Beispiel .xcconfig für Dev:
// DEV.xcconfig
INFO_PLIST_FILE = Info_Dev.plist
Beispiel Info_Dev.plist:
<!-- Info_Dev.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
...
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIconDev</string> // Asset-Name für Dev-Icon
</array>
</dict>
</dict>
...
</dict>
</plist>
Alternativ ohne Ziel-Duplikation ist die Verwendung von Skripten während des Builds, die Info.plist je nach aktueller Konfiguration ändern. Das Ziel mit separaten Targets ist jedoch klarer und wartungsfreundlicher.
Zur Verwaltung der Icon-Assets können separate Asset Catalogs für jedes Ziel oder jede Konfiguration verwendet werden, oder die Icon-Sets werden eindeutig benannt (AppIconDev, AppIconStaging, AppIconProd) und der entsprechende Name in Info.plist angegeben.