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ť:
- Vytvorenie samostatných cieľov (Targets) pre každé prostredie.
- Použitie konfiguračných súborov (
.xcconfig). - 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 Filealebo pridajte kľúčCFBundleIconFilesa uveďte názov súboru ikony. - V
.xcconfigsú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 Filena${INFO_PLIST_FILE}(kdeINFO_PLIST_FILEje 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.