Sobes.tech
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:

  1. Separate Targets für jede Umgebung erstellen.
  2. Konfigurationsdateien (.xcconfig) verwenden.
  3. Benutzerdefinierte Schlüssel in Info.plist hinzufügen.

Prozess:

  • Kopieren Sie das Hauptziel der Anwendung für jede Umgebung.
  • Ändern Sie in den Einstellungen des neuen Ziels Info.plist File oder fügen Sie den Schlüssel CFBundleIconFiles hinzu und geben Sie den Namen der Icon-Datei an.
  • Definieren Sie in den .xcconfig-Dateien für jede Umgebung eine Variable, die auf die entsprechende Info.plist zeigt.
  • Stellen Sie in den Build-Einstellungen des Hauptziels Info.plist File auf ${INFO_PLIST_FILE} ein (wobei INFO_PLIST_FILE eine Variable aus .xcconfig ist).

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.