Sobes.tech
Middle

Jak změnit ikonu aplikace v závislosti na prostředí?

sobes.tech AI

Odpověď od AI

V závislosti na prostředí (například Dev, Staging, Prod) lze použít:

  1. Vytvoření samostatných cílů (Targets) pro každé prostředí.
  2. Použití konfiguračních souborů (.xcconfig).
  3. Přidání vlastních klíčů do Info.plist.

Proces:

  • Duplikujte hlavní cíl aplikace pro každé prostředí.
  • V nastavení každého nového cíle změňte Info.plist File nebo přidejte klíč CFBundleIconFiles a uveďte název souboru ikony.
  • V .xcconfig souborech pro každé prostředí definujte proměnnou odkazující na odpovídající Info.plist.
  • V nastavení sestavení hlavního cíle nastavte Info.plist File na ${INFO_PLIST_FILE} (kde INFO_PLIST_FILE je proměnná z .xcconfig).

Příklad .xcconfig pro Dev:

// DEV.xcconfig
INFO_PLIST_FILE = Info_Dev.plist

Příklad 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> // Název assetu pro ikonu Dev
			</array>
		</dict>
	</dict>
	...
</dict>
</plist>

Alternativně bez duplikace cílů je možné použít skripty během sestavení, které upravují Info.plist podle aktuální konfigurace. Nicméně, přístup s oddělenými cíli je přehlednější a podporovaný.

Pro správu assetů ikon lze použít samostatné Asset Catalogs pro každý cíl nebo konfiguraci, nebo pojmenovat sady ikon unikátně (AppIconDev, AppIconStaging, AppIconProd) a uvést odpovídající název v Info.plist.