Sobes.tech
Middle

Ako zmeniť ikonu aplikácie v závislosti od prostredia?

sobes.tech AI

Odpoveď od AI

V závislosti od prostredia (napríklad Dev, Staging, Prod) je možné použiť:

  1. Vytvorenie samostatných cieľov (Targets) pre každé prostredie.
  2. Použitie konfiguračných súborov (.xcconfig).
  3. Pridanie vlastných kľúčov do Info.plist.

Proces:

  • Duplikujte hlavný cieľ aplikácie pre každé prostredie.
  • V nastaveniach každého nového cieľa zmeňte Info.plist File alebo pridajte kľúč CFBundleIconFiles a uveďte názov súboru ikony.
  • V .xcconfig súboroch pre každé prostredie definujte premennú, ktorá odkazuje na príslušný Info.plist.
  • V nastaveniach build hlavného cieľa nastavte Info.plist File na ${INFO_PLIST_FILE} (kde INFO_PLIST_FILE je premenná z .xcconfig).

Príklad .xcconfig pre Dev:

// DEV.xcconfig
INFO_PLIST_FILE = Info_Dev.plist

Prí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ázov assetu pre Dev ikonu
			</array>
		</dict>
	</dict>
	...
</dict>
</plist>

Alternatívne bez duplikácie cieľov je možné použiť skripty počas build procesu, ktoré upravujú Info.plist v závislosti od aktuálnej konfigurácie. Avšak, prístup s oddelenými cieľmi je jasnejší a podporovaný.

Na správu assetov ikon môžete použiť samostatné Asset Catalogs pre každý cieľ alebo konfiguráciu, alebo pomenovať sady ikon jedinečne (AppIconDev, AppIconStaging, AppIconProd) a uviesť príslušný názov v Info.plist.